A beautiful and intuitive expense splitting application built with Flutter
Features β’ Installation β’ Usage β’ Architecture β’ Contributing
Split Expenses is a modern, feature-rich mobile application that simplifies the process of splitting expenses among friends, roommates, or groups. Inspired by Splitwise, this app provides an elegant solution for tracking shared expenses and settling debts.
Whether you're planning a trip with friends, sharing rent with roommates, or managing group expenses, Split Expenses makes it easy to keep track of who owes what and ensures everyone pays their fair share with real-time sync and integrated payment features.
- Group Management:
- Create unlimited expense groups with custom names.
- Multi-group dashboard to track different social circles (Trips, Home, Work).
- Delete groups with safety confirmation to prevent data loss.
- Smart Group Partitioning:
- Automatically categorizes groups into Outstanding Receivables (Groups where you are owed money).
- Outstanding Payables (Groups where you owe money).
- Settled / Others (Clean groups with no pending debts).
- Expense Tracking:
- Add expenses with description, amount, and date.
- Quick edit/delete for existing expenses.
- Detailed history log of every transaction within a group.
- Smart Splitting Engine:
- Automatically calculates equal splits among all or selected participants.
- Handles complex fractional divisions to ensure the total is accurate.
- Direct UPI Integration:
- One-tap icons for Google Pay, Paytm, and PhonePe directly on the participant card.
- Deep-linking support to open payment apps with the exact amount and recipient details.
- Push Notification Reminders:
- Group owners can send professionally crafted "Reminders" to members.
- Integrated via Firebase Cloud Messaging (FCM) for real-time alerts.
- Payment Settlement Notes:
- Add optional text notes when marking a payment as paid for audit trails.
- Notes are visible to all members for transparency.
- Comprehensive Settle Up Screen:
- Dedicated UI to manage who is paying whom.
- Instant balance updates upon settlement confirmation.
- Firebase Authentication:
- Secure Email/Password login.
- Mandatory Email Verification for account security.
- Firebase App Check:
- Enterprise-grade protection to prevent unauthorized API access and bot traffic.
- Real-time Cloud Sync:
- Data stays synchronized across multiple devices using Cloud Firestore.
- Conflict resolution for simultaneous updates.
- Local Persistence (Offline Mode):
- Powered by Hive (NoSQL) for lightning-fast local data access.
- Add expenses while offline; they sync automatically once connectivity is restored.
- Material 3 Design System:
- Vibrant, modern color palettes (vibrant greens for receivables, reds for payables).
- Modern typography using Google Fonts (Poppins/Inter).
- Advanced UI Components:
- Image Cropper: Custom crop your profile picture after selection for a perfect look.
- Staggered Animations: Smooth list entrance animations for a premium feel.
- Glassmorphism Effects: Subtle blur and transparency in UI cards.
- Dynamic Dark Mode:
- Eye-friendly dark theme that adapts to system settings.
- Contact Integration:
- Seamlessly import names and details from your phone's address book using
flutter_contacts.
- Seamlessly import names and details from your phone's address book using
- Flutter SDK (^3.8.1)
- Dart SDK (^3.8.1)
- Android Studio or VS Code
- Firebase Account
- Clone the repo:
git clone https://github.com/keyur-369/split_expenses.git
- Fetch packages:
flutter pub get
- Generate local adaptors:
flutter pub run build_runner build --delete-conflicting-outputs
- Firebase Config: Add
google-services.json(Android) andGoogleService-Info.plist(iOS). - Run:
flutter run --release
- Framework:
Flutter(for high-performance cross-platform UI) - State management:
Provider(for reactive UI updates) - Primary Database:
Cloud Firestore(Real-time NoSQL) - Local Cache:
Hive(Fast local storage) - Notification:
FCM(Firebase Cloud Messaging) - Security:
App Check&Auth Service
- MVVM Architecture: Clean separation between UI, Logic (Services), and Data (Models).
- Service-Oriented: Centralized logic for Groups, Auth, and Notifications.
- Repository Pattern: Abstracted data layer for seamless Offline-to-Online transitions.
Required Permissions (Added in AndroidManifest.xml):
READ_CONTACTS: To import friends.POST_NOTIFICATIONS: For payment alerts (Android 13+).INTERNET: For Cloud Sync.
Required Keys (Added in Info.plist):
NSContactsUsageDescription: Description for contact access.FirebaseAppDelegateProxyEnabled: Set toNOfor custom notification handling.
Run the full suite to verify logic:
flutter testKeyur Mistry
- Dedicated to building high-quality, user-centric mobile solutions.
- GitHub: @keyur-369
If you find this project useful, please consider giving it a βοΈ
Made with β€οΈ using Flutter
You can download the latest pre-release version of the application from the link below: