← Back to Projects
Gallery
Overview
I kept reaching for Spotify and the same three websites on autopilot mid-focus. Tiny Pomodoro is the fix: a compact, always-on-top Windows timer in C# and WPF that removes those distractions during a session and pulls in my real task list, then restores everything the moment I pause. Built with Claude Code, as a way to explore AI-assisted development on a problem I actually wanted solved.
Technical Highlights
- Website blocking via the hosts file.
HostsFileBlockerwrites0.0.0.0redirects for chosen domains into the Windows hosts file and flushes the DNS cache, then removes them again on pause or break. SeeHostsFileBlocker.cs. - Process killing with a watchdog.
ProcessBlockerkills named apps such as Spotify on focus start and re-kills them on every tick, so they cannot quietly be reopened until the session ends. SeeProcessBlocker.cs. - Edge-triggered focus guard.
FocusGuardmakes sure block and unblock only fire on real state transitions rather than on every timer tick. SeeFocusGuard.cs. - Todoist and ClickUp integration. Vendor-specific gateways fetch tasks over HTTP with retry and backoff, routed through a common
ITaskGatewayso the UI stays vendor-neutral. SeeHttpTodoistGateway.cs. - Undoable completion. Completing a task is held for a couple of seconds before it commits, so an accidental tap can be taken back. See
SessionController.cs. - Stats that actually surface. A seven-day by twenty-four-hour heatmap and daily streaks are computed from a JSON session log. See
SessionStats.cs.
A SessionController choreographs the timer, task list and blockers and is the one piece I kept fully unit-tested; API tokens are stored encrypted with DPAPI.
Learnings
Even on a personal tool, keeping the coordination logic cleanly separated and unit-tested paid off, and moving fast without letting the design drift was the real exercise.