SplitMate is a mobile-first expense sharing app for groups, trips, roommates, and shared daily spending.
Built with Expo, React Native, and Supabase.
- Real product, not a demo
- Realtime architecture
- OTP-based authentication
- Non-trivial business logic for balances, settlements, and split calculations
- Push and in-app notifications
- Direct UPI settlement flow from the balance breakdown screen
- Responsive mobile UI with relative sizing for key inputs and actions
- Create groups for trips, flats, or events
- Add members via phone numbers
- Manage participation dynamically
- Add expenses with equal splits or custom splits
- Track payer vs participants
- Categorize and review spending
- See who owes whom in real time
- Group-level and overall balance views
- Clear net settlement insights
- Record payments and auto-adjust balances
- Launch UPI directly from balance breakdown
- Maintain clean financial history
- Payment reminders
- Activity updates
- Push and in-app alerts
- Phone number login with OTP
- Session persistence
- Rate limiting and resend cooldown
- Create a group
- Add members
- Log expenses
- Auto-calculate balances
- Settle directly through UPI from the balance view
- Frontend: Expo, React Native
- Navigation: Expo Router, React Navigation
- Backend: Supabase Auth, DB, Realtime, Edge Functions
- Animations: React Native Reanimated
- Notifications: Expo Notifications
- UX: Responsive layouts, mobile-first forms, and streamlined settlement actions
app/ -> Expo entry and routing
src/screens/ -> App screens and flows
src/components/ -> Reusable UI components
src/services/ -> Business logic (auth, expenses, balances)
src/context/ -> Global state and session management
src/utils/ -> Helpers and formatting
supabase/migrations/ -> Database schema
supabase/functions/ -> Edge/backend logic
- Domain-driven logic for expense splitting, netting, and settlement flows
- Realtime-first collaboration
- Full-stack ownership across frontend, backend, and infra
- Mobile production patterns for auth, notifications, navigation, and environment config
npm install
npx expo startRun on:
npm run android
npm run ios
npm run web- Uses Supabase environment variables
- OTP auth currently uses Twilio free-tier constraints, so the app includes dummy test credentials
- Dummy phone number:
1234567890 - Dummy OTP:
123456 - The same OTP flow can be used with a paid Twilio account in production
- Firebase config required for Android notifications
- Secrets are excluded from version control
- Personal expense tracking
- Spending insights and analytics
- Better settlement breakdown and confirmation flow
- Settlement history with proofs
- Improved onboarding experience
SplitMate demonstrates product thinking, real-world problem solving, scalable app architecture, and clean separation of concerns.
Currently private. License to be defined before public release.