Back to Projects

Lekhastra — A Multi-tenant Inventory ERP for 30+ Stores

A SAP-inspired inventory ERP for 30+ stores 🏬

I worked on a multi-tenant inventory for department stores while working full time as a software engineer at PrathamIT. There were a lots of department stores which uses desktop based application and spreadsheet based inventory tracking. Each store tracked inventory differently and the working methodology was mostly dependent on who is incharge of running the store. There was lots of manual work for stock counting and reconciliation took days, and there was no shared source of truth across multiple branches. The foundation of the project Lekhastra was strong and ambitious. I had chance to work on the POS system, Backend System to handling the entire frontend stack.

Multi-tenancy from day one

The core architectur was multi-tenancy. 30+ stores needed to share the same application and infrastructure while keeping their data fully isolated. I worked on the multi-tenant backend so that a single deployment could serve every store.

Decoupling the frontend

The project had strong foundation on the backend part which was built on .NET core and the UI was implemented on the server side. While working on the application we knew that the application needed to have large reports with complex ui and data visualization so we needed to separate the frontend from the monolithic app. The backend was already strong but we needed more flexibility and robustness on the frontend part. To mordernise without a full rewrite we build APIs over the existing logic and consumed them in Vue.js single-page apps. The decision actually worth and while we were porting the frontend we needed to make every feature work on bulk operation so entire backend is also designed in such a way that transaction supports bulk operations. We target our app to be mostly like the Excel spreadsheet but with advance features. Each cell would be a Dropdown, TextInput, or Nested Dropdown. While working on the loading the information we also need to be skeptical about how many times we need to fetch the data from the server also. While the old server rendered UI and backend processed only one form submission at a time, the new UI can support more than 100 form submissions at a single time. By correlating this we can create a guess that how much time it would save when we need to input 100 product creation. This has massively increased store efficiency and productivity. And by the time we had created a new standard working.

Lekhastra inventory dashboard A product list page with Advance Filtering and Bulk Operations.

Learning from the Project

Lekhastra was a lesson in building for scale and isolation at the same time. Multi-tenancy forces us to be disciplined about where data boundaries live and serving 30+ real stores meant performance work wasn't optional.