How shwan26/sabaib-android works
SabaiB is an Android receipt-based bill-splitting app. Users scan or enter a receipt, review its items and charges, invite participants by code or QR, coordinate item claims or an even split, then settle and track payments. BillViewModel is the central session layer connecting UI stages to persistence. The README provides no product details, so this map relies on the supplied source index and excerpts; unsampled capabilities and connections are shown conservatively.
Main entry points: BillViewModel.kt Bill session · ScanScreen.kt Receipt scanning · ReviewScreen.kt Receipt review · JoinBillScreen.kt Join by code or QR
Components 22
App and accounts
- App entry
app/src/main/java/com/smnc/sabaib/MainActivity.kt - Navigation
app/src/main/java/com/smnc/sabaib/navigation/AppNavHost.kt - Authentication
app/src/main/java/com/smnc/sabaib/data/AuthRepository.kt - Profile and plan
app/src/main/java/com/smnc/sabaib/ui/profile/ProfileViewModel.kt
Receipt preparation
- Receipt scanning
app/src/main/java/com/smnc/sabaib/ui/scan/ScanScreen.kt - Receipt OCR
app/src/main/java/com/smnc/sabaib/domain/scan/GeminiReceiptScanner.kt - Receipt parsing
app/src/main/java/com/smnc/sabaib/domain/scan/ReceiptParser.kt - Receipt review
app/src/main/java/com/smnc/sabaib/ui/review/ReviewScreen.kt - Item editor
app/src/main/java/com/smnc/sabaib/ui/review/EditableReceiptItem.kt
Shared bill
- Bill session
app/src/main/java/com/smnc/sabaib/viewmodel/BillViewModel.kt - Bill state
app/src/main/java/com/smnc/sabaib/model/Bill.kt - Join by code or QR
app/src/main/java/com/smnc/sabaib/ui/join/JoinBillScreen.kt - Groups and bills
app/src/main/java/com/smnc/sabaib/ui/groups/GroupsViewModel.kt
Split and settle
- Item splitting
app/src/main/java/com/smnc/sabaib/ui/split/SplitScreen.kt - Charge calculation
app/src/main/java/com/smnc/sabaib/domain/charges/ChargeCalculator.kt - Payment experience
app/src/main/java/com/smnc/sabaib/ui/payment/PaymentScreen.kt
Data services
- Bill persistence
app/src/main/java/com/smnc/sabaib/data/BillRepository.kt - Plans and billing
app/src/main/java/com/smnc/sabaib/data/BillingRepository.kt - Supabase backend
app/src/main/java/com/smnc/sabaib/data/SupabaseProvider.kt
Other components
- Bill participants
- Supabase data store
- Gemini service
Connections 26
- Bill participants → App entry: opens app
- App entry → Navigation: starts
app/src/main/java/com/smnc/sabaib/MainActivity.kt - Bill participants → Receipt scanning: scans receipt
- Receipt scanning → Receipt OCR: scans image
app/src/main/java/com/smnc/sabaib/ui/scan/ScanScreen.kt - Receipt scanning → Receipt parsing: fallback parses
app/src/main/java/com/smnc/sabaib/ui/scan/ScanScreen.kt - Receipt scanning → Bill session: updates items
app/src/main/java/com/smnc/sabaib/ui/scan/ScanScreen.kt - Bill participants → Receipt review: edits receipt
- Receipt review → Item editor: renders items
app/src/main/java/com/smnc/sabaib/ui/review/ReviewScreen.kt - Receipt review → Charge calculation: calculates charges
app/src/main/java/com/smnc/sabaib/ui/review/ReviewScreen.kt - Receipt review → Bill session: updates bill
app/src/main/java/com/smnc/sabaib/ui/review/ReviewScreen.kt - Bill participants → Join by code or QR: joins bill
- Join by code or QR → Bill session: adopts participant
app/src/main/java/com/smnc/sabaib/ui/join/JoinBillScreen.kt - Join by code or QR → Bill persistence: looks up bill
app/src/main/java/com/smnc/sabaib/ui/join/JoinBillScreen.kt - Join by code or QR → Authentication: resolves user
app/src/main/java/com/smnc/sabaib/ui/join/JoinBillScreen.kt - Bill session → Bill persistence: loads and saves
app/src/main/java/com/smnc/sabaib/viewmodel/BillViewModel.kt - Bill session → Bill state: holds state
app/src/main/java/com/smnc/sabaib/viewmodel/BillViewModel.kt - Bill persistence → Supabase data store: reads and writes
app/src/main/java/com/smnc/sabaib/data/BillRepository.kt - Bill participants → Item splitting: claims items
- Item splitting → Bill session: updates claims
app/src/main/java/com/smnc/sabaib/ui/split/SplitScreen.kt - Bill participants → Payment experience: settles share
- Payment experience → Bill session: reads bill state
- Profile and plan → Authentication: checks session
app/src/main/java/com/smnc/sabaib/ui/profile/ProfileViewModel.kt - Profile and plan → Supabase data store: loads profile
- Supabase backend → Supabase data store: configures access
- Bill participants → Groups and bills: browses bills
- Bill participants → Plans and billing: manages plan