Local setup
Prerequisites
| Tool | Version | Notes |
|---|---|---|
| Node.js | 22.x | The CI pipeline runs on Node 22 |
| npm | 10.x | Ships with Node 22 |
| Git | any recent | |
| Expo Go app | latest | On your phone, for the fastest dev loop |
| Android Studio / Xcode | optional | Only for emulators/simulators and native builds |
Clone and install
bash
git clone git@github.com:vineethkrishnan/wespend.git
cd wespend
npm installlegacy-peer-deps
The repo ships an .npmrc with legacy-peer-deps=true. NativeWind pulls a web react-dom peer that is stricter than the React version Expo SDK 56 pins, so this flag keeps installs clean. It is expected, not a workaround you need to remove.
Environment variables
Copy the example file and fill in your Supabase project values:
bash
cp .env.example .envbash
# .env
EXPO_PUBLIC_SUPABASE_URL=https://YOUR-PROJECT.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=YOUR-ANON-KEYRuns without Supabase, but degraded
If the values are left as placeholders, the app still launches but onboarding is disabled and it shows a "Supabase not configured" notice. You need a real project to create a household and sync. See Supabase backend.
Verify the toolchain
bash
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm test # jest unit testsAll three should pass on a clean checkout. If they do, you are ready to run the app.