TicketWave is a real-time event ticketing system designed using Java, Spring Boot, MySQL, and React with TypeScript. The system emphasizes Object-Oriented Programming (OOP) principles and employs the Producer-Consumer Pattern to manage dynamic ticketing operations. It ensures seamless ticket releases and purchases while maintaining data integrity in a concurrent environment.
- Overview
- Technologies Used
- System Architecture
- Prerequisites
- Producer-Consumer Pattern
- License
- Preview
This project was developed by Lashen Martino as part of the Object-Oriented Programming (OOP) module coursework at the University of Westminster.
TicketWave simulates a real-time ticketing environment where vendors release tickets (producers) while customers purchase them (consumers). The system uses advanced concurrency handling techniques to manage transactions efficiently and accurately, ensuring a smooth user experience.
- Backend: Java, Spring Boot
- Frontend: React, TypeScript, Material UI
- Database: MySQL
The system is divided into three main components:
-
Backend
- Handles the business logic and API endpoints.
- Uses MySQL for data persistence.
-
Frontend
- Provides an interactive interface for customers and administrators.
- Communicates with the backend via RESTful APIs.
-
Command Line Interface (CLI)
- A console-based application to manage system multithreading simulations.
- Java JDK (17 or higher)
- Node.js (v18 or higher) and npm or yarn
- MySQL Server
The Producer-Consumer Pattern is central to TicketWave's design. Here's how it works:
- Producer: Event organizers release tickets into a shared queue.
- Consumer: Customers book tickets from the queue.
- Concurrency Handling:
- Threads are used to manage producers and consumers simultaneously.
- Synchronization ensures data integrity during high-traffic scenarios.
This project is licensed under the MIT License.
