KiranaMitra (किराना मित्र) - Case Study | Hardik Kanajariya
Case Study
KiranaMitra (किराना मित्र)
I built an offline-first Point of Sale and inventory management app specifically for Indian grocery (kirana) stores with fast billing, split payments (Cash + UPI + Credit), customer credit ledger, barcode scanning, PDF bill generation, Bluetooth thermal printing, and Google Drive backup
Direct ClientJanuary 2026
Tech Stack
React Native
TypeScript
WatermelonDB
Offline-First
POS
Inventory
Barcode
Thermal Printing
12 Million Kirana Stores, Zero Good Software
India has over 12 million kirana (grocery) stores. They account for 80% of retail. And most of them run on memory, handwritten ledgers, and a calculator. Not because shopkeepers don't want technology - because existing POS systems are either too expensive, require internet, or are designed for organized retail.
I built KiranaMitra for the shopkeeper who has a smartphone and nothing else.
Zero Internet Required
This isn't "works offline sometimes." KiranaMitra works offline always. There is no server. No subscription. No "Sign in to continue." Open the app, start billing.
WatermelonDB was chosen over Realm or AsyncStorage because it's:
Built on SQLite (proven, reliable)
Lazy-loaded (only fetches what's displayed)
Fast for large datasets (a busy kirana has 5000+ products)
React Native optimized with lazy rendering
The Billing Experience I Optimized
Speed is everything. A kirana shopkeeper serves 100-200 customers daily. Each bill takes 1-2 minutes max. I optimized the billing screen for:
Barcode scan - Scan product, quantity auto-set to 1, scan next
Name search - Type 2-3 letters, see matching products, tap to add
Quick add - Frequently sold items pinned to dashboard
Voice input - Dictate product name (Hindi/Gujarati supported)
Split Payments
Indian kirana stores don't just take cash. A typical transaction might be:
₹500 total
₹200 cash
₹200 UPI (Google Pay, PhonePe)
₹100 on credit (udhar)
interfacePayment{ method:'cash'|'upi'|'credit'; amount:number;}// Bill with split paymentconst bill ={ items:[...], total:500, payments:[{ method:'cash', amount:200},{ method:'upi', amount:200},{ method:'credit', amount:100},], customerId:'cust_123',// Required if credit > 0};
Customer Credit (Udhar) Ledger
This is the killer feature. In India, kirana stores extend credit to regular customers. "Write it in the book (khata)" is a daily phrase.
KiranaMitra digitizes this:
Customer-wise credit balance
Transaction history (when they took credit, when they paid)
Credit limit setting
SMS reminder for pending payments
Settlement tracking
The credit ledger replaces the physical notebook that's been the backbone of kirana commerce for decades.
Advance Payment Wallet
Some customers pay in advance - "Here's ₹2000, deduct from my purchases this month." The wallet feature tracks:
Advance deposits
Automatic deduction on purchases
Balance notifications
Transaction history
Bluetooth Thermal Printing
Print bills on a thermal printer via Bluetooth. The bill format includes:
Store name and details
Item list with quantities and prices
Total, tax, savings
Payment breakdown
UPI QR code for digital payment
PDF Bill Generation
For customers who prefer digital bills, PDF generation works offline using local rendering. Bills can be shared via WhatsApp (the primary communication channel for kirana customers in India).
Google Drive Backup
No server doesn't mean no backup. The app supports Google Drive auto-backup:
One-tap backup to Google Drive
Automatic scheduled backups
Restore on new device
Data never touches any third-party server besides Google Drive
Multi-Language Support
The app works in English, Hindi (हिंदी), and Gujarati (ગુજરાતી). Not just labels - product names, customer names, and bill formatting all support Indic scripts.
My Business Model for This
The source code is open, but the pre-built APK is sold for ₹999 (about $12). This pricing strategy:
Makes it accessible to shopkeepers (₹999 is nothing compared to POS hardware)
Provides a ready-to-use solution without technical setup
I rebuilt my brass manufacturing corporate website from scratch — new brand identity, modernized color system, static export optimization, local product photography, and cleaner URL architecture.
Next.jsReact 19TypeScript+6
BrassCraft Industries
I built a production-grade corporate website for a brass component manufacturer and exporter based in Jamnagar, Gujarat. Fully static, zero-backend architecture with a custom design token system, 55+ product catalog with detailed specifications