
Neth Pehesara Botheju
Second-year Computer Science student at the University of Westminster.
Realtime Ticketing System
Project Overview
Realtime Ticketing System is an automated ticketing system with both client and server sides. This project was developed as an assessment for the OOP module in the second year, demonstrating Java OOP concepts throughout the system.
The project includes two client applications: a web client and a CLI client, both synchronized with a single server. The application operates with a single user, meaning both clients are always in sync. The system simulates vendors and customers. Users can configure the number of vendors and customers, ticket releasing and retrieving rates, and the maximum ticket count. Based on these settings, the application runs and demonstrates its performance, particularly focusing on concurrency.
Features
- In the web client, you can view the number of available tickets with real-time updates.
- The web client includes a control panel to start, reset, and stop the program.
- You can view a sales bar chart for each day in the web client.
- The web client also allows you to stop or add new vendors or customers dynamically while the program is running.
- Both the CLI client and web client display a real-time logger.
- Customers can be assigned a priority, giving them precedence when retrieving tickets from the ticket pool.
- If the program is stopped and restarted, it will resume from where it left off.
Technical Implementation
BackendThe backend of the application is developed using and Spring Boot. It contains
the core logic of the system, handling all the main operations such as ticket releasing,
retrieving, and managing vendors and customers. The necessary configuration data required to run
the application is stored in a config.json
file, while the sales data is
persistently stored in an SQLite database. The backend seamlessly interacts with the database to maintain and update sales records.
The frontend web client is built with Angular and Tailwind CSS, providing a modern and responsive user interface. It communicates with the backend through REST APIs for general operations and uses WebSockets, specifically implemented with Stomp.js, for real-time updates. This allows the web client to display live data such as available tickets and sales statistics without needing to refresh the page manually.
CLI ClientThe CLI client is developed purely in Java and connects to the backend via REST APIs for standard data requests. It also establishes a java socket connection to receive real-time updates, similar to the web client. The CLI client offers an alternative interface for interacting with the system, displaying logs and live data directly in the terminal.
Future Enhancements
- Redesign the UI to make it fully responsive for all devices.
- Convert the CLI application into an executable file with improved user interaction, commands, and instructions.