All work

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.

Role
Android & backend engineer
When
2020
Team
Solo engineer, 1 designer
Platforms
Android
9:41

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
Add expense
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
REST over HTTPS

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