A cross-platform Pomodoro timer application built with Electron for desktop (Windows, macOS, Linux) and ready for mobile development with React Native.
- Classic Pomodoro Technique: 25-minute work sessions with 5-minute breaks
- Customizable Durations: Adjust work, break, and long break durations
- Visual Progress: Real-time progress bar and timer display
- Sound Notifications: Audio alerts when sessions complete
- Desktop Notifications: System notifications for session completion
- Statistics Tracking: Track completed sessions and total work/break time
- System Tray: Minimize to system tray with quick access
- Cross-Platform: Works on Windows, macOS, and Linux
- Node.js (v14 or higher)
- npm or yarn
- Clone or download this repository
- Navigate to the project directory
- Install dependencies:
npm installnpm start- Start Timer: Click the "Start" button to begin a work session
- Pause/Resume: Use the "Pause" button to pause and resume the timer
- Reset: Click "Reset" to stop the current session and reset the timer
- Customize Settings:
- Work Duration (1-60 minutes)
- Break Duration (1-30 minutes)
- Long Break Duration (1-60 minutes)
- View Statistics: Track your productivity with session counts and time tracking
- Work for 25 minutes on a single task
- Take a 5-minute break
- After 4 work sessions, take a longer 15-minute break
- Repeat the cycle
pomodoro/
├── main.js # Electron main process
├── index.html # Main application window
├── renderer.js # Timer logic and UI interactions
├── package.json # Project configuration
├── assets/
│ └── icon.svg # Application icon
└── README.md # This file
The application is structured for easy extension:
- Timer Logic: All timer functionality is in
renderer.js - UI Components: HTML structure in
index.htmlwith CSS styling - Electron Integration: Window and system tray management in
main.js
To create distributable packages for different platforms:
- Install electron-packager:
npm install --save-dev electron-packager- Add packaging scripts to package.json:
"scripts": {
"package-win": "electron-packager . pomodoro-timer --platform=win32 --arch=x64",
"package-mac": "electron-packager . pomodoro-timer --platform=darwin --arch=x64",
"package-linux": "electron-packager . pomodoro-timer --platform=linux --arch=x64"
}- Run the appropriate package command for your target platform.
The application is designed to be easily ported to mobile platforms using React Native. The timer logic and state management can be reused with platform-specific UI components.
- Timer not starting: Make sure you have notification permissions enabled
- No sound: Check your system volume and audio settings
- App won't minimize: Ensure your system supports system tray functionality
Feel free to submit issues and enhancement requests. If you'd like to contribute code:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open source and available under the ISC License.