LiveFull-stack product build
streaker
A habit tracking product built around streak visibility, responsive interactions, and serverless persistence.

Problem
Habit apps need low-friction check-ins and clear progress feedback. The challenge was keeping the interface quick while preserving reliable user and habit data.
Architecture
- React powers the client interface and daily habit interactions.
- Cloudflare Workers and Hono handle API routes close to users.
- PostgreSQL with Prisma stores users, habits, streaks, and completion history.
- TanStack Query keeps client state synchronized with server mutations.
Key decisions
- Used serverless deployment to keep the app lightweight and easy to scale.
- Modeled habit completions separately from habit definitions for cleaner history queries.
- Used query invalidation for habit updates instead of over-complicated client state.
Tradeoffs
- Serverless APIs reduce operations work, but require careful database connection handling.
- A simple streak model is easy to understand, but timezone rules need deliberate handling as the product grows.
What I learned
- Small daily-use products need fast feedback more than dense features.
- Data modeling decisions show up directly in the quality of progress views.
Stack
HonoJSPostgreSQLPrisma ORMReactJSTailwind CSSTypeScriptCloudflare WorkersTanstack React Query