Designing a Booking System That Does Not Double-Book

Designing a Booking System That Does Not Double-Book

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

Our network