-
Couldn't load subscription status.
- Fork 0
Project Overview
Máté Károlyi edited this page Sep 23, 2025
·
4 revisions
The Order Management System (OMS) is a demonstration of building a modern backend using Spring Boot, Hexagonal Architecture (Ports & Adapters), and Domain-Driven Design (DDD).
It showcases how to structure a clean, maintainable, and extensible system by separating concerns between Domain, Application, and Infrastructure/Adapters layers.
- Implement a modular architecture that can scale with new features and adapters.
- Provide realistic domain modeling for common e-commerce concepts like Orders, Customers, Baskets, Products, and Payments.
- Demonstrate event-driven communication with the Outbox Pattern and RabbitMQ.
- Ensure testability and resilience with ArchUnit, JUnit, and Testcontainers.
- Act as a reference project for engineers exploring DDD with Spring Boot.
- Customer – represents a system user with profile and address management.
- Basket – shopping basket where products can be added/removed before checkout.
-
Order – central aggregate managing the full lifecycle:
WAITING_FOR_PAYMENT → PAID_SUCCESSFULLY → PROCESSING → SHIPPED → DELIVERED- supports cancellations, returns, and refunds.
-
Payment – transaction lifecycle bound to an
OrderId, integrated with Stripe Checkout for realistic payment handling. - Product – catalog item with immutable product details (id, name, description, price).
This project is ideal if you want to:
- Learn how to apply DDD in practice.
- Understand Hexagonal Architecture with real-world scenarios.
- Explore how to integrate external systems (auth, payments, notifications) while keeping the domain model isolated.