A personal expense tracking app built with Flutter, following Clean Architecture and Riverpod for state management.
SpendWise uses Clean Architecture principles with a feature-first structure.
lib/
├── core/ # Shared app-wide modules
│ ├── constants/ # App constants (dimensions, strings, images)
│ ├── di/ # Dependency injection setup using GetIt
│ ├── network/ # Network clients and configurations
│ ├── services/ # Firestore, Firebase, etc.
│ ├── theme/ # Colors, typography, app theme
│ ├── utils/ # Helpers and extensions
│ └── widgets/ # Shared UI components
│
├── features/ # Each feature follows Clean Architecture layers
│ ├── authentication/
│ │ ├── data/
│ │ ├── domain/
│ │ └── presentation/
│ ├── add_expense/
│ ├── home/
│ ├── invalid_expense/
│ ├── splash/
│ └── date_wise_expense/
│
├── firebase_options.dart
└── main.dart
- Flutter 3.8.0+
- Dart 3
- Firebase Authentication
- Cloud Firestore
- Riverpod 3.0.2 for state management
- GetIt for dependency injection
- Shared Preferences for local storage
- Internet Connection Checker for connectivity
- fl_chart for analytics visualization
- User authentication with Firebase
- Add, view, and categorize expenses
- Daily and weekly expense insights
- Offline support and auto-sync
- Analytics via charts
-
Clone the repository:
git clone https://github.com/yourusername/spendwise.git
-
Navigate to the project:
cd spendwise -
Install dependencies:
flutter pub get
-
Setup Firebase:
-
Add your
google-services.jsonandGoogleService-Info.plist -
Ensure
firebase_options.dartis generated via:flutterfire configure
-
-
Run the app:
flutter run
Run all unit and widget tests:
flutter testSpendWise is developed by [Your Name] 📧 your.email@example.com
This project is licensed under the MIT License.