FamFi is a React Native (Expo) application designed to help children learn financial responsibility through chores, rewards, and interest-based savings buckets.
- Node.js (LTS)
- Supabase Account
- Expo Go app on your mobile device (optional, for native testing)
npm installCreate a .env file in the root directory and add your Supabase credentials:
EXPO_PUBLIC_SUPABASE_URL=your_supabase_project_url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
You can find these in your Supabase Project Settings > API.
To set up your database schema and permissions, you can use either the manual SQL editor or the Supabase CLI.
- Go to your Supabase Dashboard.
- Open the SQL Editor.
- Create a new query and paste the contents of the following files (in order):
supabase/migrations/00001_initial_schema.sqlsupabase/migrations/00002_fix_families_rls.sql
- Click Run.
If you are deploying to a remote Supabase project:
- Login:
npx supabase login - Link:
npx supabase link --project-ref your_project_ref_id - Push:
npx supabase db push
If you are running Supabase locally via Docker:
- Start Supabase (if not already running):
npx supabase start
- Apply Migrations:
The CLI automatically applies migrations in
supabase/migrationswhen the database starts. To manually reset and apply them all again:Note: Neithernpx supabase db reset
supabase loginnorsupabase linkare required for local development.
This will create all necessary tables (families, users, chores, buckets, etc.), enums, and Row Level Security (RLS) policies.
npm run webnpx expo startFollow the terminal instructions to open the app on iOS (i) or Android (a).
- Framework: Expo (React Native)
- Routing: Expo Router (File-based)
- State Management: Zustand
- Database/Auth: Supabase
- UI Library: React Native Paper
- Icons: Material Community Icons (@expo/vector-icons)
app/: Expo Router pages(auth)/: Login and signup flow(parent)/: Parent dashboard and management(child)/: Child-specific views (future)
components/: Reusable UI componentsstore/: Zustand stores for Auth, Family, and Settingsconstants/: Theme, spacing, and other global constantssupabase/: Database migrations and snippets
To make FamFi available to the public, you need to deploy both the Supabase Backend and the Expo Frontend.
- Create a Cloud Project: Go to Supabase.com and create a new project.
- Link your Local Project: In your terminal, link your codebase using the Reference ID:
npx supabase link --project-ref <your-project-ref-id>
- Push to Production: Push all tables, policies, and RPC functions directly to the cloud:
npx supabase db push
- Configure Cloud Settings: Go to your Supabase Cloud Dashboard and:
- Turn Anonymous Sign-ins ON (required for Child Login).
- Input your Google OAuth Credentials (for Parent login).
- Update your
.envfile with your ProductionSUPABASE_URLandSUPABASE_ANON_KEY.
Because FamFi is built with Expo Router, you can publish this single codebase as an iOS App, an Android App, and a Website.
- Set up EAS: Install the Expo Application Services (EAS) CLI:
npm install -g eas-cli eas login
- Build the Binaries: Generate the
.ipa(Apple) and.aab(Android) files:eas build --platform all
- Submit to the Stores: Send the builds to Apple App Store Connect and Google Play Console:
eas submit --platform all
- Generate Static Files:
This compiles a highly optimized production website inside a new
npx expo export/distfolder. - Host the Website: Drag and drop that
/distfolder into a hosting provider like Vercel or Netlify for instant free deployment.