SeatFix System is a full-fledged backend system for booking movies and events, inspired by the BookMyShow use case. Designed and implemented from scratch, this project demonstrates strong understanding and application of Low-Level Design (LLD), Object-Oriented Principles, Design Patterns, and scalable system development using modern Java and Spring Boot technologies.
This backend application enables users to:
- Book tickets seamlessly
- Handle concurrent booking scenarios
- Ensure secure authentication and user management
The system was designed with a focus on:
- ⚙️ Scalability
- 🧱 Maintainability
- 🔁 Extensibility
- ✅ Security
- Created detailed Class Diagrams, Entity-Relationship Diagrams, and Schema Design
- Followed solid Object-Oriented Programming (OOP) principles
- Designed for real-world use cases with scalability in mind
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Singleton Pattern: Used for concurrency control during ticket booking (ensuring thread-safety and consistency)
| Layer | Technology / Tool |
|---|---|
| Language | Java |
| Framework | Spring Boot |
| ORM | Hibernate + JPA |
| Security | Spring Security |
| Database | MySQL (via MySQL Workbench) |
| Architecture | MVC (Model-View-Controller) |
| Password Handling | BCrypt (for hashing passwords) |
| Exception Handling | Custom Exceptions |
| Build Tool | Maven / Gradle |
- Integrated Spring Security for authentication and authorization
- Used BCrypt Algorithm for secure password encryption
- Followed best practices for data validation and secure API development
- User Registration & Login
- View Movies and Event Listings
- Book Tickets (Handles concurrent requests safely)
- Seat Selection and Availability Checking
- Entities: User, Movie, Event, Theater, Screen, Seat, Show, Booking, Payment
- Relationships:
- One-to-Many: Theater → Screens
- One-to-Many: Screen → Shows
- Many-to-Many: Users ↔ Bookings (via Tickets)
- Show ↔ Seat Mapping for availability
- Designed keeping future scale in mind: microservices ready structure
- Follows Separation of Concerns for easy feature addition and maintenance
- Reusable services and layered architecture (Controller, Service, Repository)
- Unit tested core services and repository layers
- Exception handling implemented across layers
- Input validations using annotations and custom validators
Shivam Kanaujiya
Backend Developer | LLD Enthusiast | Java & Spring Expert
GitHub Profile
LinkedIn (if applicable)
- Integrate payment gateway (Razorpay / Stripe)
- Implement caching with Redis for show availability
- Add real-time seat locking with WebSockets
- Build frontend using React or Angular
- Convert to microservices architecture
-
Clone the repository
git clone https://github.com/Sk2k19/Seatifix-System.git -
Navigate to the project folder
cd seatfix-system -
Configure
application.propertieswith your DB credentials -
Run the application
./mvnw spring-boot:run -
Access the app via Postman or Swagger UI (if enabled)
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.