A keyboard-first productivity timer with task management and gamification features.
Available as both a browser extension and a desktop application (Electron).
- Pomodoro-style timer with visual progress bar
- Keyboard shortcuts for quick control
- Audio notifications when timer completes
- Pause/resume functionality
- Add tasks with time estimates (format: "25 - Write report")
- Start timers directly from task list
- Automatically proceed to next task
- Task summary with total time estimates
- Points System: Earn 1 point for every minute a task timer is running
- Streak Tracking: Maintain consecutive days with sufficient points
- Customizable Goals: Adjust daily point threshold in settings (default: 100)
- Visual Feedback: See real-time points and streak status
- Activity Indicator: Lightning bolt (⚡) shows when points are being earned
- Points are only earned when running timers from the Task List (not manual timers)
- Timer must be actively running (not paused or expired)
- 1 point = 1 minute of focused work time
- Points are automatically saved and tracked daily
- A streak day requires earning at least your set threshold of points
- Streak counts consecutive days meeting the threshold
- Customize the threshold in Settings to match your productivity goals
- Current streak is displayed with a fire emoji (🔥)
- Space or P: Pause/Resume timer
- 1-999: Set timer for specified minutes (press Enter to start)
- R: Restart current timer
- T: Open/close task view
- ?: Toggle settings panel
- >: Mark current task complete and begin next task
- Escape: Close any open panels
- Audio notification on/off
- Custom notification sound
- Timer progress bar color
- Daily points threshold for streak calculation
- Press T to open the task list
- Add tasks in format: "duration - description" (e.g., "25 - Review code")
- Click "start" on a task to begin earning points
- Watch your points and streak grow in the gamification panel
- Adjust settings with ? to customize your experience
The gamification system encourages consistent use of the task list mode, helping build productive habits through points and streak tracking!
This project supports both browser extension and desktop app builds from a single codebase.
keytimer/
├── src/ # Shared source code (HTML, CSS, JS, assets)
├── extension/ # Browser extension specific files
├── desktop/ # Electron desktop app files
└── scripts/ # Build scripts
- Package the extension:
npm run package:extension- Load in Chrome:
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
dist/extensiondirectory
- Open
manifest.json- Extension manifestbackground.js- Service worker for extension- All shared files from
src/
Install dependencies:
npm installRun the desktop app in development mode:
npm start
# or
npm run dev:desktopBuild for your current platform:
npm run build:desktopBuild for specific platforms:
npm run build:desktop:mac # macOS (DMG, ZIP)
npm run build:desktop:win # Windows (NSIS installer, ZIP)
npm run build:desktop:linux # Linux (AppImage, DEB)Built applications will be in the dist/ directory.
The core application logic in src/ is shared between both platforms:
index.html- Main UImain.js- Timer logic and functionalitystyles.css- Stylingassets/- Icons and imagesding.mp3- Default notification sound
The only platform-specific code is:
- Extension:
extension/background.js(Chrome extension service worker) - Desktop:
desktop/main.js(Electron main process)