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.
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.