Ledger
Shared budgets for households
A Kotlin and Jetpack Compose app for couples and housemates to split bills and track a shared budget. I built the Android app and the Ktor API, from first commit to 60,000 installs.
Flat 4B, September
You’re owed
Rs 3,240
Rs 31,000 of Rs 50,000 budget spent
- SASana+2,100
- HRHamza+1,140
Recent
- Electricity billRs 8,460
- Groceries, ImtiazRs 5,215
- InternetRs 3,000
- 60k
- installs in the first year
- 4.7
- Play Store rating
- < 1s
- cold start on a Moto G7
The problem
Households tracked shared costs in group chats and spreadsheets. Existing apps were built for one person and bolted sharing on later.
Constraints
- Money math must be exact, with no floating-point rounding surprises.
- Must feel instant on low-end Android devices.
How it fits together
On the device
- Compose UI
- Room database
- WorkManager sync worker
In the cloud
- Ktor API
- PostgreSQL
- Push notifications via FCM
Key decisions
Money as integers everywhere
Amounts are stored and sent as minor units with an ISO currency code. Splits distribute remainders deterministically, so three people splitting 100 always see 33.34, 33.33, 33.33 on every device.
Baseline profiles and a lean startup path
Shipped baseline profiles and moved non-critical initialisation behind the first frame, bringing cold start under a second on the budget phones most users had.
Outcome
Grew to 60,000 installs through word of mouth, with a 42% 30-day retention rate, high for a finance app.
What I’d change
I would add a web view of the ledger earlier. Many users asked for one to check balances from a laptop.
Stack
- Kotlin
- Jetpack Compose
- Room
- Hilt
- Ktor
- PostgreSQL