Spring Boot and Java deep dives
SpringMarket
A marketplace modular monolith designed to teach the major Spring technologies inside one realistic domain instead of separate demos.
View code on GitHubProblem
The rest of the Spring projects each cover one topic in isolation. SpringMarket puts them together, so you can see how Security, Data, messaging, caching, and Batch interact in one system.
Goals
- Buyers browse, manage a cart, check out, and view orders
- Sellers manage their own products
- Admins manage users, see all orders, and trigger reporting jobs
- One
docker compose upbrings up the whole system, with each Spring topic inside a real feature
Non-goals (v1)
- Real payments (they’re simulated)
- Spring Cloud microservices (Gateway, Eureka, Config Server), deferred to an optional later phase
- A polished storefront; the SPA stays thin
Design
A modular monolith: one Spring Boot app with package-level bounded contexts, plus a React SPA.
| Store / broker | Used for |
|---|---|
| Postgres (Flyway) | System of record |
| MongoDB | Catalog documents and reviews |
| Redis | Hot product listing cache, rate-limit counters |
| Kafka | Durable domain events (OrderPlaced, PaymentCompleted) |
| RabbitMQ | Task-style messaging (the spec explains why there are two brokers) |
Spring Security uses JWT access tokens. Spring Batch runs the admin reports.
Status
The design spec and plan are on main. The implementation is on the feature/springmarket branch: SPA checkout, seller, and admin flows, with a Testcontainers checkout test and a checkout confirmation email.
Changelog
- 2026-09-26: Design spec and implementation plan
- 2026-10-01: Pushed to GitHub, including the feature branch