Skip to content

ritikch027/SplitMate

Repository files navigation

SplitMate

SplitMate is a mobile-first expense sharing app for groups, trips, roommates, and shared daily spending.

Built with Expo, React Native, and Supabase.

What Makes SplitMate Stand Out

  • 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

Download APK


Download from link below


Core Features

Group Management

  • Create groups for trips, flats, or events
  • Add members via phone numbers
  • Manage participation dynamically

Expense Tracking

  • Add expenses with equal splits or custom splits
  • Track payer vs participants
  • Categorize and review spending

Smart Balances

  • See who owes whom in real time
  • Group-level and overall balance views
  • Clear net settlement insights

Settlements

  • Record payments and auto-adjust balances
  • Launch UPI directly from balance breakdown
  • Maintain clean financial history

Notifications & Reminders

  • Payment reminders
  • Activity updates
  • Push and in-app alerts

User Flow Overview

Authentication

  • Phone number login with OTP
  • Session persistence
  • Rate limiting and resend cooldown

Expense Lifecycle

  1. Create a group
  2. Add members
  3. Log expenses
  4. Auto-calculate balances
  5. Settle directly through UPI from the balance view

Tech Stack

  • 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

Architecture Snapshot

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

Engineering Highlights

  • 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

Local Setup

npm install
npx expo start

Run on:

npm run android
npm run ios
npm run web

Environment Notes

  • 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

Roadmap

  • Personal expense tracking
  • Spending insights and analytics
  • Better settlement breakdown and confirmation flow
  • Settlement history with proofs
  • Improved onboarding experience

Why This Project Matters

SplitMate demonstrates product thinking, real-world problem solving, scalable app architecture, and clean separation of concerns.

License

Currently private. License to be defined before public release.

About

Mobile expense-sharing app built with Expo, React Native, and Supabase for splitting bills, tracking balances, and settling group expenses.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors