MCPcopy Index your code
hub / github.com/codad5/google-task-desktop

github.com/codad5/google-task-desktop @v1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0 ↗ · + Follow
384 symbols 732 edges 72 files 94 documented · 24%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Google Task Desktop

An unofficial, lightweight desktop client for Google Tasks

Built with Tauri | React | TypeScript | Rust

Version License Tauri

Screenshot


✨ Features

Core Functionality

  • 📋 Full Google Tasks Integration - Sync with your Google account
  • Create, Edit, Delete Tasks - Full CRUD operations
  • 📁 Multiple Task Lists - Organize tasks in separate lists
  • Star Important Tasks - Quick access to starred tasks view
  • 📅 Due Dates - Set due dates with Today/Tomorrow shortcuts
  • 🔔 Desktop Notifications - Configurable reminder time on due dates

Advanced Features

  • ✏️ Inline Editing - Click any task to edit in place
  • 🔃 Drag-and-Drop - Reorder tasks within lists
  • 📎 Subtasks - Create and manage subtasks
  • 👁️ Collapsible Sidebar - Show/hide lists with visibility toggles
  • 🔄 Multi-Account - Switch between Google accounts
  • 🎨 Modern UI - Clean Material Design interface

🛠️ Tech Stack

Layer Technology
Frontend React 18, TypeScript, Material-UI
Backend Rust, Tauri 1.4
State Recoil (minimal, UI-only)
Architecture Layered (Repository → Service → Hooks → Components)

📥 Installation

From Releases

Download the latest release for your platform from the Releases page.

From Source

Prerequisites

Steps

# Clone the repository
git clone https://github.com/codad5/google-task-desktop.git
cd google-task-desktop

# Install dependencies
npm install

# Start development server
npm run launch:dev

# Build for production
npm run tauri build

⚙️ Configuration

Google OAuth Setup

  1. Go to Google Cloud Console
  2. Create a new project
  3. Enable Google Tasks API
  4. Create OAuth 2.0 Client ID (Desktop application)
  5. Create a .env file:
VITE_GOOGLE_CLIENT_ID=your_client_id
VITE_GOOGLE_CLIENT_SECRET=your_client_secret

📖 Documentation

⚠️ Known Limitations

Limitation Reason
No due times Google Tasks API only supports dates, not times
No offline mode Planned for future release

Note: Notifications are triggered at your configured time on the due date (default: 9 AM). Change it in Settings.

🗺️ Roadmap

  • [x] Core task management
  • [x] Inline editing
  • [x] Drag-and-drop reordering
  • [x] Starred tasks
  • [x] Desktop notifications
  • [ ] Global keyboard shortcuts
  • [ ] Offline support with sync
  • [x] Dark mode
  • [ ] Theme toggle (light/dark)
  • [ ] Recurring tasks

👨‍💻 Author

Aniezeofor Chibueze Michael (Codad5)

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

🙏 Acknowledgments


If you find this project helpful, please consider giving it a ⭐!

Report Bug · Request Feature

Extension points exported contracts — how you extend this code

ITaskListRepository (Interface)
(no doc) [3 implementers]
src/repositories/interfaces.ts
ApiClientConfig (Interface)
* API Client configuration
src/api/client.ts
UserProfile (Interface)
(no doc)
src/types/googleapis.ts
SidebarProps (Interface)
(no doc)
src/components/layout/Sidebar.tsx
Window (Interface)
(no doc)
src/helpers/commands.ts
AppSettings (Interface)
(no doc)
src/services/settings.service.ts
Services (Interface)
(no doc)
src/hooks/useServices.ts
ITaskRepository (Interface)
(no doc) [2 implementers]
src/repositories/interfaces.ts

Core symbols most depended-on inside this repo

get
called by 18
src/helpers/cacher.ts
delete
called by 17
src/repositories/interfaces.ts
get
called by 12
src/helpers/task.ts
set
called by 11
src/helpers/cacher.ts
getAll
called by 10
src/repositories/interfaces.ts
invoke
called by 9
src/helpers/commands.ts
update
called by 9
src/repositories/interfaces.ts
create
called by 7
src/repositories/interfaces.ts

Shape

Function 163
Method 143
Interface 44
Class 34

Languages

TypeScript91%
Rust9%

Modules by API surface

src/helpers/task.ts37 symbols
src/helpers/auth.ts23 symbols
src/repositories/interfaces.ts21 symbols
src/components/tasks/TaskListItem.tsx20 symbols
src/services/task.service.ts16 symbols
src/helpers/cacher.ts16 symbols
src/services/task-list.service.ts15 symbols
src/components/tasks/TaskListCard.tsx15 symbols
src/api/client.ts15 symbols
src/types/app.ts13 symbols
src/helpers/googleapihelper.ts12 symbols
src/types/google-tasks.ts11 symbols

For agents

$ claude mcp add google-task-desktop \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact