How faizan-mk/rishta-and-rang-app works
Rishta & Rang is an Expo matchmaking app with Supabase-backed identity, profiles, discovery, matches, and messaging, plus subscription entitlements and push notifications. The principal journey is sign-up and profile setup, browsing compatible profiles, liking someone to form a match, then messaging; members can also request a transition to rishta. Routes wire the app’s feature screens, while providers and services hold state and perform backend operations. The README documents broader capabilities; sampled excerpts support detailed links for auth, matches/chat, and push, but not every feature’s internal wiring.
Main entry points: MatchesContext.tsx Matches state · DiscoveryContext.tsx Discovery state · pushService.ts Push service · authService.ts Auth service
Components 25
Entry and profiles
- Auth routes
src/app/(auth) - Auth screens
src/screens/auth - Auth state
src/store/AuthContext.tsx - Auth service
src/services/authService.ts - Profile screens
src/screens/profile - Profile state
src/hooks/useProfile.ts
Discovery and matching
- Main tabs
src/app/(tabs) - Discovery
src/screens/explore/ExploreScreen.tsx - Discovery state
src/store/DiscoveryContext.tsx - Discovery service
src/services/discoveryService.ts - Likes service
src/services/likesService.ts - Favorites
src/services/favoritesService.ts
Matches and messaging
- Matches screen
src/screens/matches/MatchesScreen.tsx - Matches state
src/store/MatchesContext.tsx - Matches and chat service
src/services/matchesService.ts - Chat thread
src/screens/matches/ChatScreen.tsx - Rishta profiles
src/screens/profile/RishtaProfileScreen.tsx
Safety and account
- Safety settings
src/screens/settings/PrivacySafetyScreen.tsx - Notifications
src/screens/notifications/NotificationsScreen.tsx
Platform integrations
- Billing service
src/services/billingService.ts - Push service
src/services/pushService.ts - Push function
supabase/functions/send-push/index.ts - Supabase
- RevenueCat
Other components
- Member
Connections 31
- Member → Auth routes: starts account
- Auth routes → Auth screens: routes to
- Auth screens → Auth state: authenticates through
- Auth state → Auth service: calls
- Auth service → Supabase: authenticates and reads profiles
- Member → Profile screens: sets up profile
- Profile screens → Profile state: loads profile
- Profile state → Auth service: uses profile operations
- Member → Main tabs: opens app
- Main tabs → Discovery: routes to explore
- Discovery → Discovery state: uses discovery state
- Discovery state → Discovery service: loads candidates
- Discovery service → Supabase: reads profiles
- Discovery state → Likes service: submits likes
- Likes service → Supabase: records likes and matches
- Member → Favorites: manages favorites
- Favorites → Supabase: reads and writes favorites
- Matches state → Matches and chat service: loads threads and messages
- Matches and chat service → Supabase: reads and writes match data
- Matches state → Matches screen: provides match state
- Matches screen → Chat thread: opens thread
- Chat thread → Matches state: uses thread state
- Matches state → Push service: notifies match events
- Member → Rishta profiles: views rishta profiles
- Member → Safety settings: manages privacy
- Member → Notifications: views alerts
- Push service → Push function: invokes
- Push function → Supabase: uses backend data
- Push service → Supabase: registers device token
- Member → Billing service: manages subscription
- Billing service → RevenueCat: checks entitlements