A minimalist mobile habit tracker built with Expo (React Native + TypeScript). Track daily habits, view streaks, and visualize progress with a calendar heatmap — all stored locally on-device.
- Add and complete daily habits with a single tap
- Automatic midnight reset — each day starts fresh
- Stats screen with streaks, completion percentages, and best day of week
- Calendar heatmap for visualizing consistency over time
- Dark theme throughout
- Local-first — all data stored on-device with SQLite
- Expo SDK 54 (managed workflow)
- expo-router — file-based navigation
- expo-sqlite — local persistence (direct SQL, no ORM)
- React Context + useReducer — state management
- react-native-svg — custom calendar heatmap
- TypeScript
npm install
npx expo startPress i for iOS simulator or a for Android emulator.
app/ # expo-router screens (_layout, index, stats)
src/db/ # database singleton + SQL queries
src/context/ # HabitContext (global state + DB sync)
src/components/ # UI components (HabitItem, AddHabitInput, CalendarHeatmap, etc.)
src/hooks/ # useStats hook
src/constants/ # colors.ts, typography.ts (dark theme)
MIT