Pomodoro Timer

Work in focused sprints with regular breaks. No account needed — the timer runs right here on this device. Sign in to keep your focus history and stats, and to pick up your session from any device.

Loading…

How it's built

  • Pattern: server-side state machine — phases and transitions live in the backend domain model, not the browser.
  • Timing: pause-safe accumulator plus wall-clock segment start; the client only extrapolates the countdown.
  • Stack: Next.js + Fastify + PostgreSQL, with a partial unique index enforcing one active session per user.
  • Frontend: this screen is a state machine too — a discriminated union renders exhaustively, so illegal UI states don't compile.
Read the full pattern write-up →
Pomodoro Timer — stop.procrastin.ar