Back to the case study

Case study · Android app

دودھی

A digital khata for milkmen in Punjab

Dhoodhi replaces the paper ledger that gawalas use to collect, sell and settle milk. It is Urdu first, works without internet, and follows the way they already work.

Role
Product design and full stack development
Platform
Android, built with React Native
Built for
Milkmen (gawalas) and their helpers
Status
In pre-launch testing

The problem

A milkman collects milk house to house, morning and evening, across several villages. He sells it to chillers, collection centres and shops, and keeps an account with every household. All of it lives in notebooks.

Rates change, pages get rewritten, and settling up leads to arguments. Many of the people who need a better tool read little, work with patchy internet, and are rarely the audience software is designed for.

My approach

I started from the notebook, not from a typical app. Each decision follows how the work is really done.

  • Urdu, right to leftLarge buttons, number pads instead of typing, very little text, and Nastaliq headings.
  • Offline by defaultEverything lives on the phone. Backups leave through WhatsApp, which everyone already uses.
  • The real roundVillages and houses, morning and evening collection, buffalo and cow milk, and sales to chillers and shops.
  • A khata that adds itself upA ledger for every house and buyer, a day by day register for each month, weekly payments, advances and instalments, and chiller slips to reconcile against.
  • Helpers without serversA helper collects on their own phone and sends a small file over WhatsApp. The owner previews it and adds it to the khata.
  • Records people can trustEvery change is logged with its old and new value, and a rate change never rewrites old entries.

Under the hood

  • React Native + Expo
  • TypeScript
  • SQLite + Drizzle
  • Zustand
  • Jest

An append only event log is the source of truth, and every calculation lives in one pure module covered by more than 800 automated tests.

Details are intentionally kept high level. Back to the case study