A powerful, feature-rich Pomodoro timer application built with TypeScript and Vite.
Transform your productivity with advanced task management, goal tracking, comprehensive statistics, 15+ beautiful themes, and full keyboard navigation. Install as a PWA and work offline!
🚀 Try Live Demo • ✨ Features • 📥 Installation • 📖 User Guide • 📈 Version History
Unlike basic pomodoro timers, this application provides a complete productivity system:
- 🎯 Task-Oriented: Link your pomodoros to specific tasks and track progress
- 📊 Data-Driven: Detailed statistics show where your time goes
- ⌨️ Power User Friendly: Full keyboard navigation for maximum efficiency
- 📱 Works Offline: Install as PWA and use anywhere, even without internet
- 🎨 Personalized: 15+ themes to match your style and mood
- 🔒 Privacy First: 100% local storage, no servers, no tracking
- 🌍 Multi-language: Turkish and English support (more coming!)
Metric | Value |
---|---|
Lines of Code | ~81,000+ |
Features | 25+ |
Themes | 15+ |
Languages | 2 (TR, EN) |
Keyboard Shortcuts | 11 |
Dependencies | 4 (dev) |
Bundle Size | Optimized with Vite |
Offline Support | ✅ Full PWA |
Feature | v1.0 | v2.0 | v2.1 |
---|---|---|---|
Technology | Vanilla JS | TypeScript + Vite | TypeScript + Vite + PWA |
Code Size | ~5KB | ~66KB | ~81KB |
Task Management | ❌ | ✅ | ✅ |
Goals & Statistics | ❌ | ✅ | ✅ |
Themes | ❌ | ✅ (15+) | ✅ (15+) |
Backup/Restore | ❌ | ✅ | ✅ |
Keyboard Shortcuts | ❌ | ❌ | ✅ (11 shortcuts) |
PWA Support | ❌ | ❌ | ✅ |
Offline Mode | ❌ | ❌ | ✅ |
Multi-language | ❌ | ✅ | ✅ |
Modular Architecture | ❌ | ✅ | ✅ |
- Automatic Cycling: Seamless Pomodoro → Short Break → Pomodoro cycle
- Long Breaks: Automatic long break after every 4 pomodoros
- Customizable Durations: Pomodoro (1-60 min), Short Break (1-30 min), Long Break (1-60 min)
- Visual Countdown: Elegant circular progress bar with smooth animations
- Sound Notifications: Audio alerts for session completion
- Desktop Notifications: Browser notifications to keep you informed
- Auto-start Options: Configure auto-start for breaks and pomodoros
- Rich Task Creation: Add tasks with title, category, priority, and pomodoro count
- 5 Categories: Work, Personal, Learning, Health, Other
- 3 Priority Levels: High, Medium, Low with color coding
- Recurring Tasks: Set daily recurring tasks
- Task Notes: Add detailed notes to any task
- Active Task Tracking: Mark and track your current working task
- Progress Monitoring: Real-time completion percentage for each task
- Pomodoro History: Track pomodoros spent on each task
- Search & Filter: Find tasks quickly with search and category filters
- Bulk Operations: Complete all or delete completed tasks in one click
- Task Archive: Keep your task list clean with automatic archiving
- Daily Goals: Set daily pomodoro targets to stay motivated
- Real-time Progress: Live progress tracking with visual indicators
- Task Linking: Connect tasks to specific goals
- Active Goal Display: See your active goal on the main screen
- Auto Updates: Goals update automatically as you complete pomodoros
- Goal History: Track your goal achievements over time
- Total Pomodoros: Lifetime pomodoro count
- Total Time: Cumulative focused work time
- Streak Tracking: Consecutive working days counter
- Weekly Stats: This week's pomodoro count
- 7-Day Activity Chart: Visual weekly activity graph
- Task Progress: Overall task completion percentage
- Category Breakdown: See which categories you focus on most
- Time Distribution: Understand your productivity patterns
15+ Pre-built Themes:
- 🍅 Classic (Softened colors)
- 🌙 Midnight (Dark blue)
- ☀️ Daylight (Clean white)
- 🌊 Ocean (Deep blue)
- 🌲 Forest (Fresh green)
- 🌅 Sunset (Warm pastels)
- 💜 Purple Dream
- 🎯 Focus Mode (Professional dark)
- ☕ Warm Coffee (Cozy brown)
- 🍃 Mint Fresh (Cool mint)
- 💗 Pink Blossom (Soft pastels)
- 🌹 Rose Garden (Elegant rose)
- 💜 Lavender Dream
- ⚡ Neon Night (Futuristic)
- 🌿 Nature (Vibrant green)
- 🤖 Cyberpunk (Tech style)
Theme Features:
- Dynamic color system with CSS variables
- Automatic light/dark mode adaptation
- Smart contrast management for accessibility
- Input and button colors adapt to theme
- Smooth theme transitions
- Complete Backup: All data in a single JSON file
- Active and archived tasks
- Goals and progress
- Statistics and streaks
- Settings and preferences
- Theme selections
- Timer state
- Custom themes
- Easy Export/Import: One-click backup and restore
- Auto-save: Last 5 backups automatically saved
- Validation: Built-in backup file validation
- Version Control: Timestamped backups for tracking
- Toast Notifications: Animated, non-intrusive messages
- ✓ Success (green) - Actions completed
- ✗ Error (red) - Something went wrong
- ⚠ Warning (orange) - Important notices
- ℹ Info (blue) - Helpful information
- Auto-dismiss: Messages disappear after 3 seconds
- Manual Close: Close button for instant dismissal
- Mobile Friendly: Responsive design for all devices
- Smart Positioning: Optimal placement for readability
Navigate the entire app without touching your mouse! Perfect for power users and accessibility.
Panel Navigation
T
- Toggle Tasks panelG
- Toggle Goals panelS
- Toggle Statistics panelA
- Toggle Settings (Ayarlar) panelH
- Toggle Help panel
Timer Controls
Space
- Play/Pause timerR
- Reset timer1
- Switch to Pomodoro mode2
- Switch to Short Break mode3
- Switch to Long Break mode
General
ESC
- Close any open modal or panel
All shortcuts are shown in tooltips when you hover over buttons!
- Number-only Fields: Prevents non-numeric input
- Range Validation: Min/Max value enforcement
- Clear Error Messages: User-friendly validation feedback
- Auto-focus: Automatically focus on error fields
- Negative Value Protection: No negative time values anywhere
- Real-time Validation: Instant feedback as you type
- 🇹🇷 Turkish
- 🇬🇧 English
- Easily extensible for more languages
- Responsive Design: Perfect on mobile, tablet, and desktop
- Keyboard Shortcuts: ESC to close modals, Space to pause/play
- Click Outside: Close panels by clicking outside
- Panel Persistence: Panels stay open when selecting tasks/goals
- Smooth Animations: Polished transitions and micro-interactions
- Modern UI: Clean, minimalist interface with glassmorphism effects
- Card Layout: Beautiful card-based timer display
- Accessibility: ARIA labels and keyboard navigation
- Node.js 18 or higher
- pnpm (recommended) or npm
# Clone the repository
git clone https://github.com/sinansarikaya/javascript-pomodoro-timer.git
cd javascript-pomodoro-timer
# Install dependencies
pnpm install
# or
npm install
# Start development server
pnpm dev
# or
npm run dev
# Open in browser
http://localhost:5173
# Create optimized build
pnpm build
# or
npm run build
# Preview production build
pnpm preview
# or
npm run preview
# Build and deploy
pnpm build
git add dist -f
git commit -m "Deploy to GitHub Pages"
git subtree push --prefix dist origin gh-pages
pomodoro-timer/
├── src/
│ ├── modules/ # Core modules
│ │ ├── timer.ts # Timer management
│ │ ├── tasks.ts # Task management
│ │ ├── goals.ts # Goal management
│ │ ├── statistics.ts # Statistics tracking
│ │ ├── themes.ts # Theme management
│ │ └── settings.ts # Settings management
│ ├── utils/ # Utility functions
│ │ ├── audio.ts # Audio management
│ │ ├── storage.ts # LocalStorage wrapper
│ │ ├── backup.ts # Backup/restore system
│ │ ├── toast.ts # Toast notifications
│ │ └── i18n.ts # Internationalization
│ ├── types/ # TypeScript types
│ │ └── index.ts # Type definitions
│ ├── main.ts # Application entry point
│ ├── style.css # Base styles
│ └── modern-styles.css # Modern UI styles
├── public/ # Static assets
│ ├── sounds/ # Audio files
│ └── favicon.svg # App icon
├── index.html # Main HTML file
├── package.json # Dependencies
├── tsconfig.json # TypeScript config
├── vite.config.ts # Vite configuration
└── README.md # This file
- Select your desired mode (Pomodoro/Short Break/Long Break)
- Click the Play button in the center
- Timer will automatically cycle through modes
- Work during Pomodoro, rest during breaks
- Click the Tasks icon in the top-right menu
- Enter task title
- Select category, priority, and pomodoro count
- Optionally add notes
- Click "Add" button
- Set as active to track pomodoros for this task
- Click the Goals icon in the top-right menu
- Enter goal title
- Set daily pomodoro target (1-50)
- Click "Add" button
- Set as active to track progress
- Goals automatically update as you complete pomodoros
- Click the Settings icon
- Scroll to "Backup & Restore" section
- Click "Download Backup" to export data
- Click "Upload Backup" to restore from file
- Backups include all tasks, goals, stats, and settings
- Open Settings panel
- Navigate to Theme section
- Click any theme to apply instantly
- Theme preference is automatically saved
- Click the Statistics icon
- View total pomodoros, time, and streak
- Check weekly activity chart
- Monitor task completion progress
Desktop (Chrome, Edge, Brave)
- Visit the live demo
- Click the install icon (⊕) in the address bar
- Click "Install" in the popup dialog
- The app will open in its own window
- Find it in your app launcher like any native app
Mobile (iOS Safari)
- Open the app in Safari
- Tap the Share button
- Scroll down and tap "Add to Home Screen"
- Tap "Add"
Mobile (Android Chrome)
- Open the app in Chrome
- Tap the three dots menu
- Tap "Add to Home Screen" or "Install App"
- Tap "Install"
Benefits of PWA Installation:
- Works completely offline after first load
- Dedicated app window without browser UI
- Faster startup time
- Native-like experience
- Automatic updates
See the Keyboard Shortcuts section for the complete list. All shortcuts work globally when the app is focused!
Technology | Purpose |
---|---|
TypeScript | Type-safe development |
Vite | Fast build tool and dev server |
Vite PWA Plugin | Progressive Web App functionality |
CSS3 | Modern styling with custom properties |
LocalStorage | Client-side data persistence |
Service Workers | Offline support and caching |
Web Audio API | Sound notifications |
Notification API | Desktop notifications |
Font Awesome | Beautiful icons |
Lordicon | Animated icons |
Feature | Status | Version | Description |
---|---|---|---|
⏱️ Timer System | ✅ | v1.0 | Pomodoro, short break, long break |
🔄 Auto Cycling | ✅ | v2.0 | Automatic mode transitions |
📋 Task Management | ✅ | v2.0 | Full CRUD with categories |
🎯 Goal System | ✅ | v2.0 | Daily targets and tracking |
📊 Statistics | ✅ | v2.0 | Comprehensive analytics |
🎨 15+ Themes | ✅ | v2.0 | Beautiful pre-built themes |
💾 Backup/Restore | ✅ | v2.0 | Full data export/import |
🔔 Toast Notifications | ✅ | v2.0 | Modern alert system |
✅ Input Validation | ✅ | v2.0 | Smart form validation |
🌍 Multi-language | ✅ | v2.0 | Turkish & English |
📱 Responsive Design | ✅ | v2.0 | Mobile, tablet, desktop |
🔊 Sound Alerts | ✅ | v1.0 | Audio notifications |
🖥️ Desktop Notifications | ✅ | v2.0 | Browser notifications |
🔁 Recurring Tasks | ✅ | v2.0 | Daily task repetition |
📈 Progress Tracking | ✅ | v2.0 | Real-time progress bars |
🔍 Search & Filter | ✅ | v2.0 | Advanced task filtering |
📝 Task Notes | ✅ | v2.0 | Detailed note system |
🎴 Card UI | ✅ | v2.0 | Modern card-based layout |
🍃 Glassmorphism | ✅ | v2.0 | Beautiful glass effects |
⌨️ Keyboard Shortcuts | ✅ | v2.1 | Full keyboard navigation |
📱 PWA Support | ✅ | v2.1 | Install as app, offline mode |
🚀 Auto Deploy | ✅ | v2.1 | GitHub Pages deployment |
- ✅ 100% Local: All data stored in browser's LocalStorage
- ✅ No Server: No data sent to any external server
- ✅ Offline First: Works completely offline
- ✅ Your Control: You own and control all your data
- ✅ No Tracking: No analytics or tracking scripts
- ✅ Open Source: Transparent and auditable code
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow TypeScript best practices
- Maintain consistent code style
- Add comments for complex logic
- Test thoroughly before submitting
- Update documentation if needed
This project is licensed under the MIT License - see the LICENSE file for details.
Sinan Sarıkaya
- GitHub: @sinansarikaya
- Project: JavaScript Pomodoro Timer
- Live Demo: Try it now!
- Font Awesome - Icon library
- Lordicon - Animated icons
- Vite - Next generation build tool
- TypeScript - JavaScript with types
- Pomodoro Technique - Time management method
- 🐛 Bug Reports: Open an issue
- 💡 Feature Requests: Start a discussion
- 📧 Email: Contact through GitHub
Enhanced Accessibility & PWA Support
-
⌨️ Comprehensive Keyboard Shortcuts System
- Full keyboard navigation throughout the app
- Smart tooltip system showing shortcuts on hover
- Global shortcuts: T (Tasks), G (Goals), S (Statistics), A (Settings), H (Help)
- Timer controls: Space (Play/Pause), R (Reset), 1/2/3 (Mode switch)
- ESC to close any modal or panel
-
📱 Progressive Web App (PWA)
- Install as standalone desktop/mobile app
- Offline-first architecture with service workers
- App icons and splash screens for all devices
- Enhanced manifest with proper metadata
- Works seamlessly offline after first load
-
🚀 Automated Deployment
- GitHub Pages deployment script (
npm run deploy
) - Automated build and deploy workflow
- Easy updates and version management
- GitHub Pages deployment script (
- Refined recurring task UI with smooth animations
- Enhanced modal designs (simplified goal editor to 3 essential fields)
- Perfect timer circle centering and alignment
- Better button tooltips with contextual keyboard shortcuts
- Improved visual feedback for all interactions
- Fixed form validation edge cases
- Resolved task editing functionality issues
- Improved modal closing behavior consistency
- Enhanced keyboard shortcut reliability across browsers
- Better handling of rapid user interactions
- Code size growth: +23% (81KB main.ts vs 66KB in v2.0)
- Styles expansion: +37% (54KB CSS vs 39KB in v2.0)
- New dependencies: gh-pages, vite-plugin-pwa, PWA asset generator
- Improved TypeScript type coverage
- Better error handling and validation
Complete Rewrite & Modernization
- Technology Migration
- Migrated from Vanilla JavaScript to TypeScript
- Introduced Vite as modern build tool (replacing simple HTML/CSS/JS)
- Implemented modular architecture with separate modules
- Type-safe development with comprehensive TypeScript types
src/modules/
: Core feature modules (timer, tasks, goals, statistics, themes, settings)src/utils/
: Utility functions (audio, storage, backup, toast, i18n)src/types/
: TypeScript type definitions- Modern development workflow with hot module replacement
-
Advanced Task Management
- 5 categories (Work, Personal, Learning, Health, Other)
- 3 priority levels with color coding
- Recurring tasks support
- Task notes and detailed tracking
- Search and filter functionality
-
Goal System
- Daily pomodoro targets
- Real-time progress tracking
- Task-goal linking
- Achievement history
-
Statistics Dashboard
- Total pomodoros and time tracking
- Streak counter for consecutive days
- Weekly activity charts (7-day graph)
- Category breakdown analysis
- Task completion percentages
-
Theme System
- 15+ pre-built beautiful themes
- Dynamic CSS custom properties
- Light/dark mode adaptation
- Smooth theme transitions
-
Backup & Restore
- Complete data export/import as JSON
- Auto-save last 5 backups
- Validation and version control
- One-click backup download/restore
-
Modern Notification System
- Toast notifications (success, error, warning, info)
- Auto-dismiss with manual close option
- Animated, non-intrusive design
-
Input Validation
- Number-only fields with range enforcement
- Real-time validation feedback
- Clear error messages
- Negative value protection
-
Multi-language Support
- Turkish and English translations
- Extensible i18n system
- Complete visual redesign with modern card layout
- Glassmorphism effects throughout the interface
- Smooth animations and micro-interactions
- Clean header with organized menu system
- Refined themes (Sunset, Rose Garden, etc.)
- Responsive design for mobile, tablet, desktop
- Modern color schemes with accessibility focus
- ~66KB main TypeScript file (vs ~5KB JavaScript in v1)
- ~39KB modern CSS styles
- 6 core modules + 5 utility modules
- Comprehensive type system
Simple Pomodoro Timer
- ⏱️ Simple Pomodoro timer (25 min work, 5 min break)
- Basic timer modes: Pomodoro, Short Break, Long Break
- Circular progress visualization
- Play/Pause/Reset controls
- Sound notifications
- Social media links
- Pure Vanilla JavaScript (~5KB app.js)
- HTML5 & CSS3
- Font Awesome icons
- Lordicon animated icons
- No build tools or dependencies
- Single-file JavaScript application
- Simple, focused functionality
- Educational project demonstrating Pomodoro technique
- Static HTML deployment
- Learning project for DOM manipulation
- Introduction to timer logic and animations
- Basic event handling and state management
- Cloud Sync Support: Sync data across devices with user accounts
- Browser Extension: Chrome, Firefox, Edge extensions for quick access
- Mobile App: React Native mobile applications (iOS & Android)
- Team Collaboration: Share tasks and goals with team members
- Calendar Integration: Google Calendar, Outlook, Apple Calendar sync
- AI-Powered Suggestions: Smart task prioritization and time estimates
- Custom Sound Uploads: Upload your own notification sounds
- Export Statistics: PDF/CSV export for productivity reports
- Pomodoro Tutorials: Interactive onboarding guide for new users
- Auto Dark Mode: Automatic theme switching based on time of day
- Advanced Analytics: Detailed productivity insights and trends
- Task Templates: Reusable task templates for common workflows
- Focus Music: Built-in focus music player integration (Spotify, YouTube)
- Break Suggestions: AI-powered break activity suggestions
- Subtasks: Add subtasks to main tasks for better organization
- Time Estimates: Estimate completion time for tasks
# Build the project
npm run build
# Deploy to GitHub Pages
npm run deploy
- Run
npm run build
to create thedist
folder - Push the
dist
folder contents to thegh-pages
branch - Enable GitHub Pages in repository settings
If you find this project useful, please consider giving it a star! It helps others discover the project and motivates continued development.
Made with ❤️ by Sinan Sarıkaya