Product
- Mobile-first banquet constructor with 15-category navigation and Ukrainian search.
- Adult and child counts, separate kids’ table, live total and per-guest estimate.
- Sticky order controls, bottom sheet and local order persistence.
Case study / 04
A banquet order guests can compose themselves — live totals, cost per person and pairing suggestions, with no backend.




The problem
Cafe Cocos in Novyi Rozdil took banquet bookings over the phone from a printed menu. Guests could not estimate a per-person cost or assemble a balanced order on their own.
The useful answer was not another admin system. It was a focused tool in the guest’s browser that hands a clear, formatted order back to the cafe’s existing Viber workflow.
The system
The product keeps its complexity in explicit data and small deterministic functions. There is no database, server session or AI call behind the interface.
Production workflows
The valuable part is not the cart UI by itself, but the path from a printed menu to a message staff can process without learning another system.
Interactive previews
Both previews run locally in this page. The dish names, prices, totals math, order format and pairing branches come from the shipped product.
Add dishes, change the guest mix and inspect the exact order text handed to the cafe.
Numbers
A restaurant's entire menu, digitised once and running with no backend at all — the smallest system on this site, and the one guests use most.
What this proves
A production Next.js product can stay static when the workflow does not need a server.
02The cafe’s menu knowledge becomes inspectable, testable logic instead of a vague recommendation layer.
03The product hands a structured order into Viber instead of forcing a new operating process on the cafe.