Shared expense tracking for groups (friends, roommates, trips). iOS-first app built with Expo SDK 55, React Native, TypeScript, Expo Router, Tamagui (provider, themes, bottom sheets), and Supabase.
Primary tracking document: ROADMAP.md — weekly progress, notes, embedded screenshots, and video links
Screenshots: PNGs are organized by week under docs/roadmap-screenshots/ (same images as in the roadmap; useful for quick browsing in the repo or on GitHub).
Playlist (all weeks): YouTube playlist
| Week | Video |
|---|---|
| 1 | Week 1 Video |
| 2 | Week 2 Video |
| 3 | Week 3 Video |
| 4 | Week 4 Video |
| 5 | Week 5 Video |
- Node.js 20.19+ (Expo SDK 55)
- macOS + Xcode for iOS Simulator
- A Supabase project (URL + publishable/anon key)
-
Install dependencies
npm install
-
Environment
Copy
.env.exampleto.envand fill in:EXPO_PUBLIC_SUPABASE_URLEXPO_PUBLIC_SUPABASE_KEY
Never commit
.env. -
Supabase database (optional but required for real groups/friends)
If you use the linked Supabase project and CLI:
supabase db push
Migrations live under
supabase/migrations/. Seesupabase/README.mdfor archive/pg_cronnotes and RPC summary. Schema reference:docs/DATABASE.md. -
Run on iOS (development build)
This project uses native modules (e.g. MMKV). Use a development build, not Expo Go:
npm run ios
Or:
npx expo run:iosFirst run generates native projects via prebuild (if
ios/is ignored in git, this is expected on each fresh clone). The same flow works on a physical iPhone (USB or network) with a dev client — not Expo Go.
- Routes / screens:
src/app/— Expo Router (file-based routing) - UI components:
src/components/ - Design reference (Figma export prototype):
design/figma_template/— Vite/React bundle;design/figma_screenshots/for PNGs. Use for visuals when building RN screens (not run in production). - Supabase client:
src/lib/supabase.ts— factory + env (EXPO_PUBLIC_*); data access throughsrc/services/(seedocs/AGENTS.mdforsrc/stores/and the rest of the target layout). - Supabase SQL:
supabase/migrations/— apply withsupabase db push(supabase/README.md) - Docs:
docs/
| Command | Description |
|---|---|
npm start |
Start Metro (use with dev build on simulator/device) |
npm run ios |
Build and run iOS dev client |
npm run check |
Typecheck + lint — run before commits / PRs |
npm run typecheck |
tsc --noEmit (strict TS) |
npm run lint |
ESLint via Expo |
npm run lint:fix |
ESLint with auto-fix |
npm run reset-project |
Template helper — moves starter to app-example (use with care) |
npm run android |
Expo template — not a supported product target (iOS-only scope; see docs/AGENTS.md) |
npm run web |
Expo web — optional preview only; not the production target |