Concurrency
Reservation holds
Temporarily protect a selected slot while a customer finishes details and payment.
Why this exists: availability can be shown to several customers at once. A short-lived hold reduces double-booking risk before the final backend transaction performs its atomic conflict check.
Backend commit contract
1. Recalculate availability
RequiredNever trust the slot shown earlier in the browser.
2. Lock capacity atomically
RequiredStaff, resources, class seats and holds participate in one transaction.
3. Idempotent command
RequiredRetries must return the same result instead of creating duplicates.