Skip to content

Dr-Usman/SceneSplit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SceneSplit

SceneSplit logo

Split group expenses, track who owes what, and settle up β€” fully offline.

SceneSplit is a Flutter expense-splitting app for trips, roommates, dinners, and events. No account, no cloud β€” everything stays on your device.

Screenshots

Home (light) Home (dark)
Home dashboard (light) Home dashboard (dark)
Group detail Pending summary
Group detail Home group pending summary sheet

Features

  • People & groups β€” Manage a global people pool from Profile; create groups with emoji icons and members
  • Flexible splits β€” Equal, exact amounts, or percentage, with live validation; choose who is included per expense
  • Balances & settlements β€” Live balances across groups, smart settlement suggestions, and editable settlement records
  • Insights β€” Group expense total and member-share pie chart on group detail
  • Currency β€” App-wide default for home summary and new groups; each group has its own currency
  • Appearance β€” System, light, or dark theme (saved and applied before first frame)
  • Backup β€” Export and import a local database backup (non-web platforms)
  • Legal & about β€” In-app privacy policy, terms of service, and app version
  • Offline-first β€” All data stored locally with Drift (SQLite); no sign-in required

Tech Stack

Layer Technology
Framework Flutter 3.44 / Dart 3.12
State management Riverpod 3
Database Drift 2.34 (SQLite)
Architecture Feature-first + service / repository
Charts fl_chart
Navigation Material navigation (go_router listed for future use)

Prerequisites

  • Flutter SDK (3.44.5 stable or compatible)
  • Dart SDK ^3.12.2

Getting Started

flutter pub get
dart run build_runner build --delete-conflicting-outputs   # only after schema changes
flutter run

Project Structure

lib/
β”œβ”€β”€ main.dart / app.dart
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ constants/     # currencies, group emojis, assets
β”‚   β”œβ”€β”€ theme/
β”‚   └── utils/         # money formatting
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ tables.dart
β”‚   β”œβ”€β”€ app_database.dart
β”‚   └── app_database.g.dart
β”œβ”€β”€ repositories/      # user, group, expense, settlement
β”œβ”€β”€ services/          # split engine, balance
β”œβ”€β”€ providers/         # Riverpod streams and derived state
β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ onboarding/
β”‚   β”œβ”€β”€ home/
β”‚   β”œβ”€β”€ groups/        # create, edit, detail
β”‚   β”œβ”€β”€ expenses/
β”‚   β”œβ”€β”€ settlements/
β”‚   β”œβ”€β”€ profile/       # appearance, currency, people, data & backup
β”‚   β”œβ”€β”€ legal/
β”‚   └── about/
└── shared/widgets/

Database Schema

All money amounts are stored as integer cents.

Table Purpose
Users Global people pool (id, name, colorIndex, isCurrentUser)
AppSettings Single row: default currencyCode, themeMode
Groups Group name, emoji, currencyCode
GroupMembers Group ↔ user membership
Expenses Group expenses (amountCents, paidById, splitType, note, date)
ExpenseSplits Per-user split amounts
Settlements Recorded payments between members

Commands

flutter pub get
flutter analyze
flutter test
dart run build_runner build --delete-conflicting-outputs
flutter run

See AGENTS.md for dependency pins, architecture conventions, and codegen notes.

Future Enhancements

  • Backend sync
  • Multi-currency with exchange rates
  • Receipt scanning
  • Export (PDF / CSV)
  • Localization

Contributing

CI, PR checks, releasing, and GitHub secrets are documented in CONTRIBUTING.md.

License

MIT

About

🧾 SceneSplit β€” An expense splitting app inspired by Splitwise. Split expenses with friends, track balances, and settle up easily.

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors