Tomato Clock NG is a simple browser extension for managing your productivity. It is a fork of samueljun/tomato-clock. Use the extension to break down your work into 25 minute 'Tomato' intervals separated by short breaks. Use the long break after completing four Tomato intervals.
Features:
- Customizable timer lengths
- Browser notifications
- Stat tracking
- Task tracking with to-do list
- Per-task statistics
- Session notes - Add quick notes about what you accomplished after completing each tomato
- Best time of day analysis - Discover when you're most productive (morning/afternoon/evening/night)
- Motivational quotes - Receive inspirational messages between sessions to stay motivated
- Dark mode - Full dark theme option for comfortable viewing in any lighting condition
- Gamification - Earn XP, level up, unlock badges and achievements to stay motivated and track your productivity journey
You can customize the length of the Tomatoes and breaks in the extension page. The extension uses the default browser notification system, accompanied by a sound, to let you know when the timer is over. The extension also features stats for tracking how many Tomatoes you complete, and you can organize your work by creating tasks and tagging individual tomatoes with task names. View detailed statistics per task to understand where you're spending your time.
Please file any issues or feature requests at https://github.com/ProgramminCat/tomato-clock-ng/issues.
-
Install the required node modules:
npm install- Run the following command so that webpack can watch and recompile the
/srcfiles live to the/distfolder:
npm run watchTo run the extension with live reloading in a clean Firefox instance, run the following command in a separate terminal:
npm run watch-firefoxTo temporarily load the extension in a normal Firefox instance:
- Go to
about:debugging - Click
Load Temporary Add-on - Load the
srcfolder, OR compile by runningnpm run buildthen load thedistfolder
Run the following command with the appropriate npm version {patch/minor/major} to bump the package.json version based on semver:
npm version patch && git push && git push --tagsRun the following command so that webpack can recompile the /src files in production mode to the /dist folder:
npm run buildThe expected formatting of Tomato Clock NG's .json files that store statistics is as follows
{
"specificationUrl": "https://github.com/ProgramminCat/tomato-clock-ng/?tab=readme-ov-file#statistics-json-format",
"version": "6.0.3",
"exportedAt": "2025-11-08T00:13:06.022Z",
"data": [
{
"type": "tomato",
"startTime": "2025-11-08T00:52:29.117Z",
"endTime": "2025-11-08T00:53:29.117Z",
"duration": 60000,
"taskId": "1234567890"
}
]
}- At the base, there is metadata and an array [] of objects {}
- Each object {} under "data" is an instance of the clock timer.
- Within each object:
- "duration": is the time in milliseconds of the timer
- "type": is one of "tomato", "shortBreak", or "longBreak"
- "startTime": is the exact date and time string in the ISOString format of the time the timer started
- "endTime": is the exact date and time string in the ISOString format of the time the timer ended
- "taskId": (optional) the ID of the task associated with this timer entry
- "note": (optional) a text note describing what was accomplished during this session
Tomato Clock NG includes a comprehensive task management system:
- Create and manage tasks: Add tasks with names and descriptions
- Track progress: Each task automatically tracks the number of tomatoes completed and total minutes worked
- Task selection: When starting a tomato timer, optionally select a task to associate it with
- Task statistics: View detailed statistics showing how many tomatoes and minutes you've spent on each task
- To-do list: Mark tasks as complete when finished, and view active vs. completed tasks separately
- Per-task analytics: The stats page shows a breakdown of your tomato sessions by task, including percentage of total time
Tasks are stored locally and persist across browser sessions. Task data is separate from the timer statistics, so you can delete tasks without losing your tomato history.
Tomato Clock NG includes a comprehensive gamification system to make productivity tracking more engaging and rewarding:
- Earn XP for completing tomato sessions, short breaks, and long breaks
- Level up from Beginner (Level 1) to Mythic (Level 10) by accumulating XP
- Streak bonuses - Earn bonus XP for maintaining daily completion streaks
- Progress tracking - View your current level and progress to the next level in the panel
Unlock over 20 unique badges across 5 tiers:
- Bronze
- Silver
- Gold
- Platinum
- Diamond
Badge categories include:
- Completion badges - Unlock badges for reaching tomato milestones (10, 50, 100, 250, 500 tomatoes)
- Streak badges - Earn badges for maintaining daily streaks (3, 7, 30, 100 days)
- Time-based badges - Achieve badges for total focus time (10, 50, 100, 500 hours)
- Daily performance - Special badges for productive days (Early Bird, Night Owl, Super Productive)
- Consistency badges - Rewards for perfect weeks and monthly consistency
- Real-time rewards - See XP earned and badges unlocked immediately after completing sessions
- Achievement tracking - View all badges with progress indicators showing how close you are to unlocking them
- Filtering & sorting - Filter badges by status (earned/locked) and tier (bronze/silver/gold/platinum/diamond)
- Level milestones - Track your journey through 10 unique levels, each with its own name and icon
- Export/Import - Back up and restore your gamification progress
- Streak system - Build daily streaks to earn bonus XP and unlock special streak badges
Access the Achievements page from the extension panel to view your complete gamification profile, including level progress, earned badges, and statistics.