Concepts
Bookings
The booking is the core object in Seshn. It represents a reserved slot of time for a contact at a service.
Lifecycle
Bookings move through a defined set of states:
Atomic seat reservation
Seshn uses row-level locking (SELECT ... FOR UPDATE) to prevent double-booking. When two requests try to book the last seat simultaneously, one succeeds and the other gets a clear error — no race conditions.
Hold → Pay → Confirm
For paid services, Seshn supports a three-step pattern: hold the slot (reserving capacity), collect payment via Stripe, then confirm the booking. If payment fails, the hold expires and the slot becomes available again.
Recurring bookings
Create a booking series for weekly, biweekly, or monthly recurring bookings. Each occurrence is a full booking with its own lifecycle — cancel one without affecting the rest.