cloudtodo is a modern, privacy-first todo list application that stores all your data directly in your personal Google Drive. No external databases, no third-party servers storing your data - everything lives in your Google Drive account, giving you complete ownership and control.
- All tasks stored as JSON files in your Google Drive
- Attachments (images, videos, documents, audio) saved in organized folders
- No external database - you own and control everything
- Data persists in your Google Drive even if you stop using the app
- OAuth 2.0 authentication via Google
- Direct API calls to Google Drive - no intermediary servers
- Your data never leaves your Google account
- Revoke access anytime from your Google Account settings
- Automatic folder structure in Google Drive (
CLOUDTODO/) - Organized attachment folders (AUDIOS, VIDEOS, DOCUMENTS, PICTURES)
- Each task is a separate JSON file for easy backup and portability
- Multiple views: List, Calendar, Kanban board
- Task priorities, due dates, and reminders
- File attachments from your device
- Collaborative tasks with comments
- AI-powered task suggestions
- Real-time browser notifications
- Offline caching with automatic sync
User's Google Drive
└── CLOUDTODO/ # Root folder for all tasks
├── task1.json # Individual task files
├── task2.json
├── task3.json
├── AUDIOS/ # Audio attachments
│ └── recording.mp3
├── VIDEOS/ # Video attachments
│ └── demo.mp4
├── DOCUMENTS/ # Document attachments
│ └── notes.pdf
└── PICTURES/ # Image attachments
└── screenshot.png
- Authentication: User logs in with Google OAuth 2.0
- Initialization: App creates
CLOUDTODOfolder in user's Drive - Task Creation: New tasks saved as JSON files in
CLOUDTODO/ - Attachments: Files uploaded to appropriate subfolders
- Sync: Changes immediately reflected in Google Drive
- Offline: Local cache for offline access, syncs when online
Each task is stored as a JSON file with this structure:
{
"taskTitle": "Complete project documentation",
"description": "Write comprehensive docs for the new feature",
"dueDate": "25-01-2026",
"dueTime": "14:30",
"reminder": 30,
"priority": 1,
"taskType": {
"isPersonal": false,
"isCollaborative": true
},
"isStarred": true,
"isPinned": false,
"categories": ["Work", "Documentation"],
"tags": ["Important", "Urgent"],
"recurrence": "None",
"status": "in-progress",
"attachments": {
"audio": [],
"images": ["1a2b3c4d5e6f"],
"documents": ["7g8h9i0j1k2l"],
"videos": []
},
"comments": [
{
"id": "uuid-here",
"userId": "user-id",
"userEmail": "user@example.com",
"content": "Great progress!",
"createdAt": "2026-01-19T10:30:00.000Z"
}
],
"id": "google-drive-file-id",
"createdDate": "2026-01-19T09:00:00.000Z",
"updatedDate": "2026-01-19T10:30:00.000Z"
}- Node.js 18+ installed
- Google Account
- Google Cloud Project with Drive API enabled
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable Google Drive API
- Create OAuth 2.0 credentials:
- Application type: Web application
- Authorized JavaScript origins:
http://localhost:5173 - Authorized redirect URIs:
http://localhost:5173
- Copy your Client ID
# Clone the repository
git clone https://github.com/yourdudeken/cloudtodo.git
cd cloudtodo
# Install dependencies
npm installCreate a .env file in the root directory:
# Google Drive API Credentials
VITE_GOOGLE_CLIENT_ID=your-client-id-here.apps.googleusercontent.com# Start development server
npm run devVisit http://localhost:5173 in your browser.
- Click "Sign in with Google"
- Authorize the app to access your Google Drive
- App automatically creates
CLOUDTODOfolder - Start creating tasks!
- Click "+ Add Task" button
- Fill in task details:
- Title (required)
- Description
- Due date and time
- Priority (High/Medium/Low)
- Categories and tags
- Recurrence pattern
- Click "Create Task"
- Task is immediately saved to your Google Drive
- Open a task
- Click "Add Attachment"
- Select file from your device
- File uploads to appropriate folder in Google Drive
- Attachment link stored in task JSON
- List View: Traditional todo list with filters
- Calendar View: See tasks on a calendar
- Kanban Board: Organize by status columns
- Open a task
- Click "Collaborate"
- Add comments
- Comments stored in task JSON file
- Tasks cached locally for offline access
- Changes queued and synced when online
- Automatic conflict resolution
- React 18 with TypeScript
- Vite for blazing-fast development
- Zustand for state management
- TailwindCSS for styling
- Radix UI for accessible components
- React Router for navigation
- Google Drive API for storage
- OAuth 2.0 for authentication
- Direct API calls using
axios - OAuth 2.0 for authentication
- REST API v3 for file operations
- Multipart upload for attachments
createTask()- Creates JSON file in DrivelistTasks()- Lists all task filesreadTask()- Reads task JSON contentupdateTask()- Updates task filedeleteTask()- Deletes task fileuploadAttachment()- Uploads files to DrivegetOrCreateFolder()- Manages folder structure
- Google OAuth authentication
- User profile management
- Token refresh handling
- Logout and cleanup
- Task CRUD operations
- Local state management
- Cache synchronization
- Notification scheduling
- You own your data - Everything stored in your Google Drive
- No external database - We don't store anything on our servers
- Portable - Export your data anytime from Google Drive
- OAuth 2.0 - Industry-standard authentication
- Scoped permissions - App only accesses Drive files it creates
- Revocable - Revoke access anytime from Google Account settings
- No tracking - We don't track your usage
- No analytics - Your data stays private
- Open source - Audit the code yourself
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel
# Set environment variables in Vercel dashboardVITE_GOOGLE_CLIENT_ID=your-production-client-id
# Update OAuth redirect URIs in Google Cloud ConsoleContributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - See LICENSE file for details
- Google Drive API for storage
- React community for amazing tools
- All contributors and users
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with care by the cloudtodo team
Your tasks, your drive, your control.