All projectsProduct · 2025

TrackBit

A habit tracking app built with React, Node.js, and PostgreSQL. Features streak tracking, analytics dashboards, and customizable reminders to help build better routines.

Stack
ReactTypeScriptNode.jsExpressPostgreSQLTailwind CSSDrizzle ORMZustand

Case study

Problem
Habit trackers either oversimplify (a checkbox) or overwhelm (spreadsheets nobody keeps up with).
What I did
Built a full-stack habit tracker with streak logic, weekly analytics, and a dashboard people actually open twice a day.
Context
Habit trackers either oversimplify to a checkbox or overwhelm with spreadsheets nobody keeps up with. I wanted something in between — enough structure to see patterns, not enough friction to abandon after a week.
Decisions
Streaks are computed server-side and cached, not recalculated on every render — the analytics dashboard stayed fast even with a year of daily entries. Chose Postgres over a document store specifically so streak queries could be plain SQL instead of application-layer logic.
Outcome
A working product with streak tracking, weekly analytics, and a dashboard that's actually opened daily rather than abandoned after onboarding.

Overview

TrackBit is a habit tracking application that helps users build and maintain positive daily routines. With an intuitive interface and insightful analytics, it makes it easy to stay accountable and visualize progress over time.

Features

  • Create and manage daily, weekly, and custom habits
  • Visual streak tracking with calendar heatmaps
  • Progress analytics with charts and completion percentages
  • Customizable reminders and notifications
  • Responsive design that works on desktop and mobile
  • User authentication with secure session management

How It Works

Users create habits with customizable schedules and goals. Each day, they check off completed habits from their dashboard. TrackBit records completions and calculates streaks, providing visual feedback through heatmaps and charts. The backend uses Drizzle ORM with PostgreSQL for efficient data storage and retrieval, while Zustand manages client-side state for a snappy user experience.