Introduction
WeSpend is a household expense tracker for couples and families who share a monthly budget. One person funds a shared monthly pot, the household tracks daily spending against daily and weekly limits, and at the end of each week the app works out who needs reimbursing. Every member tracks from their own phone and sees changes in real time.
Why it exists
Plenty of households run this on a WhatsApp group: share receipts, total it up at the end of the week, settle by hand. WeSpend replaces that with a purpose-built tool - automatic limits, live sync across phones, and a one-tap weekly settlement.
What this documentation covers
- Development - get the app running locally, wire up Supabase, run the tests.
- Deployment - build installable apps with EAS, the CI pipeline, and how releases are cut.
- Architecture - how the code is structured and why.
Tech stack at a glance
| Layer | Choice |
|---|---|
| App | Expo + React Native + TypeScript |
| Navigation | Expo Router |
| Styling | NativeWind (Tailwind for RN) |
| Server state | TanStack Query |
| Local state | Zustand |
| Forms | React Hook Form + Zod |
| Offline cache | expo-sqlite |
| Backend | Supabase (Postgres + Auth + RLS + Realtime) |
| Auth | Anonymous + invite code |
See ADR-001 for the rationale behind these choices.