LiveFull-stack product build

streaker

A habit tracking product built around streak visibility, responsive interactions, and serverless persistence.

Streaker - Habit Tracking Web App

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
Open project