Mutuals is an Expo / React Native friend-discovery app. People create an 18+ profile, browse profiles, send requests, and only reveal Snapchat/social handles after both sides mutually match.
This repo is the mobile app source of truth. The app is still an early production-prep prototype until Supabase, moderation operations, legal URLs, EAS credentials, and store accounts are configured.
- Expo managed workflow with Expo Router
- React Native 0.81 and React 19
- TypeScript
- Local prototype state with AsyncStorage
- Supabase setup docs and database schema for the production backend
- EAS Build profiles for development, preview, and future production builds
This repo uses pnpm.
pnpm installCopy .env.example to .env locally and fill these values manually. Do not commit .env.
EXPO_PUBLIC_SUPABASE_URL=
EXPO_PUBLIC_SUPABASE_ANON_KEY=
EXPO_PUBLIC_SUPPORT_EMAIL=
EXPO_PUBLIC_PRIVACY_URL=
EXPO_PUBLIC_TERMS_URL=pnpm startExpo Go should work for basic managed-workflow testing. Use a development build before relying on production auth, device permissions, or tester distribution.
See SUPABASE_SETUP.md for the full setup guide.
- Create a Supabase project manually.
- Run
supabase/schema.sqlin the Supabase SQL editor. - Enable email OTP and phone OTP in Supabase Auth.
- Configure SMS provider settings in Supabase for phone verification.
- Create a private Storage bucket for profile photos before public launch.
- Add moderation/admin procedures for approving profiles and handling reports.
- Add the Supabase URL and anon key to local
.envand to EAS environment variables.
See MODERATION.md for the manual review process required before public launch.
Run the scripts that exist in package.json:
pnpm sanity
pnpm typecheckIf a lint script is added later, run it before release as well.
npm install -g eas-cli
eas login
eas build:configure
eas build --profile development --platform android
eas build --profile preview --platform android
eas build --profile production --platform android
eas build --profile production --platform iosDo not submit production builds until Supabase, moderation, account deletion, terms, privacy policy, and store metadata are complete.
- Apple Developer account and Google Play Console account
- Real app icon/splash/store screenshots
- Privacy policy, terms, support email, and data deletion process
- Supabase RLS verified against real test users
- Manual moderation queue for profiles, photos, reports, and suspensions
- Spam/rate limits for requests, reports, and handle reveals
- Crash/error monitoring before public traffic
- Replace local-only state with authenticated backend accounts.
- Add real request, match, block, and report persistence.
- Add moderation tooling and admin review.
- Add privacy policy, terms, and onboarding consent screens.
- Run closed Android preview testing through EAS.
- Add iOS development build once Apple signing is ready.
- Prepare store listing assets only after safety requirements are complete.