The Java Ticketing System (Marketplace) is a demo Spring Boot application showcasing a modular monolith architecture with multiple independent datasources. It illustrates Domain-Driven Design (DDD) patterns, repository event handlers, and entity lifecycle listeners to decouple bounded contexts and persistence concerns.
Primary bounded contexts:
- Registration — customer profiles, addresses, projections (separate MySQL datasource)
- Catalog — events, tickets, and audit trails (separate MySQL datasource)
A minimal set of steps to run the project locally using Docker and Gradle.
- Start dependent services with Docker Compose:
# Create and up a new Docker environment
docker compose up -d- Build and run the application:
./gradlew bootRun-
Open the HAL Explorer: http://localhost:8081/explorer/index.html
-
Check application health: http://localhost:8081/actuator/health
- Java 25 (or Java 22)
- Docker & Docker Compose
- Gradle (optional, wrapper included)
Docker Compose brings up MySQL instances used by the multiple datasources. Ensure Docker Desktop is running before starting.
docker compose up -dProvide local MySQL instances and set datasource connection properties in the appropriate application-profile.yml files or environment variables.
Run the app:
./gradlew bootRunThe project uses multiple Spring Data datasources. Datasource URLs, credentials, and ports can be configured via Spring profiles and environment variables. Review src/main/resources for example configuration files.
- HAL Explorer (browsable REST API): http://localhost:8081/explorer/index.html
- Actuator health: http://localhost:8081/actuator/health
Use Postman/Insomnia or any HTTP client to call the exposed REST resources.
Made with ❤️ by Guilherme Bezerra 👋 Get in touch!