Shipped · Product builder · Personal project · 2026
How I shipped a cross-platform Pomodoro before I could build native apps
Pomo started from an open-source web Pomodoro. I forked it into Android, macOS, and a PWA, and wired Notion tasks so focus sessions attach to real work, without platform-engineer experience.
- Flutter
- PWA
- Notion
- Android
- macOS
Problem
I wanted a cross-platform Pomodoro (macOS, Android, PWA) tied to Notion tasks when I did not have the coding experience to ship native apps the usual way. Off-the-shelf timers were either single-platform or disconnected from my task list.
Metrics
- One Flutter codebase for Android, macOS (menu bar + floating timer), and a web PWA
- Notion task database plus hourly timeline so sessions log against real tasks, not a nameless clock
- Webhook hooks for Home Assistant ambient light, kept from the upstream OSS timer
Decisions
- Start from recoskyler's open-source Pomo instead of writing a timer from scratch, then add platforms and Notion.
- Keep Notion writes behind a shared access code on the web PWA. Recruiters should not need my task database.
- Ship GitHub as the public CTA. Prod /focus/ is owner-gated; there is no ungated Vercel preview with mock data (unlike Health Hub).
Outcomes
- Daily driver across Android, macOS, and the PWA: start a lap, pick a Notion task, log the hour.
- Hourly tracker and activity tags sync between the PWA and the macOS app through the configured Notion timeline database.
- Public artifact is the OSS repo. Live /focus/ stays on Rawshn private nav.
I wanted a cross-platform Pomodoro (macOS, Android, PWA) tied to Notion tasks when I did not have the coding experience to ship native apps the usual way. Pomo started from recoskyler’s open-source web timer (webhooks, themes, Home Assistant RGB). I forked it, added Android and macOS shells, and wired a Notion task database so a lap is not anonymous minutes.
Live demo: public GitHub (rawshn97/pomo). Prod /focus/ is access-gated for Notion (access code). There is no ungated Vercel preview with mock data, so hiring CTAs go to GitHub, not /focus/.
GitHub →
Public fork. No access code.
What I added
- Platforms: Android, macOS (menu bar, floating timer, launch at login), and a web PWA served for me at
/focus/. - Notion: task picker plus hourly timeline. Work sessions attach to tasks I already track.
- Webhooks: still fire RGB payloads so Home Assistant can match the timer ring.
I do not publish install counts. The receipt is that I run it every workday, and the code is public.