Vaflet LLC
← All work

Restaurant system · Turkmenistan

sahypa.menu

A whole restaurant in one system — the guest’s table, the waiter’s phone, the till, the owner’s panel, and a server in the room that keeps the shift going when the internet drops

Product design · Full-stack build · Desktop app · Restaurant tech

sahypa.menu's front page: “Not a menu. A restaurant in one system”, beside the guest menu, the panel, the waiter's phone and the till around the brand's S

The brief

One system instead of a zoo of apps

A restaurant in Ashgabat usually runs on a zoo: a QR menu from one vendor, a till from another, orders carried to the kitchen by hand, and the day’s takings added up in a notebook.

Every one of them stops when the internet does, and here it does — the provider drops, a storm passes, somebody reboots the router in the middle of a Friday.

So we built the whole restaurant as one system: the guest’s table, the waiter’s phone, the till, the owner’s panel, and a server in the room that keeps the floor working on its own.

The system

Five products, one system

Each wears the colour its own front page gives it. Point at one to see who holds it and what it runs on.

Next on the same core is sahypa.delivery, under the same subscription — and behind all of them sits a platform panel of our own, where restaurants are brought on, looked after, and switched off and back on without losing a thing.

The path of one order

Nobody rewrites anything

One order crosses the whole system on its own. Scroll it along.

  1. 01

    The guest orders from the table

    A steak, plov, a lemonade and an ayran leave the guest’s own phone as order #17 — with the service charge worked out before anyone asks.

    The guest's order sheet: order #17, sent to the waiter, with its lines and total
  2. 02

    The waiter accepts it

    It lands on the waiter’s phone with its own ring. One tap checks it and accepts it; a guest’s order is not fired until somebody on the floor has.

    The waiter's phone: a table with a new round from the guest, and the button that accepts it
  3. 03

    The kitchen gets its ticket

    Accepting prints it. Hot dishes to the kitchen, drinks to the bar, each on its own slip — what to cook, and not a single price.

    A kitchen ticket: the table, the waiter, and the dishes to cook with no prices
  4. 04

    The till closes the table

    Cash, card or both. The change comes up in green, and a sum below the bill cannot be taken — not by the screen, not by the server.

    The till's payment screen: the table's check on the left, cash and card and a keypad on the right
  5. 05

    The owner sees the result

    The day’s revenue, the average check and what sold, in the panel. From a laptop at home as easily as from the office.

    The panel's analytics: revenue, orders, the average check and the best-selling dishes

Guest

The table orders for itself

A camera on the code at the table, and the menu opens in the browser — in Turkmen, Russian, English or Turkish, with no app and no sign-up.

Every phone at the table adds to one order, each guest’s dishes under their own name, and the bill reads the same way. A waiter or the bill is one tap away.

The page wears the restaurant’s own look, keeps the menu readable with no signal, and is the only place a review can be written — by somebody who sat there.

Michelle Cafe, table 5

390 px · a phone over a plate

The table — reviews, hours and the sections as photos
The table — reviews, hours and the sections as photos
A section — every dish with its photo and price
A section — every dish with its photo and price
A dish — its options, a note, how many
A dish — its options, a note, how many
The cart — each guest’s dishes under their own name
The cart — each guest’s dishes under their own name
The order — accepted by the waiter, in real time
The order — accepted by the waiter, in real time
The bill — dishes, service, and what to pay
The bill — dishes, service, and what to pay
Call a waiter — one tap, and it says one is coming
Call a waiter — one tap, and it says one is coming
Reviews — only from people who sat at a table
Reviews — only from people who sat at a table
The place — hours, the way there, how to reach it
The place — hours, the way there, how to reach it

Places

Found before anybody sits down

Every restaurant on the system also gets a public page in the directory at sahypa.menu: its menu, its hours and its reviews, sorted by name, by rating, or by who is open now.

The places directory: search, sorting by name, rating or open now, and restaurant cards with their photos

Waiter

The whole floor in a pocket

Waiters use their own phones. The room opens in a browser from the restaurant’s own server, so there is nothing to install and nothing that needs the internet.

One screen: the tables, the calling ones first. A new round rings in two rising runs, a call in three pulses — told apart without looking.

The stop list sits in the header. A dish marked out there leaves every guest’s menu at once, so nobody orders what the kitchen no longer has.

The room — every table, the calling ones first
The room — every table, the calling ones first
A new round — checked and accepted in one tap
A new round — checked and accepted in one tap
A table — its rounds and its check
A table — its rounds and its check
The stop list — a dish off every guest’s menu at once
The stop list — a dish off every guest’s menu at once
Settings — sound, the colour scheme, sign out
Settings — sound, the colour scheme, sign out

What it knows

A scan leaves more than an order

A restaurant has never had a way to count the people who walk in. Here every phone that scans is counted — as a device, not as a person, which is a distinction the panel makes in writing.

Some of it is service, this minute: a table whose phones are about to die shows the waiter a figure, because a dead phone is a table that has to be served by hand — the round taken on paper and the bill carried over.

The rest is the restaurant’s own trade: who came back, what they order every time, which sections guests open, and how far a phone gets before it stops short of ordering.

The waiter's room: table 2 carries a 9 per cent battery chip beside its guest count
9% at table 2. It shows at twenty per cent and below, takes the lowest phone at the table, and is forgotten after half an hour — a healthy battery is not news, and an icon on every table is an icon nobody sees.
The panel's guests board: devices, new in 30 days, who came back, and rounds that came from a phone
Devices, not people. The board says so under its own table: a cleared browser, a private tab, a second phone or a shared one each start a new guest, and returns are undercounted. A screen that promised «regulars» would be claiming more than the row holds.
One guest's page: visits, rounds, what they spent, what they keep ordering, and every visit with its tickets
What this one keeps ordering. Every seating, every ticket inside it, and a private name and note the restaurant writes for itself — «Meret, table by the window». None of it leaves this restaurant.

And the part it refuses to know

No account, ever

No sign-up, no phone number, no app. A phone mints its own token, the server keeps it in a cookie it set, and it never travels in a link — a token in a query string is a credential in every proxy log.

One restaurant’s own guests

«First seen» means here, not on the platform: a restaurant is never shown where else a guest eats. Ask for somebody else’s guest and the answer is that there is no such guest.

Nothing reaches the till

Guest history, events and reviews stay in the cloud and never replicate to the restaurant’s computer. The machine on the floor has no question they answer.

The funnel counts itself honestly

Menu opened, section opened, dish opened, cart opened — measured by the product itself, with no third-party script on a guest’s phone, and sent only after the screen has already drawn. The fifth step is read from the orders, so the surface being measured cannot inflate its own figure.

A review comes from a seat

Only from a table the restaurant’s own staff closed, once per seat, within a fortnight. The restaurant may answer it or report it, and only the platform can take it down — until then it stands exactly as written.

Nobody is named

A guest is the number their table calls them. The name in the panel is the restaurant’s own note to itself, and the guest is never shown it.

Till

An ordinary Windows computer is the till

One installer turns any Windows computer into the till and the restaurant’s server at once. A second till, or a waiters’ station, sits beside it.

Who signs in decides what they see: a cashier gets the room, takeaway, checks and the drawer; a waiter only the room and the stop list. Everybody signs in with a PIN.

It stops behaving like a web page: no right-click menu, no photo peeled off the screen, no zoom — a double tap adds a second portion instead.

Sign-in — pick yourself, type a four-digit PIN
Sign-in — pick yourself, type a four-digit PIN
The room — every table by area, takeaway and delivery on top
The room — every table by area, takeaway and delivery on top
A table — the dish grid on the left, the round building on the right
A table — the dish grid on the left, the round building on the right
A dish with a choice — size, extras, and what each costs
A dish with a choice — size, extras, and what each costs
Sent — every line accepted, the table’s total waiting to be paid
Sent — every line accepted, the table’s total waiting to be paid
Payment — cash, card or both, and the change in green
Payment — cash, card or both, and the change in green
The change screen — it stays until somebody dismisses it
The change screen — it stays until somebody dismisses it
Takeaway — a sale over the counter, straight to payment
Takeaway — a sale over the counter, straight to payment
The drawer — float, takings, movements and the shift’s close
The drawer — float, takings, movements and the shift’s close

Panel

The owner sees it from home

The panel opens in any browser: the menu with photos and a stop list, the floor with its QR codes, staff with a PIN and permissions each.

A paper menu in the restaurant’s own colours and fonts, A4 or A5, straight to PDF — and one sheet with every table’s code, to print, cut and stick. The code never changes.

Revenue, the average check, what sells and how staff perform, for any period, out to Excel. Reviews arrive here too, and get answered where the guest will read it.

Summary
SummaryThe day so far — revenue, checks, the floor, what sells
Menu
MenuSections as photos, in the order a guest sees them
A section
A sectionEvery dish, its price, and whether it is on
Floor
FloorZones and tables, each with the code a guest scans
Staff
StaffA role, a PIN and permissions per person
Orders
OrdersWhat each table ordered and where the ticket got to
Analytics
AnalyticsAny period, by section or by dish, out to Excel
Reviews
ReviewsRead, answered, or reported
The printed menu — Its own colours and type, A4 or A5, straight to PDF
The printed menuIts own colours and type, A4 or A5, straight to PDF
The table codes — One sheet to print, cut and stick — the code never changes
The table codesOne sheet to print, cut and stick — the code never changes

Paper

Four slips, and none of them stops a shift

The kitchen ticket says what to cook and nothing about money. It prints when a waiter takes a round — or accepts one a guest sent — so it prints exactly once.

The table’s bill prints when a waiter presses for it, or when the guests ask for it from their phones — the cloud takes the tap, and the printer in the room answers by itself.

The receipt ends on the total, so a copy printed later reads like the first; the Z-report closes the drawer on a blind count. A printer that is off or out of paper never fails any of it.

Kitchen ticket — No prices, one per station
Kitchen ticketNo prices, one per station
The table’s bill — Ends on what is owed
The table’s billEnds on what is owed
Receipt — The total as the last line
ReceiptThe total as the last line
Z-report — The shift, counted blind
Z-reportThe shift, counted blind

Server

Internet’s down — the shift goes on

The restaurant runs its own copy of the system on the till’s computer — Postgres inside the app, nothing else installed. The orders, the tables, the till and the printing live there.

So the provider can drop and the floor does not notice: waiters, the till and the printers talk to the server in the room, not to the cloud.

When the line comes back, whatever piled up goes to the cloud by itself, in order. Nobody presses anything. Pull the cable below and see.

Everything is in the cloud
sahypa cloudpanel · directory · backupsRestaurant serverorders · till · printing · menuTillWaiters’ phonesKitchen printerBar printer
Orders on the floor: 0Waiting for the cloud: 0

A drawing of the behaviour; the counts are the drawing’s own.

And the owner can see that it is up

The panel lists the restaurant’s own computer, whether it is up and when it last said so — the one page that answers “is the till talking to us?” without a phone call.

The panel's restaurant server page: the machine, its state and when it was last seen

How it runs

Built for a restaurant to run alone

Four languages

Turkmen, Russian, English and Turkish on every screen — the guest’s, the waiter’s, the till and the panel. A dish’s own name is translated by the restaurant, and the guest’s phone picks it up.

People

Owner, manager, waiter and cashier, each with permissions of their own and a PIN for the floor. The till draws only the doors a job needs, and every door still checks on its own.

Updates

The restaurant’s computer checks for a new version every fifteen minutes and installs it only when the shift is closed. If the new one does not come up healthy, it rolls itself back.

Backups

Every six hours, checked for integrity, kept on the computer itself — so the restaurant’s own data does not depend on the line out of it either.

Paper

Kitchen tickets, receipts and the Z-report go to ordinary network thermal printers. A printer that is off or out of paper never fails an order, a payment or a closed shift.

The bill, asked for from the table

Guests press «ask for the bill» on their phones. The cloud takes the tap, the restaurant’s own machine decides from its own database whether anything has changed, and prints once — a second identical request prints nothing, and a jammed printer leaves the next one free to try.

Who owns what

There is no merge: every kind of record has one owner. The price of a dish is the cloud’s, having run out of it is the kitchen’s, and a ticket is born in the cloud when a guest scans and becomes the machine’s the moment the floor accepts it. A new kind of record does not compile until somebody has decided.

A code that outlives us

A table’s address is derived, not stored: six characters with no 0 or O, no 1 or l, drawn once for the restaurant and never changed. Printed codes outlive deployments, so nothing on the wall has to be reprinted.

The public page

Every restaurant on the system is in the directory at sahypa.menu, with its menu, hours and reviews — and a review can only come from a table somebody actually sat at.

0

products on one system, in one subscription

0

languages on every screen — Turkmen, Russian, English, Turkish

0

places in the public directory

What came out

Live at sahypa.menu — the menu, the directory and the panel in the cloud, the till and the server on the restaurant’s own computer

Five products in one subscription, with sahypa.delivery next on the same core

161 places already in the public directory, each with its menu, hours and reviews

NestJS · React 19 · Tauri 2 · PostgreSQL · PGlite · PWA

sahypa.menu
Next projectBelet Film