Seat booking for a community theater
Your task
Design online booking for a community theater with a 300-seat hall and about 120 performances a year. Buyers pick specific seats on a seat map, the seats are held for 10 minutes while they pay through a card payment provider, and then the booking is confirmed. Most performances sell slowly, but the holiday show goes on sale at a set time and about 3,000 people try to buy in the first few minutes. Two buyers must never get the same seat, a held seat must come back if the buyer gives up, and a buyer who paid must get their seats. Describe the data model, the hold and confirm flow, and what happens when a payment succeeds after its hold has expired.
It covers
- Seat holds
- Conditional updates
- Payment webhooks