Platform guide

Walk through Commerce Ops

13 of 19 screens are live in the demo. Everything else is visible but marked, with a reason — nothing is a dead link.

Case study

How to sign in

The demo has its own login because that is part of the product. These accounts are fictional, the passwords are deliberately fake, and each one sees a different slice of the platform — so it is worth signing in as more than one.

RoleEmailPasswordWhat they can see
Owner[email protected]Ops@OwnerEverything, including users, takings and the archive
Manager[email protected]Ops@ManagerStock, purchasing, discounts, returns and takings. No user administration.
Cashier[email protected]Ops@CashierOrders and customers. Blind to takings, and cannot change stock.
Stock controller[email protected]Ops@StockInventory and purchasing only. Deliberately blind to money.
You can also switch role from the demo bar once you are in, without signing out.

What to try first

  1. Open Shift Summary and pick the session that is ninety dirhams short — the variance is the point of the screen.
  2. Delist a product from the inventory, then open the Archive: it is there with your name on it, and one click puts it back.
  3. Sign in as the Stock controller. Every figure about money disappears, including from the dashboard.
  4. Open an order that was paid two ways — the payment array has to add up to the basket less any points, and the arithmetic is shown.
  5. Click Delivery, Sale or Expenses in the rail. They are marked because the real API has no collection behind them either.

Every screen, and whether it is in the demo

13 live
6 not in the demo

Grouped the way the real platform groups them. A screen marked not in the demo is still visible in the demo's navigation — clicking it explains why and offers a walkthrough, rather than doing nothing.

Back office

Sign in

The real app’s /dashboardlogin. Four accounts, one per userType, and which one you pick changes a great deal.

Dashboard

Takings, stock at cost, what needs reordering and what is close to its date. A role without takings sees the tiles it may have and not blanks.

Inventory

Stock, margin and expiry with 64 lines, filterable on all three. Delisting is a soft delete — the line goes to the archive, not away.

Orders

Every basket with the whole payment array rather than a single method, because a till takes part cash and part card constantly.

Order detail

Lines, and the arithmetic of what was handed over: basket, less points, equals due, against the payments recorded.

Shift Summary

A till session reconciled from the orders that reference it — takings by method, and whether the drawer balanced. Derived, not transcribed: the real API has no shift collection.

Return

Refunds through all four statuses. Approving puts units back on the shelf once; rejecting refunds nothing, and the figure is recomputed rather than carried over.

Purchase

Purchase orders with received quantity per line, so a part delivery reads as a proportion instead of hiding behind a status.

Discount

Promotions with where each was actually applied, counted from the discountHistory collection rather than from a counter that could drift.

Customers

Spend and order count computed from the orders; the loyalty balance stored, because points owed are a liability rather than a statistic.

Supplier

Who supplies what, and how many purchase orders are still open against each.

Users

Staff, and the capability matrix the frontend’s gating on userType implies — which is where you can see that a stock controller is deliberately blind to takings. Owner only.

Archive

Additive — the panel has no such section. Every collection carries softDeleted and there was nowhere to see the consequence: what was removed, by whom, and a button to put it back.

Scaffolded in the product

Delivery

Not in the demo

A section in the real left panel with no collection behind it.

There is no delivery schema in the API. The section is scaffolded; a delivery request is noted in the order’s remarks field today, which is where you will find it.

Sale

Not in the demo

The till itself.

It needs a card reader, a cash drawer and a receipt printer, none of which exist in a browser — and the orders it would produce are already here, each attached to a shift.

Expenses

Not in the demo

Petty cash and outgoings.

No expense collection in the API — and it matters: cash taken out of the drawer would read on a shift summary as an unexplained shortfall, which is why the reconciliation here counts takings alone.

Payment Methods

Not in the demo

Configuring which methods a till accepts.

The methods themselves are live — every order records what it was paid with and the shift summary breaks takings down by method — but there is no collection to configure them from.

Store

Not in the demo

Managing store records.

Stores exist and every product and order references one, but there is no schema for managing them. Two are seeded here and both appear in every list.

Device Settings

Not in the demo

Per-till hardware: printer, drawer, scanner.

No meaning in a browser and no collection behind it in the API. This one is scaffolded for a reason rather than by omission.

Good to know before you open it

  • It runs entirely in your browser. There is no server, and nothing you type leaves the page.
  • Your edits persist across a refresh, and Reset data in the demo bar puts the sample data back.
  • A guided tour starts on your first visit and can be replayed from the demo bar.
  • It works on a phone as well as a desktop.
All work