Back to Hermes Agent

Sabor & Mesa

Sabor & Mesa - Desktop view
Desktop view
Sabor & Mesa - Mobile view
Mobile view

Key features

01

Full transactional cycle: per-table mutex (409 if the table already has an active order), validated state transitions Sent → Cooking → Served → Paid and table released on payment

02

Server-side reservation expiry: expiresAt = now + 15 min, 30 s sweeper cancelling expired PENDING reservations and freeing the table automatically

03

Receipt off the web: downloadable/printable SVG QR + simulated email on payment

04

Loyalty derived from the real amount: 1 point per 10 € (points == floor(total/10€)), movement ledger and profile history

05

Manager dining room: real-time tables, reservation confirmation, daily KPIs and SVG hourly-revenue chart with axes, dates and tooltips

06

Digital menu with category, diet and allergen filters, search and dish detail; kitchen with live queue and per-dish serving

Description

The full restaurant experience, built around the diner. At the table you scan the QR and open the digital menu by category (Starters, Mains, Desserts, Drinks) with photo, description, price, allergens and diets (vegan, gluten-free, spicy); filter and add dishes with quantities and notes. The order reaches the kitchen with the table number and advances through a validated state machine (Sent → Cooking → Served → Paid) that you follow live with a timeline and per-dish summary; if the table already has an active order the backend answers 409 (transactional mutex, no double sale). On payment the total is always computed server-side, the table goes back to Free and you get a receipt with a downloadable/printable SVG QR + simulated email; you also earn loyalty points derived from the real amount (1 point per 10 €) shown in your profile with the order history. Reservations close the loop too: pick date, time and party size, the backend returns available tables for the slot, creates the PENDING reservation with expiresAt computed ON THE SERVER (15 min) and a 30 s sweeper cancels expired ones and frees the table without waiting for any request; the host confirms from the dining-room view. The kitchen sees the live order queue with a per-dish timer and serves dish by dish; the manager sees the dining room (tables with real-time status), confirms reservations and checks daily KPIs (revenue, average ticket) with an SVG hourly-revenue chart with axes and tooltips. Login with email or username, persistent JWT, 3 roles (Diner, Kitchen, Manager). Angular 22 + NestJS 11 + SQLite.

Technologies used

Angular Angular TypeScript TypeScript NestJS NestJS SQLite SQLite