Sections, table combinations & QR codes
Tables can be grouped into sections, combined on the fly for large parties, and tagged with QR codes that send guests straight to the per-table menu view.
The floor plan is the spatial layer. Sections, combinations and QR codes sit on top of it — they decide which tables can be assigned together, how they're grouped, and how a guest can identify a specific table.
Sections
A logical grouping of tables — for example indoor, terrace, bar, private room. Sections are visible in the floor plan, in the reservation dialog and in reports.
A section has a name, a display order and a color. Sections can be opened or closed per service — handy for closing the terrace on a bad-weather day without redrawing the floor plan.
Table combinations
Two or more tables can be joined into a combination. A booking for eight then occupies tables 3+4 as one unit, instead of blocking two separate ones. A combination is only bookable when every member table is free.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| tables | uuid[] | — | — | Tables in the combination. Order determines the display label. |
| min_party / max_party | integer | — | — | The combination is hidden for parties outside this range. |
| auto_split_minutes | integer | — | — | After this idle window the combination is split back into individual tables. |
Per-table QR codes
Each table — and each combination — can carry a QR token. The token is part of the URL /widget/{restaurantId}/menu/table/{qrToken}. Guests scan the QR on the table, land on the restaurant's menu — and the table context flows directly into the ordering or reservation step.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| qr_token | text (unique) | — | — | Random URL-safe token. Can be rotated without deleting the table. |
| reservation_type | slug (optional) | — | — | Binds the table to a reservation type (e.g. "Terrace") so the guest only sees matching slots. |
| print_label | string | — | — | Optional label printed alongside the QR (e.g. "Table 12"). |
Blocking a table
BlockTableDialog takes a table out of rotation temporarily — for a private event, a repair, or a regular who walks in. The table goes red on the floor plan, smart assignment skips it, and the block records a reason and a time window.