Why an Expense Tracker?
Tracking expenses is one of those universal problems that everyone faces. Yet most apps either overcomplicate it or lack meaningful insights. I wanted to build something that was dead simple to use daily while providing real value through analytics.
Architecture Decisions
I chose a feature-first architecture with Riverpod for state management. The key insight was keeping the expense entry flow to under 3 taps — that's the difference between an app people use daily and one they abandon.
State Management with Riverpod
Riverpod was the clear choice for its testability and provider scoping. Each feature has its own set of providers, keeping concerns separated and the codebase maintainable.
Local-First Data
SQLite handles all expense data locally, ensuring the app works without internet. Firebase is used only for optional cloud backup, keeping the core experience fast and reliable.