First off, thank you for considering contributing to Google Task Desktop! 🎉
- Code of Conduct
- Getting Started
- Development Setup
- Project Structure
- Making Changes
- Pull Request Process
- Coding Guidelines
- Commit Messages
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the maintainers.
- 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
# 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- 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
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.
feature/description- New featuresfix/description- Bug fixesdocs/description- Documentation changesrefactor/description- Code refactoring
- Run the development server:
npm run launch:dev - Test the feature manually
- Ensure there are no TypeScript errors
- Check the console for runtime errors
- 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
type(scope): description
Examples:
feat(tasks): add drag-and-drop reordering
fix(auth): resolve token refresh issue
docs(readme): update installation steps
- Use strict TypeScript types (avoid
any) - Define interfaces for all data structures
- Use meaningful variable and function names
- Use functional components with hooks
- Keep components small and focused
- Use Recoil for shared state only (UI state)
- Follow Rust idioms and best practices
- Use descriptive error messages
- Document public functions
- One component per file
- Group related files in directories
- Export from index files when appropriate
Follow the Conventional Commits specification:
<type>(<scope>): <description>
[optional body]
[optional footer]
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Code style (formatting, etc.)refactor: Code refactoringtest: Adding testschore: Maintenance tasks
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
Feel free to open an issue if you have questions about contributing. We're happy to help!
Thank you for contributing! 🙏