The problem
Everything about the shop lived in the shop. Stock was counted by hand, prices moved with the gold rate, and a customer could only find out what was in the case by walking into it.
The storefront
A dark, gold-lit catalogue that lets someone browse the cases from their sofa, with Stripe taking deposits so a piece can be held.

The till, rebuilt
A point-of-sale system — Stock Console — that runs the counter: stock in and out, sales, and the day's takings. It is the shop's own working system, not a demo.

One source of truth
The website reads its stock straight from the till over a token-gated feed. Sell a piece at the counter and it comes off the site — no one re-types anything.

What was hard
Letting the website read the till without opening the till
The shop's takings and stock cannot be public. The feed is a single token-gated endpoint that exposes only what a shopper may see, and nothing else the console knows.
A redirect is not a lock
In the Next.js App Router, redirecting from a layout does not stop the page underneath from rendering — the body still comes back to anyone who asks for it directly. We found the takings page reachable that way and closed it with a proxy that denies by default, a guard on every page, and a test that walks all of them.
On a phone
Most of Mahmooda Jewellers’s customers arrive on a phone, so that is the width the design was decided at.

