Inspiration

Every day when visiting local shops, I noticed customers asking shopkeepers to write down their daily purchases in physical paper notebooks (khata) as udhar (credit). Watching this sparked a question: what happens if that notebook gets lost, the pages tear, or liquid spills on it? All those transaction records and hard-earned money would be gone in an instant. I built Udhar Kitab to replace risky paper logs with a simple, reliable digital ledger.

What it does

Udhar Kitab (उधार किताब) is a digital credit book for small shopkeepers in India. It replaces the paper udhar khata with an app that works the way shopkeepers already think.

  • Tracks credit and payments: add entries, record partial or full settlements, and see a running balance for every customer.
  • Flags overdue payments: a home-screen banner and per-customer indicators show who is late, and the due date can be changed in one tap.
  • Works offline: all data lives on the phone first, so the app is fully usable with no signal.
  • Backs up to the cloud (optional): shopkeepers can turn on Google Sign-In and cloud sync to restore their book on a new phone, so a lost phone no longer means lost records.
  • Speaks Hindi and English: the whole app is bilingual, with locale-aware dates and numbers.
  • Sends reminders: one-tap WhatsApp messages (no due date, due today, overdue) or a direct phone call. The app never sends anything on the shopkeeper's behalf.
  • Shows analytics: outstanding totals, period-over-period comparison, monthly history, and a top-debtors list.
  • Offers a 90-day free trial and Udhar Kitab Pro, a custom paywall built on RevenueCat subscriptions.

How we built it

  • App: React Native 0.81 and React 19 with Expo (SDK 54) and Expo Router for file-based navigation.
  • Local storage: expo-sqlite is the single source of truth for every read and write.
  • Cloud and auth: Firebase Auth (Google Sign-In) and Firestore, used as a one-way, best-effort mirror of the local data.
  • Subscriptions: RevenueCat (react-native-purchases) powers a fully custom paywall. It handles purchase, restore, and the udhar_kitab_premium entitlement check, all wrapped in a central SubscriptionContext.
  • Language: a context-driven i18n layer with English and Hindi translation tables and a persisted language choice.
  • Motion and UI: react-native-reanimated for smooth, tactile interactions.
  • Builds: EAS Build for Android APKs.

Challenges we ran into

  • Offline-first without breaking the user's data: cloud sync had to be best-effort so that a failed network call never blocks or corrupts a local write.
  • Making the free trial reinstall-proof: the 90-day trial is written to both Firestore and local SQLite, so it survives offline periods and reinstalls once the account is re-linked.
  • Native modules vs. Expo Go: Google Sign-In and RevenueCat don't run in plain Expo Go, so development needed dev-client builds.
  • Designing for a first-time app user: keeping the interface simple and fully Hindi-friendly, so someone who has never used a business app can pick it up quickly.
  • Building a custom paywall: wiring purchase, restore, and entitlement state into a screen that fits the app's design, instead of using a hosted template.

Accomplishments that we're proud of

  • A complete, working credit-book app that a shopkeeper can install and use today, with no signal needed.
  • True Hindi/English support across the whole app, not just translated labels.
  • Cloud backup that is opt-in and never touches the offline experience.
  • A polished custom paywall with working purchase and restore flows through RevenueCat.
  • An APK anyone can sideload, plus an open-source codebase with a full README and privacy policy.

What we learned

  • Offline-first design changes how you structure everything. Treating local storage as the source of truth and the cloud as a mirror kept the app simple and reliable.
  • Localization goes beyond translation: dates, numbers, and tone all matter for real users.
  • Managing subscription state in one place (a single context around RevenueCat) makes entitlement checks much easier to reason about.
  • Building for users who are not tech-savvy means fewer screens, clearer wording, and fewer decisions.

What's next for Udhar Kitab

  • Customer Center integration for in-app subscription management.
  • Export ledgers to PDF and CSV.
  • Scheduled reminders, beyond manual WhatsApp and call nudges.
  • More regional languages, so shopkeepers across India can use it in their own language.
Share this project:

Updates

Submission history