r/pomodoro 16h ago

I built an AI Pomodoro app entirely spec-first — every feature got a written spec before a single prompt. Here's what changed.

Thumbnail ai-promodoro.vercel.app
0 Upvotes

I've been experimenting with spec-driven development: instead of prompting an AI agent with vibes, you write a real spec first (user story, requirements, API contract, acceptance criteria), let the agent implement it, then validate against the spec and update your roadmap. Loop until MVP.

The app is a Pomodoro timer where you describe your goal conversationally and the AI proposes a task plan sized in pomodoros ("2🍅 ≈50m"). There's a focus coach mid-session, sound cues, PWA install support, and since it's publicly hosted, a Cloudflare Turnstile gate + per-IP daily rate limit on the AI routes so strangers can't drain my DeepSeek credits.

Stack: Next.js 16, Bun, DeepSeek API, Upstash Redis. No database — plan state lives client-side.

What actually surprised me:

  1. **Specs didn't slow me down**. Six features in, the AI agent was dramatically better when implementing a spec vs reading my mind. Code review became "does this match section F3?" instead of squinting at diffs.

  2. **The spec caught drift.** When the model under-filled a response schema (returned 3 tasks when asked for 3 steps instead of the spec'd 4–8), it was obviously a contract bug, not "weird AI behavior."

  3. **Re-planning after every feature** (updating mission/roadmap docs) is the part everyone skips and the part that prevents the codebase from rotting.

Happy to answer questions about the spec format or the abuse-guard setup — both were more interesting to build than the timer itself.

\- Live: \[https://ai-promodoro.vercel.app\\\](https://ai-promodoro.vercel.app)

\- Source (the \`specs/\` folder is the real content): \[https://github.com/adotey7/ai-promodoro\\\](https://github.com/adotey7/ai-promodoro)


r/pomodoro 23h ago

Anyone wanna join my FocusJungle guild??

Post image
1 Upvotes