Movie Ticket Booking (BookMyShow)
Browse shows, hold seats temporarily, and confirm bookings under heavy contention.
Hard50 minSeat lockingHold expiryPayments
Design a movie ticket booking system like BookMyShow: browse movies and shows by city, view the seat map, hold seats while paying, and confirm the booking. Interviewers love it because seat locking under heavy contention is a real concurrency problem.
Requirements
Functional
- Cities have theatres; theatres have screens; screens have a fixed seat layout with categories (Recliner, Prime, Classic).
- Shows: a movie on a screen at a start time, with per-category prices.
- Users browse movies in a city, pick a show, view the live seat map.
- Select up to 10 seats; seats are held for the user for ~8 minutes while they pay.
- On payment success, seats become BOOKED and a ticket is issued; on failure or timeout, holds are released.
- Cancel booking (per policy) with refund; seats return to AVAILABLE.
Non-functional
- No double booking, even when thousands of users try the same seats at once.
- Seat map reads must be fast.
- Payment and confirmation are idempotent.
Try it first
Set a timer, sketch your own design on paper, then compare it with the reference walkthrough.
50:00
Defend it out loud
The AI interviewer will probe your design for Movie Ticket Booking (BookMyShow) and score it.