Contributing to Google Task Desktop
January 19, 2026 ยท View on GitHub
First off, thank you for considering contributing to Google Task Desktop! ๐
Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- Project Structure
- Making Changes
- Pull Request Process
- Coding Guidelines
- Commit Messages
Code of Conduct
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the maintainers.
Getting Started
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment (see below)
- Create a branch for your changes
- Make your changes and test them
- Submit a pull request
Development Setup
Prerequisites
Installation
# Clone your fork
git clone https://github.com/YOUR_USERNAME/google-task-desktop.git
cd google-task-desktop
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your Google OAuth credentials
# Start development server
npm run launch:dev
Google OAuth Setup
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the Google Tasks API
- Create OAuth 2.0 credentials (Desktop application)
- Copy credentials to your
.envfile
Project Structure
google-task-desktop/
โโโ src/ # React frontend
โ โโโ api/ # API client and endpoints
โ โโโ components/ # React components
โ โโโ hooks/ # Custom React hooks
โ โโโ repositories/ # Data access layer
โ โโโ services/ # Business logic layer
โ โโโ store/ # Recoil atoms
โ โโโ types/ # TypeScript types
โโโ src-tauri/ # Rust backend
โ โโโ src/
โ โโโ libs/ # Rust modules
โโโ docs/ # Documentation
See ARCHITECTURE.md for detailed architecture documentation.
Making Changes
Branch Naming
feature/description- New featuresfix/description- Bug fixesdocs/description- Documentation changesrefactor/description- Code refactoring
Testing Your Changes
- Run the development server:
npm run launch:dev - Test the feature manually
- Ensure there are no TypeScript errors
- Check the console for runtime errors
Pull Request Process
- Update documentation if you're changing functionality
- Update CHANGELOG.md with your changes
- Ensure the app builds without errors
- Write a clear PR description explaining:
- What changes you made
- Why you made them
- How to test them
- Request review from maintainers
PR Title Format
type(scope): description
Examples:
feat(tasks): add drag-and-drop reordering
fix(auth): resolve token refresh issue
docs(readme): update installation steps
Coding Guidelines
TypeScript
- Use strict TypeScript types (avoid
any) - Define interfaces for all data structures
- Use meaningful variable and function names
React
- Use functional components with hooks
- Keep components small and focused
- Use Recoil for shared state only (UI state)
Rust
- Follow Rust idioms and best practices
- Use descriptive error messages
- Document public functions
File Organization
- One component per file
- Group related files in directories
- Export from index files when appropriate
Commit Messages
Follow the Conventional Commits specification:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Code style (formatting, etc.)refactor: Code refactoringtest: Adding testschore: Maintenance tasks
Examples
feat(notifications): add due date notifications
Implements OS notifications that trigger at 9 AM on task due dates.
Uses Tauri notification API for cross-platform support.
fix(auth): handle token expiration gracefully
- Added refresh token logic
- Improved error messaging
- Added automatic retry on 401
Questions?
Feel free to open an issue if you have questions about contributing. We're happy to help!
Thank you for contributing! ๐