If you’ve ever visited a small kirana store in India, you already know the workflow is fast, local, and often messy. Many store owners still manage billing, stock, and udhar in notebooks or with apps that depend too much on internet connectivity or recurring subscriptions. That gap is what pushed me to build KiranaMitra, an offline-first POS and inventory app made specifically for Indian kirana stores.
KiranaMitra is designed to run locally on the device with no mandatory server, no internet dependency for day-to-day use, and optional Google Drive backup for safety. It includes POS billing, product and inventory management, customer credit tracking, PDF receipts, reports, dark mode, and support for English, Hindi, and Gujarati.
Why I built it
A lot of software for small retailers is built with assumptions that don’t always match Indian ground reality. Many shop owners want something simple, fast, low-cost, and reliable even when the internet is unstable. They also care more about practical features like billing speed, udhar tracking, and stock visibility than fancy dashboards.
I wanted to build a tool that feels closer to how a real kirana store works:
Fast billing.
Offline by default.
Local language support.
No forced monthly subscription.
Data stored on the device.
That became the foundation for KiranaMitra.
What the app does
KiranaMitra is a Point of Sale and inventory system focused on common store operations. The current feature set includes a sales dashboard, billing with multiple payment modes, product catalog and stock alerts, inventory tracking, customer records, credit ledger, PDF receipt generation, reports, and optional Google Drive sync.
A few features were especially important for this audience:
Split payments like cash, UPI, and credit.
Customer udhar tracking with ledger-style records.
Advance payment or wallet support.
Multi-language UI in English, Hindi, and Gujarati.
Offline-first storage so billing does not stop when connectivity disappears.
This is not a generic global POS template. It is intentionally opinionated for Indian small retail.
Tech stack choices
I built the app with React Native 0.83 and TypeScript 5.8 because I wanted a modern cross-platform stack with strong typing and a large ecosystem. For local-first data, I used WatermelonDB on top of SQLite, which fits well for structured offline data like products, customers, bills, payments, and inventory logs.
For UI, I used React Native Paper with Material Design 3, while navigation is handled through React Navigation 7. State management uses Zustand with MMKV for fast persisted state, and forms are powered by React Hook Form with Zod validation.
Internationalization was a first-class requirement, not an afterthought. The app uses i18next and currently supports English, Hindi, and Gujarati across multiple namespaces.
Architecture decisions
One thing I wanted from the beginning was a codebase that would stay maintainable as features grow. So instead of organizing everything by file type only, I used a feature-module structure where each domain owns its screens, components, store, repositories, schemas, hooks, and services. The repository also separates shared infrastructure like database, theme, storage, i18n, and reusable components under a core/shared structure.
At a high level, the project is organized around modules like billing, customers, dashboard, inventory, printing, products, reports, and settings. Shared concerns such as WatermelonDB setup, themes, type definitions, and localization live in common layers so feature code stays focused.
That structure has made it easier to think in terms of business flows instead of just screens.
Offline-first was the main requirement
The most important product choice was not a framework. It was the decision that the app should remain fully usable offline. KiranaMitra stores data locally using WatermelonDB and only treats backup as optional, which means store owners can continue billing and managing stock without depending on cloud availability.
For small retailers, reliability matters more than trendy architecture. If the app fails during peak store hours because of a network issue, nothing else matters. That is why the app is local-first by design.
Open source, but with a business angle
The source code is open for learning, contribution, and personal use, and the repository includes a contributing guide, code of conduct, and CI setup. There is also a pre-built signed APK offered for a one-time price, mainly for users who do not want to build from source themselves.
I like this model because it keeps the code accessible while still leaving room for sustainability. People who want to learn, contribute, or self-build can do that, while non-technical users can pay for convenience, updates, and support. The README also leaves room for custom development work such as thermal printing, workflows, reports, and integrations.
Roadmap
The current roadmap includes upcoming work like barcode scanner integration, product image support, Excel export, WhatsApp bill sharing, and multi-store support. Core phases like project setup, product management, billing, customer management, reports, inventory tracking, theming, localization, and CI/CD are already listed as completed in the project roadmap.
That roadmap is important because open-source projects need visible direction. It helps contributors understand what is done, what is planned, and where they can help.
What I learned
A few lessons stood out while building this project:
Product constraints are more important than tech trends.
Offline-first design changes almost every architectural choice.
Localization should be planned early if the app is meant for real users.
Small business software needs boring reliability more than flashy UI.
Open source gets stronger when the structure is clear and contribution paths are easy.
This project also reminded me that niche software can be powerful. You do not always need to build for everyone. Sometimes the better approach is to build deeply for one real use case.
Links
Demo/docs: https://hardikkanajariya-in.github.io/kiranamitra
GitHub: https://github.com/hardikkanajariya-in/kiranamitra
If you’re interested in offline-first mobile apps, React Native architecture, or software for Indian SMBs, I’d love your thoughts on the approach and roadmap.
Top comments (0)