Concept build · Bergquelle is a fictional spa. No real client, no real bookings. · Reservations are held in memory and clear on a server restart.

concept · real-time booking

Bergquelle Day-Spa

An alpine spa, if it existed. Book a treatment and watch availability update live: open this page in a second window and a slot you take here vanishes there in real time, no double-booking possible. The same engine is a physio practice, a barber, or a restaurant, just different services and hours.

connecting to the booking service…

The hard part of any booking flow is being genuinely impossible to double-book. Availability is computed on the server as opening hours − bookings − holds, with overlaps treated as intervals (a 90-minute ritual blocks the room for every service), and every change is pushed to everyone watching that day over a WebSocket.

slot computation · this day + treatment

free
0
held
0
booked
0

hold → booking lifecycle

free held booked

Selecting a slot places a short server-side hold tied to your connection. It converts to a booking on confirm, or is reaped by a TTL sweep on timeout, abandonment, or disconnect, so a slot can never be stuck reserved by someone who walked away.

/ws/booking · open this page in a second window and watch a hold land here live

no traffic yet…

Bookings and holds live in memory and clear on a server restart (the same honest choice as the collab rooms and the transit cache). One shared resource is modelled here; per-therapist availability would make it a genuinely multi-resource scheduler, a natural next step.

© 2026 jDKOderso