Real-time Android expense tracker
SpendSmart
Every edit lands on every device before the keyboard closes.
- Role
- Solo · Android
- Focus
- Mobile · Product
- 0
- backend servers
- 8
- dependency lines
- 7
- validated categories
- Live
- snapshot sync
Overview
A personal-finance tracker for Android with no backend server: the app talks to Cloud Firestore directly over an authenticated channel, so reads are live — and the security rules are the entire authorization layer.
What it does
- Email/password auth with a splash router — returning users never see a login form
- Full CRUD with partial-field updates that never clobber a document
- Live dashboard stats folded from the expense stream, never stored counters
- Instant client-side search across title and category
- Designed empty states and guarded deletes throughout
Engineering decisions
01
The database is the security boundary
firestore.rules is a deny-by-default whitelist: schema-validated writes, owner-only reads — a patched APK still can’t read anyone else’s spending.
02
Eight dependencies, every one used
Plain Java 8 on AndroidX and Material 3 — no DI framework and no reactive library.
Stack
- Android
- Java 8Material 3AndroidX
- Backend
- Firebase AuthCloud FirestoreSecurity Rules
- Tooling
- Android CI