We launched a managed system where an administrator builds the daily menu, visitors place pre-orders on the website and receive a QR ticket, and staff hand out meals through a fast code check in the back office.
A web solution for the canteen of a sports center, combining a public-facing ordering flow with an internal back office for content and meal operations. A visitor picks dishes from the daily menu, confirms the order, and receives a QR ticket. A canteen employee scans the code in the admin panel, sees the order contents and redemption status, and then hands out the meal.
The client is a large training center for athletes and a venue for major sporting events, operating as a full-cycle campus — training infrastructure, educational spaces, accommodation, catering, recovery, and medical and paramedical support all in one place. The setup lets athletes and teams attend camps, training sessions, and events with minimal logistical friction. The center serves a very high annual user volume, works with national and international sports organizations, and regularly hosts elite camps and events.
QR ticket for pickup
The ticket had to be easy to verify, resistant to screenshot reuse, and unambiguously marked as redeemed after use.
Daily menu updates
The administrator had to update dishes, stock limits, and availability for different visitor groups in minutes — without breaking the ordering logic.
Pickup during peak hours
Ticket scanning and verification had to be fast, require minimal clicks, and surface a clear result for the staff member at the counter.
Roles and permissions
Not every team member needs access to content or menu editing. Some only need scanner mode, so the access boundaries had to be drawn cleanly.
Repeated use
The system had to catch repeated attempts to reuse a ticket and make it obvious to staff that the ticket had already been redeemed.
AI support
AI had to help staff and administrators with checks and hints — but never make a final decision without a human in the loop.
We designed the solution as a public ordering client, Directus as the back office, a Node.js API for the ticket lifecycle, and a dedicated scanner module embedded inside the admin panel.
Directus as the single back office for content and food operations
We modeled the data structure for site pages, the daily menu, dishes, availability restrictions, and orders. The administrator runs everything through one interface, with role-based access tuned to each job function.
Node.js API for orders and the ticket lifecycle
We implemented the server-side logic for order creation, ticket generation, status verification, and redemption. Validations went in to block empty tickets or invalid dish combinations before they ever reach the kitchen.
QR ticket as a protected token with a controlled status
Each ticket is a signed token linked to the order record, validated by the server. After scanning, the system immediately reflects the current status — new, used, expired, or invalid.
Scanner inside Directus as a dedicated extension
The Scanning screen lives inside the admin panel: camera access, QR reading, the order card, the ticket status, and a single redemption action. Staff see exactly what they need to hand out the meal — nothing more.
AI hints for staff during scanning
AI runs as a hint layer with strict authority limits. It analyzes order context and flags risky situations — repeated use, unusual combinations, common input mistakes, or conflicts with daily menu rules. For the operator, it appears as a short prompt next to the status, helping them decide faster.
AI quality control for menu administrators
The same AI layer assists during menu editing. It surfaces missing allergens, weight, or category fields, duplicate names, illogical pricing, and availability mismatches across visitor groups. The result is fewer downstream errors at the moment of meal handout.
We started by defining the real canteen operations — who builds the menu, who takes orders, who hands meals out, the most common reasons queues form, and the points where staff make mistakes most often. We captured the rules that previously lived only in the heads of a few experienced people: when pre-orders close, what to do if a dish runs out, how to handle guests with different access rights, how meal pickup gets recorded, who's allowed to change the menu. The output was a clean menu of the day → order → ticket → handout flow with explicit control points that later became statuses and roles.
+1 Resource
After launch, the client got a managed catering system with a clean meal-handout flow and minimal manual work around it.
handled by the system on a typical day
for staff to hand out a single order
on a re-scanned ticket
menu admin, canteen manager, scanner operator — each sees only what they need
can be added by the administrator without chaos
to update the menu for the day
scanned per month
as events — who scanned, what the result was, when
caused by human factors
Or send us a message and we'll get back to you within 15 minutes during business hours