Customers
Registers customers and exposes customer lookup for order validation.
A production-oriented modular monolith for order management. It demonstrates Spring Modulith boundaries, contract-first REST APIs, PostgreSQL persistence, domain events, architecture tests and generated documentation without distributed-system theater.
The application keeps one deployment unit and uses Spring Modulith to make module relationships visible and enforceable. Cross-module collaboration goes through named API packages or domain events.
Inside each module, the project follows a pragmatic ports-and-adapters style: domain logic stays framework-independent, application services orchestrate use cases, and infrastructure contains persistence adapters.
Each module owns a narrow business capability. JPA entities stay in infrastructure packages, while public module APIs expose intentional records and interfaces.
Registers customers and exposes customer lookup for order validation.
Reads active catalog prices and calculates deterministic quotes.
Coordinates customer validation, pricing, persistence and order events.
Prepares pending payments after order commit and authorizes matching amounts.
Records notification intents created from order and payment events.
Generated REST interfaces and DTOs stay at the API boundary.
The repository favors behavior-focused tests and build-time artifact checks over decorative coverage targets.
ApplicationModules.verify() validates Spring Modulith boundaries, and ArchUnit guards domain and application dependencies.
Maintained site sources live under src/site. Maven copies the landing page, User Guide and shared assets alongside generated reports in target/pages.
PostgreSQL is the development and test database. H2 is intentionally excluded so schema behavior stays realistic.
docker compose up -d
./mvnw clean verify
./mvnw spring-boot:run
The workflow keeps CI direct: no matrix builds, no duplicated Maven runs, and no generated reports committed to Git.
./mvnw -B -ntp clean verify.
target/pages.