A clean, offline-first personal finance tracker built with Flutter for Android. Track expenses & income, manage budgets, view beautiful charts, export reports, and automatically capture Google Pay transactions.
Architecture Layout
+-------------------------------------------------+
| Walt App |
+-------------------------------------------------+
| | |
v v v
+----------------+ +----------------+ +----------------+
| Presentation | | Providers | | Shared |
| (Features) | | (Riverpod) | | Widgets |
+----------------+ +----------------+ +----------------+
| | |
+---------+---------+----------------+
|
v
+-------------------------------------------------+
| Data Layer |
| - Freezed models (Transaction, Category, |
| Budget, Account) |
| - SQLite via sqflite (primary storage) |
| - Hive (caching & settings) |
+-------------------------------------------------+
|
v
+-------------------------------------------------+
| Services Layer |
| - Export Service (CSV / PDF) |
| - Notification Service (budget alerts) |
| - Google Pay auto-capture |
+-------------------------------------------------+Project Case Study & Features
Why Walt
Most finance apps require an internet connection or lock features behind subscriptions. Walt is fully offline-first — your financial data stays on your device, private and accessible anytime.
Features
- Offline-first with SQLite + Hive for fast, reliable local storage.
- Beautiful charts — monthly bar charts, category pie charts, and spending trend lines powered by
fl_chart. - Budget planning with progress tracking and alert notifications.
- CSV & PDF export with Android share sheet integration.
- Biometric app lock for secure access.
- Dark mode support with a clean, modern UI.
- Fully customizable categories for organizing transactions.
- Google Pay auto-capture for seamless transaction recording.
Tech Stack
- Flutter + Dart for cross-platform UI
- sqflite — local SQLite database
- hive_flutter — fast caching for categories, settings, and pending GPay transactions
- flutter_riverpod — declarative state management
- go_router — declarative navigation
- fl_chart — all charts (bar, pie, line)
- freezed + json_serializable — immutable, serializable data models
Challenges & Obstacles
Designing an offline-first architecture that keeps data consistent across SQLite and Hive caches while supporting real-time chart updates and background notification scheduling for budget alerts.
Key Lessons Learned
Gained deep experience with Flutter state management using Riverpod, learned to architect clean separation between data, domain, and UI layers, and understood the trade-offs between local databases for mobile apps.