Tables and floor plans
Floor plan = restaurant zone
A floor plan represents a physical zone: main dining room, terrace, bar, private room, VIP. Each plan has its own canvas with coordinates and groups the tables that live in that zone.
A restaurant can have one or several active plans at the same time.
Create, rename, delete plans
In the editor (Settings → Tables):
- + New zone → dialog with name. Creates a 1000x700 px canvas.
- Rename → edit the name on the active tab.
- Delete zone → only if you have more than one plan. The tables aren't deleted, they're just unlinked and you can reassign them.
Create tables and move them with drag & drop
- + New table creates a table at the center of the canvas with an auto-generated name and capacity 2.
- Drag & drop on the canvas with snap to a 20 px grid.
- Drag threshold: 8 px (on tablet/mobile this prevents accidental drags on taps).
"Undo" button after moving
When you move a table, a toast with an Undo button appears. It captures the previous position and lets you revert with one click. Covers 90% of the real case (accidental drag during peak service).
Table properties
- Capacity: how many people fit.
- Shape: rectangle (default) or circle.
- Rotation: 0-359 degrees, with quick -90 / +90 buttons.
- Visual size: 40-400 px width/height (does not affect capacity).
- Zone: dropdown to reassign to another plan without moving it visually.
Merge group: combine tables for large groups
For groups that take up several tables:
- In the table list, the Combines with column - you enter a code (
A,B,Group 1). - The Order column - you number the tables in the group (1, 2, 3).
When a large reservation needs that group, RestaPro assigns the tables as a block. They're highlighted as a set visually.
One-off table block
Table blocks mark a table as unassignable during a time range:
- Maintenance ("table 4's leg broke").
- Private event at a specific table.
- Zone reconfiguration.
In the service view, the table appears in gray (blocked state) and isn't offered as an assignment option. It expires by itself when the range ends.
Visual states
| Color | State | Meaning |
|---|---|---|
| Light green | Free | No reservation or block |
| Light red | Busy | Confirmed reservation in this time slot |
| Dark green | Seated (arrived) | Customer is on the floor |
| Gray | Blocked | Active table_block |
| Blue | Selected | Marked for editing |
Badges can appear on each table: red ⚠ (high-risk customer), gold star (frequent customer), clock (minutes seated / overstay).
Live service view
/app/local takes you to a tablet-optimized screen for floor/expediter use:
- Large floor plan with every table.
- Sidebar with the day's reservations sorted by urgency.
- Live KPIs: seated, free tables, pending, no-shows today, occupancy.
- Drag & drop from the sidebar to a table to assign reservations.
In kiosk mode there's also the global "Accept reservations" toggle that closes the public channel indefinitely (careful: it doesn't reopen by itself, see Service pause for temporary closures).
Mobile
The floor plan can be scrolled with your finger. Pinch zoom isn't implemented yet. For quick reassignments, open the reservation detail and use the table selector.