Development
July 31, 2025
Built an offline-first React Native app that gives Indian farmers crop-wise income, expense, and pending-payment tracking in 11 languages — with one-tap Google Drive backup, daily auto-backup, and zero server dependencies.
Indian farmers — especially in Gujarat — keep most of their farm finances in paper diaries or spread across WhatsApp messages and verbal agreements. Existing accounting apps assume an English-speaking, always-online user with a stable bank account. They don't work for a farmer in a 2G coverage area who needs to log a ₹1,200 fertilizer expense in Gujarati on a phone with 4 GB of RAM.
Kheti Hisab was built to fix this: a phone-first ledger that treats offline as the default, the local language as the primary interface, and the user's own Google Drive as the backup destination — so no farmer data ever sits on our servers.
All farm data lives in an on-device SQLite database accessed through Drizzle ORM. Idempotent migrations run on every launch so the schema upgrades cleanly even when users skip updates. There is no backend database — the user's phone is the source of truth.
A single .kheti.zip file contains:
Backups are uploaded to Google Drive's drive.appdata scope — a hidden per-app folder the user can't accidentally delete from drive.google.com. Same pattern WhatsApp uses for its chat backups.
Tap a backup in the picker → it's downloaded → the SQLite file is swapped in atomically → photos are extracted to the new install's documents folder → photo URIs in the DB are rewritten to point at the new paths → the app reloads with the restored state. The whole thing takes a few seconds on a 7 KB backup with photos.
Rather than fighting Android Doze and iOS BGTaskScheduler — both of which silently skip background jobs at the OS's discretion — Kheti Hisab runs the backup on app launch if the last successful backup is older than the chosen window (Daily or Weekly). Real-world reliability is >95% because most farmers open the app at least once a day. A visible spinner reassures users the upload is happening.
TypeScript
React Native
Firebase
Explore our other successful projects