Surface 8 of 9

The customer app

Phone-first: 390px is the design width, not the fallback. It is also the one surface in this product that scrolls — the no-scroll law is written for an operator who must see a whole working state at once, and a customer reading a menu on a phone is not that. The discipline still binds: the same seven tones, tabular numerals, EGP once, AA contrast, 44px targets, reduced motion, and a visible focus ring.

Getting in

Two ways: the code on the table, or signing in and being told where we think you are.

JSOORGAMING
Table 3you scanned the code here
Order something
Out
Iced latte
48EGP

Takes about a minute. You can look at the menu without one.

The code's default screen is the menu for that seat. It works for somebody who has never used the app — sign-up happens after the scan, not before it, and browsing never requires an account.

JSOORGAMING
Welcome back, Hossam
🖥PC-03 · Front roomwhere we have you sitting
Tonight
Running for 1:12
Your tab 146EGP

Paid at the desk when you leave.

Adds it to your home screen. No store, nothing to download.

No code needed if we already know where you are. The install button is a control that says what it does — and on a phone where the browser will not offer the prompt, it explains the share-sheet path instead of pretending it can do it.

JSOORGAMING
Which one?
We have you at PC-03.

You just scanned Table 3.

Your order goes to Table 3 and the desk moves you across.

Your order goes to Table 3. You stay at PC-03 and your own clock keeps running.

Either way your order goes through. We will sort the seat out with you.

The order is never blocked. A customer with a phone in their hand and a staff member across the room will just shout the order instead, and a worked-around flow enforces nothing. Both answers are real, both are stated as outcomes, and exactly one flag reaches the desk.

Ordering, and bringing friends onto the tab

JSOORGAMING
Table 3ordering here
Your order
Turkish coffeemedium sugar×250.00
Pepsi 330ml×119.00
Adds to your tab 69EGP

Pay for everything together when you leave.

No pay button, and the absence is explained. The bill is settled at the desk. A disabled payment control with no reason would read as broken.

JSOORGAMING
Let them scan this

They join your table and order from their own phone.

4K7P

Or they type this. It stops working when you pay.

On your table
Rana Adhamjoined 20:41 · 3 items
Tarek Mansourjoined 20:52 · 2 items

This code is a key to your tab, so it behaves like one. It is tied to tonight, it rotates whenever you ask, it dies when you pay, and everyone who used it is listed here with a control to remove them.

JSOORGAMING
Two coffees, one Pepsi
On its way
Sent21:04
The desk has it21:04
Being madeabout 4 minutes
At your table
Your tab tonight
So far 215EGP

Yours only. Rana and Tarek have their own.

Four steps in customer words. Never an internal state name, and never a settle step — money between the venue and the till is not the customer's screen.

Before you arrive

JSOORGAMING
Free right now
2 machines 1 billiard 2 cafe tables
Book one
Front room40.00 / h · 1 free now
VIP room60.00 / h · 1 free now
Billiard35.00 / h · 1 free now
Console room50.00 / h · full

Console room is full until about 22:30. Put your name down instead and we will message you.

Availability is the truth, per kind. A full room says when, and offers the waiting list rather than a dead button.

JSOORGAMING
One thing first
We check your number in person, once.

Come in any time and the desk will confirm it. After that you can book from anywhere.

It takes a minute and it is why a Friday night does not fill up with bookings nobody turns up for.

The waiting list works without it — you are here when you use it.

Gated, not hidden. The booking control is visible and disabled with the reason at it, and the path that does work is offered right underneath.

JSOORGAMING
You are
2in line

Roughly 15 minutes

Waiting since 20:52 · 2 people · any machine

We will call your name and message you. If you miss it we keep your place for ten minutes.

No hard feelings.

The queue is a place, not a table. Position, an honest estimate, and what happens if you miss the call — which is the thing people actually worry about.

The rules this surface sets

#RuleWhy
A1Shopping surfaces scroll. Account and tracking surfaces obey the no-scroll law.The law is written for an operator who must see a whole working state at once. A menu on a phone is not that.
A2Browsing never needs an account. Ordering does.An account gate on the menu is a customer who walks to the counter instead.
A3A seat disagreement never blocks an order.Both answers are outcomes, and exactly one flag reaches the desk.
A4Order state is in customer words, and the settle step is never shown.Money between the venue and its till is not the customer's screen.
A5The invite code is bound to one visit, rotates on request, and dies at settlement.It is a key to somebody's tab, so it behaves like one — and everyone who used it is listed with a remove control.
A6A customer only ever sees their own share.Rana's tab is Rana's. The whole-table figure belongs to whoever booked it.
A7The absent pay button is explained, not just missing.A missing control reads as broken; a stated one reads as a rule.
A8Phone verification gates remote booking and nothing else.It gives the desk's in-person check a job worth doing, and it does not block the walk-in the table code exists to serve.
A9The install control says what it does, and handles the browser that will not offer it.Otherwise installing is folklore passed between customers.

Right-to-left and Arabic stay in the system and are proven on the design-system page. Copy ships in English for v1, which is a ruling about words rather than about capability — the tokens, the logical properties and the Arabic face are all in place the day it is wanted.