October 15, 2026 · By Laravel Booking
A booking system has one job: never promise the same slot twice.
Store time in UTC
Save every start and end time in UTC and convert at the edge. Show each guest their own time zone and say which one it is.
Lock the slot
Two people can click the same slot at once. Check availability and create the booking inside one database transaction, with a unique constraint as the last line of defence.
Model event types, not just slots
A 30 minute call and a 2 hour workshop have different lengths, buffers and limits. Keep those rules on the event type so you can add new kinds of booking without new code paths.
Guides