Backend portfolio project

Java 21 Spring Boot 4 PostgreSQL Redis Testcontainers ArchUnit

Modular Monolith E-commerce

A production-minded backend showcase focused on clear module boundaries, pragmatic CQRS, internal Spring events, Flyway migrations, automated tests, generated API documentation, coverage, and CI-published documentation.

Module Map

One deployable Spring Boot application. Separate Maven modules own separate business capabilities. Cross-module communication stays explicit through application services and Spring events.

HTTP clients REST consumers call the public API exposed by the executable app.
ecommerce-app Single Spring Boot runtime, configuration, REST wiring, and Flyway migrations.
catalog Products, stock rules, read projections, and Redis-backed queries.
orders Order placement, idempotency, lifecycle, and event publication.
payment Payment authorization simulation and event-driven processing.
1. API callClient places an order.
2. Stockorders asks catalog to reserve stock.
3. Eventorders publishes OrderPlacedEvent.
4. Paymentpayment reacts through Spring events.
shared-kernel Small independent abstractions for domain events and shared errors.
PostgreSQL Flyway owns schema changes. Hibernate validates mappings.
Redis Read-side catalog caching only, not a workflow engine or broker.

Architecture Signals

One deployable application, separate Maven modules, ArchUnit boundary tests, and no fake microservice split.

Reliability Signals

Flyway migrations, Hibernate validation, Docker-backed integration tests, and idempotent order placement.

Documentation Signals

Architecture docs, ADRs, business flow, trade-offs, JavaDoc, coverage, and HTML test reports are published from CI.

What GitHub Pages serves

This landing page, Markdown documentation, generated OpenAPI JSON, Swagger UI, JavaDoc, JaCoCo coverage, and HTML test reports.

What GitHub Pages does not run

GitHub Pages is static hosting. It does not run Spring Boot, PostgreSQL, Redis, background workers, or backend services.

How to Run Locally

Start PostgreSQL and Redis, then run the Spring Boot application from the executable module.

docker compose up -d
mvn -pl ecommerce-app -am spring-boot:run
mvn clean verify

Quality Gates

The repository proves architecture and runtime behavior through tests, generated reports, and CI-published documentation.

Unit testsDomain and application rules
Integration testsPostgreSQL, Redis, Flyway
API testsREST behavior and errors
ArchUnitModule boundary enforcement
JaCoCoCoverage reporting
JavaDocGenerated package/API docs
OpenAPIGenerated API contract
GitHub PagesStatic published site