A modern, offline-first Progressive Web App for supercharged productivity tracking
Syncodoro transforms the classic Pomodoro Technique into a feature-rich, cloud-synced productivity platform. Track your focus sessions, analyze your patterns, and stay productive—online or offline.
- Smart Timer System - Customizable Pomodoro, short break, and long break durations
- Session Tracking - Detailed logs with notes, tags, and timestamps
- Tag Organization - Categorize and filter your work sessions
- Offline-First - Full functionality without internet connection
- Productivity Dashboard - Visual stats and session summaries
- Data Visualization - Interactive charts powered by Recharts
- Progress Tracking - Monitor trends and patterns over time
- Cloud Synchronization - Real-time sync across all your devices via Supabase
- Multiple Export Formats - CSV for data analysis, ICS for calendar integration
- Detailed Reports - Comprehensive productivity reports
- Authentication - Secure login and profile management
- Public Profiles - Share your productivity stats (optional)
- Customizable Settings - Tailor the app to your workflow
- Install Anywhere - Works on desktop, mobile, and tablet
- Offline Support - Service workers with smart caching
- Native Experience - App-like feel on all platforms
| Category | Technologies |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS |
| State Management | React Context API |
| Database | IndexedDB (Dexie.js), PostgreSQL (Supabase) |
| Authentication | Supabase Auth |
| PWA | Workbox, Service Workers |
| Charts | Recharts |
| Export | papaparse (CSV), ics.js (Calendar) |
- Node.js 16+
- npm or yarn
- Supabase account (for cloud features)
# Clone the repository
git clone https://github.com/Danialsamadi/Syncodoro.git
cd Syncodoro
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your Supabase credentials
# Start development server
npm run devCreate a .env file in the root directory:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
VITE_APP_URL=http://localhost:3000npm run build
npm run previewsyncodoro/
├── src/
│ ├── components/ # Reusable UI components
│ ├── contexts/ # React contexts (Auth, Sync, Timer)
│ ├── services/ # Database & API services
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Route pages
│ ├── types/ # TypeScript definitions
│ └── utils/ # Helper functions
├── public/ # Static assets & PWA files
└── supabase/ # Database migrations & functions
This project follows an incremental development approach:
- Stage 1 - Project setup & configuration
- Stage 2 - Database schema & services (IndexedDB + Supabase)
- Stage 3 - Authentication & contexts
- Stage 4 - Core timer functionality
- Stage 5 - Complete UI components & pages
- Stage 6 - Export functionality (CSV, ICS, Reports)
- Stage 7 - Analytics dashboard with charts
- Stage 8 - PWA features & offline functionality
- Stage 9 - Final deployment & optimization
Syncodoro works seamlessly without internet. All data is stored locally in IndexedDB and syncs automatically when online.
Conflict resolution and intelligent merging ensure your data stays consistent across devices.
Export your productivity data in multiple formats:
- CSV - For spreadsheet analysis
- ICS - Import sessions into your calendar
- Reports - Detailed productivity summaries
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Pomodoro Technique® by Francesco Cirillo
- Built with modern web technologies
- Inspired by productivity enthusiasts worldwide
Danial Samadi - @Danialsamadi
Project Link: https://github.com/Danialsamadi/Syncodoro
⭐ Star this repo if you find it useful!