A unit of stock is always in exactly one of five places. It moves between them at four moments, and each of those moments is a screen where a named person confirms what they actually counted. Nothing else in the system can change a stock figure — there is no "set stock to" anywhere.
In transit is a real place, not a status flag. When a van leaves the warehouse, the stock stops being the warehouse's and does not yet become the store's. Without that middle position, goods on the road are either counted twice or counted nowhere — and the discrepancy only surfaces months later at a stock count, by which point nobody can say which delivery it came from.
It is also why a sale can complete with no network. In a shop the goods physically leave with the customer at the moment of sale, so the record is describing something that already happened rather than granting permission for it. Cash keeps working offline; card and mobile money do not, because those need an authorisation nobody can fake — and the screen says so before the customer has agreed to pay.
Receipts, transfers and sales each write a movement with a quantity, a reason and an author. A balance is their total. A miscount is fixed by a new adjustment, never by editing history — which is what lets the warehouse and the shop disagree out loud instead of quietly.
Counting a cash drawer and accepting its difference are different permissions held by different people. So are raising a purchase order and approving it. A control one person can complete alone is decorative.
Before any button that moves stock or money, a dark panel lists exactly what will change — how many units, which location, what it does to cost and to the order. Never a bare "Confirm".
Where the system proposes a figure — an allocation, a reorder, a flag on the dashboard — it says in words how it got there. A recommendation that cannot explain itself is a guess, and staff stop trusting it the second time it is wrong.
In the prototype, the bar at the foot of every screen shows which journey you are on and carries you to the next step. There is also an Explain this screen button there: turn it on and numbered markers appear over the screen with a panel describing each part. It stays on as you move between screens.
| Screen | Who uses it | What it is for |
|---|
Type into a receiving count, an allocation cell, a transfer count or a drawer denomination and every downstream figure recalculates — variance, days of cover, van capacity, the commit panel, and the plain-English reason note underneath.
Search by name, SKU, barcode or shelf code; add to a basket; split payment across cash and mobile money; take the terminal offline mid-sale and watch the non-cash tiles disable themselves with the reason on them.
Goods-received note, transfer notes, tax invoice, 80mm thermal receipt and the shift Z-report — as PDF (through your browser's print dialog), standalone HTML, plain text or CSV. The receipt is built from the basket you actually rang up.
The A / B / C buttons at the foot of every screen re-theme the entire prototype. All three are the same design tokens with different values, which is what makes the switch possible at all — and what makes it cheap to change later.
“Depot” is a stand-in. It appears in the top bar, on the tax invoice, on the thermal receipt and in the returns terms. It lives in one file, so changing it changes all of them at once.
Two distribution centres and nine stores, currently named for Dhaka and Chattogram. The structure — centres serving stores, stores running tills — is what matters; the names are a sample.
Everything is in ৳ BDT at 7.5% inclusive VAT, with the Mushak 6.3 reference on the invoice. The reference screenshot you sent showed MYR, so if the market is Malaysia the symbol, the tax rate and the invoice wording all change together.
A is built. B is right if most screens are genuinely read in dim rooms — a loading bay at 05:00, a counter at 22:00. C is right if staff turnover is high and training time is the real constraint. Try all three with the A / B / C buttons and tell us which of those two facts is true.
The prototype is a folder of ordinary web pages. Open index.html in any modern browser and everything works, including the downloads. To put it on a link instead, the whole folder can be dropped onto any static host — it has no build step and no back end. If you were sent this guide on its own, paste the prototype's address into the box at the top of this page and every link here will point at it.