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
hold → booking lifecycle
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
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.