A fully customizable, offline-first routine & time tracker built with React Native + Expo. Track how you spend your 1440 minutes a day — by priority, with optional deadlines and sleep sign-off. Runs in Expo Go, or as a standalone Android APK.
- One-tap tracking — tap an activity to start a live timer; tap another to switch, or stop & save. Add a note to any session.
- Fully customizable activities — name, color (15 presets), icon (30 Ionicons), and an optional daily goal. Create, edit, archive, or delete.
- History — every session grouped by day with totals, start/end times, and notes. Log past time manually, or delete entries.
- Stats — Today / This Week breakdown per activity with progress bars, % of total, % of daily goal, plus a 7-day bar chart.
- Appearance — Light / Dark / System theme and 10 accent colors.
- Preferences — week starts on Monday or Sunday; keep the screen awake while tracking.
- Offline & private — all data is stored locally on the device via AsyncStorage. The running timer survives app restarts.
- Install Expo Go on your Android phone (Play Store).
- In this folder:
npm install npm start
- Scan the QR code in the terminal with Expo Go.
npm run androidlaunches straight onto a connected device/emulator.
- Expo SDK 56, React Native 0.85, React 19, TypeScript.
- State + persistence: a single
AppProvider(src/context/AppContext.tsx) holds all data and auto-saves to AsyncStorage (src/storage/store.ts). - Theming: token-based light/dark themes with a user-chosen accent (
src/theme/palette.ts). - Navigation: a lightweight state-driven bottom tab bar in
App.tsx(no extra nav deps → maximal Expo Go compatibility).
src/
├── context/AppContext.tsx # global state, timer logic, persistence
├── storage/store.ts # AsyncStorage load/save + defaults/seed
├── theme/palette.ts # theme tokens, accent/color/icon presets
├── types.ts # data models
├── utils/time.ts # duration/date formatting helpers
├── hooks/useNow.ts # ticking clock for the live timer
├── components/ # Card, Button, Sheet, ActivityEditor, …
└── screens/ # Timer, Stats, History, Activities, Settings
Activity { id, name, color, icon, dailyGoalMinutes, archived } ·
TimeEntry { id, activityId, start, end, note } ·
RunningTimer { activityId, start, note } — all persisted under one key.