A Flutter Expense Tracking Application
Expense Tracker is designed as a local-first personal finance app for tracking transactions, analyzing spending behavior, and securely syncing user data.
Based on documents/mindmap.mmd, the final product includes:
- Dashboard
- Total balance
- Daily logging streak
- Recent transactions
- Quick-add transaction button
- Transactions
- Add, edit, and delete transactions
- Amount input
- Category/date picker
- Optional notes
- Analytics
- Category pie chart
- Daily/weekly bar chart
- Time-based filtering
- Settings
- Manage categories and icons
- Currency selection
- Data export
- Local-first
- Isar Database
- Instant UI updates
- UUID generation
- Cloud backup
- Firebase Firestore
- Background sync logic
- Authentication
- Google Sign-In
- User data isolation
The app follows a clean architecture structure:
- Presentation layer: Flutter UI +
flutter_bloc - Domain layer: entities, repository contracts, and use cases
- Data layer: models and repository implementations
- Flutter + Dart
flutter_blocfor state management- Clean Architecture pattern
- Isar (local database)
- Firebase Firestore (cloud backup/sync)
- Google Sign-In (authentication)
flutter pub get# Development
flutter run --flavor development --target lib/main_development.dart
# Staging
flutter run --flavor staging --target lib/main_staging.dart
# Production
flutter run --flavor production --target lib/main_production.dartYou can use Makefile shortcuts:
# analyze
make analyze
# run tests with coverage
make test
# run build_runner once
make build
# auto-fix and format/check
make fix
make check-fixflutter test --coverage --test-randomize-ordering-seed random