Design a Concert Ticket Booking System
| Difficulty: Medium | Source: awesome-low-level-design |
Requirements
- View available concerts and seating
- Search by artist, venue, date, time
- Select seats and purchase tickets
- Handle concurrent booking (no double-booking)
- Fair booking opportunities
- Secure payment processing
- Booking confirmations via email/SMS
- Waiting list for sold-out concerts
Class Diagram

Classes, Interfaces and Enumerations
| Class/Interface | Description |
|---|---|
| Concert | Id, artist, venue, date/time, seats list |
| Seat | Id, number, type, price, status |
| SeatType | Enum: regular, premium, VIP |
| SeatStatus | Enum: available, booked, reserved |
| Booking | Id, user, concert, seats, total price, status |
| BookingStatus | Enum: pending, confirmed, cancelled |
| User | Id, name, email |
| ConcertTicketBookingSystem | Singleton |
| SeatNotAvailableException | Custom exception |
Design Patterns Used
| Pattern | Application |
|---|---|
| Singleton | ConcertTicketBookingSystem ensures centralized booking coordination and prevents double-booking |
Code Implementations
| Language | Source Code |
|---|---|
| Java | View on GitHub |
| Python | View on GitHub |
| C++ | View on GitHub |
| C# | View on GitHub |
| Go | View on GitHub |