A Pomodoro timer application built with C++ and Qt Framework, featuring real-time productivity metrics visualization through Prometheus and Grafana.
Forked from: lmartinking/TomatoTimer
The application displays different colored icons to indicate the current state:
![]()
This fork adds comprehensive monitoring and metrics collection:
- Prometheus Metrics Server - HTTP endpoint exposing 6 productivity metrics
- Grafana Dashboard - Real-time visualization with 7 panels
- Customizable Daily Goals - Set and track daily Pomodoro targets
- Docker Compose Setup - Easy deployment of monitoring stack
- Goal Achievement Tracking - Monitor productivity percentage
TomatoTimer (Port 8080) β Prometheus (Port 9090) β Grafana (Port 3000)
The Qt application exposes metrics every 15 seconds, Prometheus collects them, and Grafana visualizes the data.
- Qt Creator 5.15+ - Download
- Git - Download
- Docker Desktop - Download
- C++ Compiler - MinGW (Windows) / GCC (Linux) / Clang (macOS)
git clone https://github.com/bvjpr1498/TomatoTimer.git
cd TomatoTimerUsing Qt Creator:
- Open
TomatoTimer.proin Qt Creator - Configure project (select compiler)
- Click Build (Ctrl+B)
- Click Run (Ctrl+R)
Using Command Line:
mkdir build && cd build
qmake ../TomatoTimer.pro
make
./TomatoTimer # or TomatoTimer.exe on Windowsdocker-compose up -d- Application Metrics: http://localhost:8080/metrics
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin)
| Metric | Description | Example |
|---|---|---|
pomodoro_total_completed |
Total Pomodoros completed | 30 |
pomodoro_today_completed |
Today's Pomodoros (resets daily) | 27 |
work_time_minutes_total |
Total work time in minutes | 750 |
breaks_taken_total |
Total breaks taken | 24 |
daily_goal_achievement |
Goal achievement percentage | 208% |
daily_goal_target |
User's daily Pomodoro target | 13 |
The Grafana dashboard includes:
- Total Pomodoros Completed - Lifetime count (30)
- Today's Pomodoros - Daily count (27)
- Daily Goal Progress Gauge - Visual progress (27/13)
- Total Work Time - Cumulative minutes (750)
- Total Breaks Taken - Break count (24)
- Pomodoros Over Time - Trend line chart
- Daily Goal Achievement Rate - Percentage gauge (208%)
- Start Pomodoro - Click "Start Pomodoro" for 25-minute work session
- Set Daily Goal - Preferences β Timer tab β Daily Goal (1-20)
- View Metrics - Open Metrics at http://localhost:8080/metrics
- Track Progress - Open Grafana Dashboard at http://localhost:3000, it auto-refreshes every 30 seconds
Application won't build?
- Clean and rebuild in Qt Creator (Build β Clean All β Rebuild)
Metrics endpoint not accessible?
- Verify app is running and port 8080 is free
Docker containers won't start?
- Ensure Docker Desktop is running
- Check ports 9090 and 3000 are available
Grafana shows "No Data"?
- Check Prometheus targets: http://localhost:9090/targets (should show "UP")
- Complete a Pomodoro to generate data
- Verify metrics endpoint: http://localhost:8080/metrics
This Fork: @bvjpr1498
Original Project: lmartinking/TomatoTimer by Lucas Martin-King
LGPLv3 - Same as original project. See LICENSE and COPYING.LESSER.
Copyright (c) 2017 Lucas Martin-King (original)
Monitoring additions (c) 2026
- Original TomatoTimer by Lucas Martin-King
- Built with Qt Framework, Prometheus, Grafana, and Docker





