HandyCafe Docs
owner it-admin

Floor Plan and Tables

The Floor Plan editor is a visual canvas for arranging your tables. The Tables page is a per-table operations view for details and actions. Both screens work on the same underlying table records.

Floors

Floors group tables by physical location, for example "Main Hall", "Mezzanine", or "Outdoor Patio". You create and manage floors from Settings > Cafeteria.

Every cafe needs at least one floor. Tables are always assigned to exactly one floor. You can reorder floors with move-up and move-down controls, and the top floor becomes the default when the Floor Plan tab opens. The Floor Plan page also offers an "All floors" pill that shows every table in a combined view.

Floor Plan Editor

The Floor Plan editor renders on a 1200 by 720 canvas with a 10-pixel grid. Tables appear as shapes at their stored positions. The editor supports two display modes:

Mode Use it for
2D Editing and arranging. Drag tables, add or remove, rename.
3D Presentation and walk-throughs. The canvas tilts using CSS perspective to produce an architect-style dimetric view. Drag is disabled in 3D mode because pointer mapping is ambiguous on a tilted canvas.

Adding and Positioning Tables

  1. Open Cafeteria > Floor Plan.
  2. Pick the target floor from the floor pills at the top.
  3. Click Add Table. A new table appears at the canvas origin with default shape, size, and seat count.
  4. Drag the table body to your desired position. Position is saved automatically when you release the mouse button.
  5. Repeat for each seat group.

Positions snap to a 10-pixel grid so that aligned tables feel orderly without requiring pixel-perfect placement.

Table Properties

Every table has the following editable fields:

Field Meaning
Code Short identifier printed on the QR and visible to staff. It must be unique within your cafe.
Display Name Longer label shown to staff, for example "Window 3" or "Booth A".
Seat Count Number of seats at the table. Default is 2.
Shape One of: square, rectangle horizontal, rectangle vertical, round.
Size Integer from 1 to 10. Controls the render size in the editor and on the 3D view.
Floor The floor this table belongs to. Tables can be moved between floors by editing this field.
State idle, in_use, or out_of_order.

Table States

State Meaning
idle No active session. No customer can place an order until you seat them.
in_use A security code is active. The customer can scan the QR and order.
out_of_order The table is unavailable. It appears dimmed on the floor plan and the QR page shows an unavailable notice. Useful for maintenance or furniture repair.

Seating a Customer

To accept orders from a table, staff must seat the customer. Seating issues a security code and moves the table into the in_use state.

  1. On the Tables page or from the Floor Plan action menu, select the table.
  2. Click Seat Customer (also labeled "Open Table").
  3. The system generates a 6-digit security code and displays it.
  4. Hand the code to the customer. They type it after scanning the QR.

The code is shown in plain text only at the moment of generation, and when an administrator opens the Show Code dialog for an already-seated table. It is hashed server-side. The code expires after a default duration and can be rotated or reset at any time.

Showing and Rotating the Code

  • Show Code. Displays the currently cached plain text code for the open table. Useful when the customer did not catch the number the first time. This action does not rotate the code and does not invalidate the previous QR.
  • Rotate QR. Generates a new QR token for the table. The previous QR sticker becomes invalid. Use this when you reprint the sticker or when you suspect the old QR has been shared externally.

Closing a Table

When a customer leaves without a pending bill, click Close Table. The security code expires immediately, the table returns to idle, and any further scan attempts require a new seating.

If there are unpaid orders on the table, use Settle Check instead. Settlement closes all open orders with a chosen payment method and then returns the table to idle. See the Orders page for the settlement flow.

QR Codes

Each table has a QR code that encodes the URL handy.cafe/{cafe-slug}/{table-code}. A query parameter carries the QR token that proves the sticker is authentic. When the customer scans the QR:

  1. The menu page resolves the slug and table code against the cloud API.
  2. If the table is in in_use state, the customer is asked for the 6-digit security code.
  3. On a successful check, a session token is issued and stored in a cookie and a Bearer token fallback. The Bearer fallback exists because iPhone Safari may block third-party cookies in some configurations.

Generate the printable QR from the Tables page. Each table has a QR preview that you can save as an SVG or PNG. Reprint stickers whenever you rotate the QR token or change the slug.

Tips for Designing a Floor Plan

  • Start by mapping the real layout to the canvas. Place the entrance near one edge and work inward. This makes it easier for staff to orient themselves.
  • Group tables by floor even if your venue has just one level. "Hall" and "Terrace" as separate floors lets you filter the order dashboard by area.
  • Use larger Size values for booths that fit four or more people and smaller values for counter stools.
  • Mark tables out_of_order when furniture needs repair so customers cannot place orders on them. Do not delete the table record unless the seat is gone permanently.