A restaurant that books like an app.
Il Riccio has served Luxembourg City since 1992. We photographed the house, then built it its own booking system — card deposits on group tables, accept or refuse from a phone, and no monthly platform fee. Funded through SME Packages.

- Client
- Il Riccio — trattoria, Luxembourg City, since 1992
- Sector
- Hospitality
- Services
- Photography · Positioning · Web design · Custom reservation system · Integrated payments · PWA
- Stack
- Symfony · Twig · Stripe · SendGrid · PWA
- Funding
- SME Packages — Digital
Il Riccio is a trattoria on rue Beaumont, in Luxembourg City, open since 1992. Thirty years of service, a room full of regulars, and a ceramic hedgehog on the table — the riccio that gave the house its name.
We started by photographing it. Luca, the room, the walls covered in thirty years of signed photographs. Then we built the trattoria a booking system it owns outright: one that takes a card deposit on group tables, lets Luca accept a reservation from his phone in one tap, installs to a guest's home screen like an app — and costs nothing per month to keep running.

Book your table in one tap — just like a real app.
The problem
Two things were quietly costing Il Riccio money.
The first was group bookings that never showed up. A table of ten that doesn't turn up is an evening's service prepared for nothing — the produce bought, the staff rostered, the room held. It happened often enough to matter.
The second was the bill for the platform meant to fix it. A booking service like Zenchef is a subscription that renews whether it fills your room or not, wraps your restaurant in someone else's branding, and keeps your guest data on someone else's servers. Luca wanted the system without the recurring cost — and he wanted it to be his.
The photography
You can't sell a room you haven't looked at. Before writing a line of code, we shot the trattoria: Luca with the hedgehog that gave the house its name, the wood panelling, the plates on the walls, the tables laid under thirty years of framed diplomas and signed portraits.
That's what the site now leads with — not stock photography of pasta, but the actual room a guest walks into.


What we built
- 01
A reservation flow of its own
A custom booking journey built in Symfony and Twig, living on Il Riccio's own domain, in Il Riccio's own design. No commission per cover, no monthly subscription, no third-party branding. The guest data stays with the restaurant.
- 02
A deposit that ends the group no-shows
For tables of more than five, the booking takes a card: €10 per person, charged immediately through Stripe and deducted from the final bill. Fully refundable up to 48 hours before the reservation. It isn't a fee — it's a commitment, and the money comes back to the guest either way.
The amount is computed server-side, so it can't be tampered with in the browser. Apple Pay and Google Pay work natively through the Payment Request Button. A Stripe webhook confirms the payment and SendGrid sends the confirmation to both the guest and the restaurant. Anyone who'd rather not pay online is one tap from WhatsApp.
- 03
The booking desk, in Luca's pocket
Luca sees every request on his phone: who's coming, how many, and whether the deposit was authorised, accepted or refused. He accepts — or declines — in a single tap, and the guest's confirmation goes out on its own.
No back-office to learn, no laptop to open in the middle of service. The restaurant is run from the floor, so the tool lives there too.
- 04
An app, without the app store
The site is a PWA: guests install it to their home screen and it opens full-screen, straight on the booking screen, with its own icon and a splash screen colour-matched through the manifest. Android gets the native install prompt. iOS offers none, so we wrote our own install sheet — Tap Share → Add to Home Screen → Add — and handled the fact that iPadOS reports itself as a desktop Mac.
The line Luca uses is the honest one: book your table in one tap, just like a real app.
- 05
Group and private dining, kept separate
Large parties and privatisations don't belong in the same funnel as a table for two. They get their own path, so the kitchen knows what it's saying yes to before it says yes.
The details nobody sees
Most of the work in a booking flow is invisible, and all of it is the difference between a table reserved and a guest who gives up.
- Date and time inputs that behave on iOS Safari, not just on a desktop browser.
- Font sizes at or above 16px, so Safari doesn't zoom the page every time a field is tapped.
- The payment button working identically in a browser tab, in the installed PWA, and inside Instagram's in-app browser.
- Stripe webhook retries handled idempotently, so a network hiccup never double-charges anyone.
- Icons, splash screens and manifests generated for every device the restaurant's guests actually use.
Paid for by SME Packages
The whole thing — photography, site, reservation system, payments, PWA — was built under the State's SME Packages digital grant, which covers 70% of the project. Il Riccio paid a fraction of the cost, and swapped a subscription that renewed every month for infrastructure it now owns.
The point
The guests took to it immediately, and so did Luca. Group tables now commit, confirmations arrive without anyone typing them, the guest list belongs to the restaurant, and no platform takes a cut — or a monthly fee — for a table the trattoria filled itself.
Thirty years of word of mouth, finally with somewhere to land.


