Spending is an expense tracker mobile application written in Flutter using BloC as design pattern
- Support multiple members
- Categories
- Upload receipts
- Firebase as a backend
- Set Budgets to limit the expense
- Chart for Data Visualization
Records Page | Record Page | Budget Page |
---|---|---|
![]() |
![]() |
![]() |
Chart Page | Trend Page | Categories Page |
![]() |
![]() |
![]() |
Put your own Firebase project config file lib/firebase_options.dart
with Firebase Auth, Firestore & Firebase Storage enabled
You will need a recent version of Flutter, then just
$ flutter run
on mobile devices
- UI Framework: Flutter
- Design Pattern: BloC
- Backends: Firebase Auth, Firestore, Firebase Storage
- Handling of async events: ReactiveX (RxDart)
spending
├─ lib
│ ├─ app
│ │ ├─ app.dart # MaterialApp, RepositoryProviders, Global Auth State
│ │ └─ theme.dart # Using [flex_color_scheme]
│ ├─ app_router.dart # All Routing using [auto_route]
│ ├─ bloc_observer.dart # Middleware of Bloc, Use for Logging
│ ├─ common # Common util function
│ ├─ features # Feature Layer: Separate Pages
│ │ ├─ auth
│ │ ├─ budget
│ │ ├─ categories
│ │ ├─ category
│ │ ├─ chart
│ │ ├─ currencies
│ │ ├─ receipt
│ │ ├─ record
│ │ ├─ records
│ ├─ l10n # Localization
│ ├─ main.dart
│ ├─ model
│ └─ widgets # Reusable Widgets
├─ packages # Separate non-UI repositories
│ ├─ calculator # Calculator Logic API
│ ├─ spending_api # Data Layer: Firestore API
│ ├─ spending_logger
│ └─ spending_repository # Domain Layer: Modelized, Filtered & Streamed repository
└─ pubspec.yaml # App config, dependencies