This real time event ticketing system is designed and implemented to handle advanced producer-consumer pattern with multi threaded process and advanced synchronisation.
-
Multi-threaded Producer-Consumer pattern
-
Real-time updates on ticket availability
-
Advanced Synchronisation
-
Dynamic Log Display
Make sure to follow the below guidelines to properly interact with the system. Follow the instructions to setup both backend and front end of the project.
Ensure you have properly installed:
-
Java 17+ (for backend development with Spring Boot)
-
Node.js 14+ (for frontend development with Angular)
-
Maven (for backend dependency management)
-
MySQL or PostgreSQL (for database management)
-
Git (for version control)
-
CLI is modular from backend.Run the CLI independatly.
-
Navigate to the backend directory.
cd backend
- Install backend dependancies using Maven.
mvn install
-
Run the backend main application: BackendApplication.
-
The backend uses the port http://localhost:8080 .
- Navigate the frontend directory.
cd frontend
- Install frontend dependencies.
npm install
- Run the Angular application.
ng serve
- The frontend will be accessible at http://localhost:4200 .
-
Multi-threaded Ticketing : Advanced producer-cinsumer pattern
-
Real time Pool Management :Real-time updates on ticket status
-
Dashboard : Real-time ticket status with control panel and configuration execution
-
Advanced synchronisation
-
API: Necessary endpoints for third-party integrations
-
Customer Modules : Manage consumer-related tasks
-
Vendor Modules : Manage producer-related tasks
-
Ticketing / threads modules : Manage ticketing and threading
-
Logging and save to JSon files : Tracks all transactions for real-time monitoring
-
Customer Modules : Manage consumer-related tasks
-
Vendor Modules : Manage producer-related tasks
-
Ticketing / threads modules : Manage ticketing and threading
-
Logging services : Tracks all transactions for real-time monitoring
-
Dashboard : Displays real time pool status, sold tickets, real-time logs
-
Configuration Form: Allows users to configure system parameters
-
Add customer and vendor : Add customer and vendor to the system
The system allows a microservice architecture with including following components:
-
Backend: Spring Boot service with RESTful APIs
-
Frontend: Angular-based UI
-
Database: MySQL/PostgreSQL
-
Real-Time Communication: Perioding Polling for live updates and Rxjs for state management
-
Ticketing Service: Handles the ticket pool, synchronization, and updates.
-
Vendor Manager: Controls the creation of tickets by vendors.
-
Customer Manager: Manages ticket purchases by customers.
-
API Layer: Exposes HTTP endpoints for interactions.
-
Database: Stores user data, tickets, and transaction history.
-
Dashboard: Displays real-time ticketing information.
-
Add-vendor / add- customer : Separate add sections for vendor and customer.
-
Configuration Form: Allows the configuration of ticket parameters.
-
Vendors add tickets to the pool.
-
Customers buy tickets, reducing the pool size.
-
Real-Time Synchronization ensures both vendors and customers are aware of ticket availability.
-
The CLI updates the transaction details of ticketing
-
The UI Dashboard updates continuously to reflect changes in the ticket pool.
├── backend
│ ├── src
| | ├──CLI
| | |__BackendApplication
│ ├── pom.xml
│ └── README.md
| ├── records.log
│ ├── save.json
│
├── frontend
│ ├── src
│ ├── package.json
│ └── tailwind.config.ts
└── README.md