Case 01 / 05Website and a separate booking system with staff screen2026Launching soon

Two products for one venue. The website, in three themes on the QUEM brand. And separately our own booking system where guests book a lane, a table or both, with a live staff screen for the team. That system lives on as a product: JABL Reserve.

bistroboules.nlBistro & Boules
bistroboules.nl
Bistro & Boules: Website and a separate booking system with staff screen
Screenshot of the work

The brief

A new concept from the owners of Het Magazijn: bistro, four pétanque lanes and a bar. Requirements: book on a phone in a few taps, no account, the price always visible. And fewer calls for the floor team.

What we did

Three design directions on the QUEM brand, built as switchable themes in one codebase. Underneath, one domain for rules, prices, availability, Mollie payments, transactional email and a real-time staff screen.

10steps in the booking flow, one question per screen
3complete themes in one codebase
0accounts needed to book or change
2step verification for management

What we built

Bistro & Boules
  • The website

    Bistro, boules and bar in three complete themes on the QUEM brand, built in Next.js. The menu is real text on the site, with allergens, and the venue edits copy and pages itself in Payload CMS.

  • Booking flow without an account

    Ten steps, one question per screen. Choices stay as chips; going back loses no state. During payment the slot is held for ten minutes.

  • Rules engine

    Lanes are calculated by capacity (max. ten players per lane). Off-peak pricing Tue–Thu before 16:00, closed days and the group threshold (21+ becomes a request) are configurable. Email typos are caught.

  • Payments and email

    Mollie with iDEAL, card and Apple Pay. Final only after server-side verification of the webhook. Confirmation, reminder, change and cancellation through Resend and React Email, with self-service via a secure link.

  • Staff screen

    Real-time timeline of lanes and tables on the tablet. Drag-and-drop rescheduling, walk-ins and phone bookings. Sign-in per staff member with a PIN, auto-lock after five minutes.

  • Admin and CMS

    Lanes, prices, opening hours, emails, users and integrations behind two-step verification, with occupancy per hour per week. Content through Payload CMS 3.

  • GuestPlan integration

    Tables run through the GuestPlan Booking API and stay in the existing system. Our own table module runs in shadow mode, ready to take over.

In pictures

Scroll to browse
bistroboules.nl
The quick-book block on the homepage: pick what, how many and when. Free times come live from the system.
01The quick-book block on the homepage: pick what, how many and when. Free times come live from the system.
bistroboules.nl
The booking flow opens as a panel, with a running summary on the right.
02The booking flow opens as a panel, with a running summary on the right.
bistroboules.nl
Five of the ten steps in theme 3.0, on the phone.
03Five of the ten steps in theme 3.0, on the phone.
bistroboules.nl
The staff screen: lanes on a timeline, status in colour and in words.
04The staff screen: lanes on a timeline, status in colour and in words.
bistroboules.nl
The same screen in theme 1.0, with group requests for the manager.
05The same screen in theme 1.0, with group requests for the manager.
bistroboules.nl
Management: lanes, prices and hours, and a weekly occupancy overview per hour.
06Management: lanes, prices and hours, and a weekly occupancy overview per hour.
bistroboules.nl
The emails guests receive, on brand and readable in Gmail, Apple Mail and Outlook.
07The emails guests receive, on brand and readable in Gmail, Apple Mail and Outlook.
bistroboules.nl
Theme 1.0, French and playful, with paper layers and illustrations.
08Theme 1.0, French and playful, with paper layers and illustrations.
bistroboules.nl
The menu as real text on the site, with allergens. No PDF.
09The menu as real text on the site, with allergens. No PDF.

The hardest part

One booking, two systems: a lane from our own domain and a table from GuestPlan have to line up, even when a payment fails or a guest abandons the flow. The fix: payment leads. Everything is held for ten minutes and only becomes final after Mollie’s confirmed webhook.

Under the hood

Languages, frameworks and integrations
Languages
TypeScript, SQL
Framework
Next.js 16, React 19
CMS
Payload CMS 3
Data
PostgreSQL, Drizzle ORM
Integrations
Mollie, GuestPlan Booking API, Resend + React Email
Motion
Lenis, custom animation, reduced motion
Quality
Playwright, Vitest, axe-core, Lighthouse, visual regression tests
Hosting
Own VPS in the EU, Docker, Caddy
From project to product

This platform is now a JABL Works product of its own.

Explore JABL Reserve
Next case — 02 / 05Collett CoreCustom software for inventory, VAT and consignment