π Academic Project: Developed as an advanced study in Concurrent Systems and Full-Stack Architecture, focusing on thread synchronization and real-time data consistency.
This project is a sophisticated Multi-Client Ticketing System that demonstrates the Producer-Consumer Pattern through high-concurrency Java threads. It features a Spring Boot backend for data persistence and two distinct client interfaces: a React Web UI and a Java-based CLI.
- The CLI (Pure Java Engine): Implements the core concurrency logic.
Vendors(Producers) add tickets to the pool, whileCustomers(Consumers) purchase them simultaneously. It uses advanced thread synchronization to ensure no race conditions occur. - The Backend (Spring Boot): A RESTful API that provides global state management, persists data using JPA/Hibernate, and serves as the bridge between the CLI engine and the Web UI.
- The Frontend (React): A modern, responsive dashboard built with Vite and Tailwind CSS to visualize real-time ticket availability and system logs.
- Multithreading & Synchronization: Custom implementation of
TicketPoolto handle concurrent access from multiple vendor and customer threads. - Producer-Consumer Logic: Fully configurable thread pool size, release rates, and purchase rates.
- Full-Stack Integration: Real-time synchronization between the CLI system state and the Web Dashboard.
- Configuration Persistence: System-wide settings are handled via a robust
Configurationmodel. - Modern UI/UX: Interactive dashboard with live tracking of ticket counts and system activities.
- Languages: Java 17, TypeScript, SQL
- Frameworks: Spring Boot 3.4, React 19 (Vite)
- Database: H2 (In-memory) for high-speed local processing
- Styling: Tailwind CSS, PostCSS
- Concurrency: Java Threads,
synchronizedblocks, andvolatilekeywords.
βββ back-end/ # Spring Boot REST API
βββ cli/ # Pure Java CLI (Multi-threaded Engine)
βββ front-end/ # React Web Dashboard (Vite + Tailwind)
βββ README.md # Project Documentation
- Backend:
cd back-end ./mvnw spring-boot:run - CLI Engine:
- Compile and run
cli/src/Main.javausing your preferred IDE (IntelliJ/VS Code).
- Compile and run
- Frontend:
cd front-end npm install && npm run dev
Built with β€οΈ by Kavintha Dilshan