A comprehensive DDD, CQRS, event-driven application for customer's order and stock management.
This application stack is designed for integrating into an ecosystem needing generic customer and order management.
This application enables the management of:
- Cart: A list of products a customer wants to order, with associated quantities.
- Order: A lifecycle-managed aggregate representing customer orders.
- Product Catalog: A catalog of products available for ordering, including pricing details.
- Product Registry: A central registry managing product data.
- Stock: The inventory of available products and their quantities.
- Domain-Driven Design (DDD): The application is designed with bounded contexts and aggregates.
- CQRS (Command Query Responsibility Segregation): Separation of commands (write operations) and queries (read operations).
- Event Sourcing: Persistent storage of application state as a series of events.
- API Gateway (
apps/of-api-gateway): Exposes business logic via HTTP APIs (REST, RPC, SSE). - Product Registry Microservices (
apps/of-product-registry-microservices):- Command Service: Handles product registry commands.
- Read Service: Handles product registry queries.
- Event Sourcing (
libs/event-sourcing): Core business logic for event-driven operations. - Infrastructure (
libs/infrastructure): Infrastructure layer logic. - Shared (
libs/shared): Common business logic shared across services.
This project is designed to run in a Docker environment using a devcontainer for consistent development setups. It is a mono-repository, containing multiple interrelated packages.
Ensure you have the following installed:
- Docker
- Docker Compose
- Visual Studio Code / IntelliJ IDEA
- Java 17+ (included in the devcontainer)
- Gradle 7.3+ (included in the devcontainer)
- Node.js 22+ (included in the devcontainer)
- pnpm 9.6+ (included in the devcontainer)
- Clone the repository:
git clone https://github.com/username/order-flow.git cd order-flow