// Case Study · 01 · Android App
Smart Finance, Simplified.
// The Problem
College students and young professionals spend money daily — food, transport, subscriptions — but never know where it actually goes. Existing apps are either too complex (Mint, YNAB) or too basic (a notes app). There was nothing in between that was fast, local, and yours.
Build an app where logging an expense takes under 5 seconds. No account setup walls. No complex categories upfront. Just — open, add, done. And when you need the data, it's all there, exportable, yours.
// What it does
Scan any product barcode and the app auto-fills the item name. Grocery runs take seconds, not minutes.
All expenses sync to Firestore in real time. Switch phones, reinstall — your data is always there.
Export any month's expenses to a clean .xlsx file. Email it, share it, archive it — full ownership of your data.
Food, transport, subscriptions, shopping — categorise as you go. Monthly breakdown shows exactly where your money went.
Clean month-by-month view with totals, category splits, and daily patterns — no chart clutter, just useful numbers.
Add expenses without internet. Firebase queues the sync and updates the moment you're back online.
// Tech Stack
Every technology choice was deliberate — picked for the real problem, not for the resume.
// Key decisions
I could have gone local-only with Room DB — simpler, no backend. But people break phones. The value of an expense tracker is the historical data. Firebase Firestore gave real-time sync with zero server management. Worth the complexity.
Google's ML Kit barcode scanning runs fully on-device — no API key, no cost, no latency. It works offline. This was the right call. The feature feels instant because it literally is.
I initially planned PDF exports. Then I asked myself — what would I actually do with a PDF? Users want to filter, sort, and share raw data. Apache POI for .xlsx was more work but it's what the user actually needs.
MD3 gave me dynamic color theming, updated components, and accessibility baked in. Users already know how it works — they don't need to learn the app. Reduces friction from the first tap.
// Lessons learned
Firebase offline persistence was a great decision — users complained about internet-dependent apps and this solved it silently.
Firestore security rules took longer than expected. Getting read/write rules right without exposing other users' data required multiple iterations.
Keeping the UI minimal was the right call. The first beta had too many settings. Removing them improved the UX score significantly.
Excel generation on Android — Apache POI is heavy. Had to move export to a background coroutine to avoid blocking the main thread.
Publishing to Play Store was a milestone. The Play Console review process forced me to write proper privacy policies and app descriptions.
Add budgeting limits from day one. Users kept asking "can I set a monthly limit and get alerted?" — should have been v1, not a roadmap item.