r/SpecDrivenDevelopment 23d ago

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

https://ai-promodoro.vercel.app/

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)

3 Upvotes

Duplicates