A social expense tracker with a karma point system.
Track expenses, split bills, and earn karma points for your contributions.
π₯ Watch Demo Video Β Β Β |Β Β Β π₯ Download APK
- Create & Join Groups: Easily create expense groups for trips, apartments, or friend circles
- Member Management: Add/remove members, track their contributions
- Group Settings: Configure group details and preferences
- Add Expenses: Record expenses with descriptions, amounts, and proof images
- Proof Images: Attach photos as proof for each expense
- Smart Splitting: Split bills equally or by specific amounts
- Tag People: Assign expenses to specific group members
- Karma Score: Earn karma points for spending money on the group
- Leaderboards: Compete with friends on who contributes most
- Medals & Rankings: Visual rankings with gold, silver, bronze medals
- Real-time Updates: Karma scores update automatically
Note: To prevent abuse, this app has a global daily limit of 10 OTP requests.
If you see the "Limit Reached" message, please use the following Demo Credentials to access the app in "View Only" mode:
| π± Phone Number | π OTP |
|---|---|
| 7233665588 | 625285 |
- Daily Expenses: Max 10 expenses per user per day.
lib/
βββ main.dart # App entry point & Firebase initialization
βββ models/ # Data models
β βββ expense.dart # Expense model with properties
β βββ group.dart # Group model with members
β βββ groupmember.dart # Group member model
β βββ user.dart # User profile model
βββ pages/ # App screens
β βββ auth_choice_page.dart # Login/Signup choice
β βββ login_page.dart # Login screen
β βββ signup_page.dart # Registration screen
β βββ main_page.dart # Main navigation
β βββ groups_page.dart # Groups list
β βββ add_group_page.dart # Create group
β βββ group_detail_page.dart # Group expenses & details
β βββ add_expense_page.dart # Add new expense
β βββ profile_page.dart # User profile & stats
βββ providers/ # State management (Riverpod)
β βββ group_providers.dart # Group data providers
βββ theme/ # App theming
β βββ app_theme.dart # Theme configuration
βββ utils/ # Utility functions
β βββ karma_calculator.dart # Karma point calculations
β βββ leaderboard_utils.dart # Leaderboard sorting
β βββ number_formatter.dart # Number formatting
β βββ image_compressor.dart # Image compression
βββ widgets/ # Reusable UI components
βββ group_card.dart # Group preview card
βββ expense_card.dart # Expense display
βββ leaderboard_card.dart # Leaderboard entry
βββ stat_card.dart # Statistics display
βββ proof_image.dart # Expense proof image
βββ ...
| Category | Technology |
|---|---|
| Framework | Flutter 3.8+ |
| Language | Dart |
| Backend | Firebase (Firestore, Auth, Storage) |
| State Management | Riverpod |
| Authentication | Firebase Auth |
| Database | Cloud Firestore |
| Storage | Firebase Storage (images) |
| Analytics | Firebase Analytics |
| Crash Reporting | Firebase Crashlytics |
| Image Handling | image_picker, flutter_image_compressor |
| Camera | camera |
| Permissions | permission_handler |
flutter- UI frameworkfirebase_core- Firebase initializationflutter_riverpod- State managementintl- Internationalization & formatting
firebase_auth- Authenticationcloud_firestore- Databasefirebase_storage- File storagefirebase_analytics- Analyticsfirebase_crashlytics- Crash reporting
image_picker- Image selectioncamera- Camera captureflutter_image_compress- Image compressioncloudinary_flutter- Cloud image hosting
permission_handler- Runtime permissionsshared_preferences- Local storageuuid- Unique ID generationhttp- HTTP requestsflutter_dotenv- Environment variables
- Flutter SDK 3.8.1 or higher
- Firebase project set up
- Dart SDK 3.0+
-
Clone the repository
git clone https://github.com/yourusername/karma_split.git cd karma_split -
Install dependencies
flutter pub get
-
Set up Firebase
- Create a Firebase project at Firebase Console
- Add Android and iOS apps
- Download
google-services.json(Android) andGoogleService-Info.plist(iOS) - Enable Authentication (Email/Password)
- Create Firestore database
- Set up Storage bucket
-
Configure environment
# Create .env file cp .env.example .env # Add your Firebase config keys
-
Run the app
flutter run
| Screen | Description |
|---|---|
| Auth Choice | Choose between login and signup |
| Login | Email/password authentication |
| Signup | Create new account |
| Groups | List of all your groups |
| Group Detail | Expenses, members, and karma leaderboard |
| Add Expense | Record new expense with proof |
| Profile | User stats and karma points |
The karma point system rewards members who contribute financially to the group:
- Earning Karma: Each βΉ1 spent earns 1 karma point
- Leaderboard: Members ranked by total karma earned
- Medals: Top 3 get gold π₯, silver π₯, bronze π₯ medals
- Reset: Karma resets monthly for fresh competition
Update version in pubspec.yaml:
version: 1.0.0+1
# major.minor.patch+buildNumberChange app name in:
android/app/src/main/AndroidManifest.xml(android:label)ios/Runner/Info.plist(CFBundleDisplayName)
Modify in lib/theme/app_theme.dart:
static const Color primary = Color(0xFF6200EE);
static const Color secondary = Color(0xFF03DAC6);- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Nitin Dave
- GitHub: Nitin Dave
- Email: nitindave2111@gmail.com
