A ticket purchase system with Spring Modulith based on Domain-Driven Design (DDD) principles.
- Domain-Driven Design (DDD): The codebase is designed following DDD principles, ensuring maintainability and scalability.
- Authentication: Secures the system using Spring Security, implementing JWT and the * OAuth2 PKCE* approach.
- Lock Mechanism: Uses Spring Data JPA for CRUD operations and implements **locking mechanisms ** to ensure data consistency and prevent race conditions in ticket operations.
- Java Util Concurrency (JUC) for Handling Concurrency: Leverages Java's concurrency utilities to manage high-volume ticket operations effectively.
- Pub/Sub Mechanism for Multiple Instances: Employs Spring Kafka to broadcast ticket status updates across multiple instances for real-time synchronization.
- WebSocket: Enables real-time communication and updates to clients via WebSocket connections.