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 software project is designed to be run in a Docker environment. It uses devcontainer specification to provide a consistent development environment.
To run this project in a dev environment, you need to have Docker and Docker Compose installed on your machine.
- Clone the repository
- Open the project in Visual Studio Code / IntelliJ IDEA or any other IDE that supports devcontainer.
- Open the project in the devcontainer.
Supported IDEs :
- Visual Studio Code
- IntelliJ IDEA
- Docker
- Docker Compose
- Visual Studio Code / IntelliJ IDEA
- Java 17+ (included)
- Gradle 8.14+ (included)
- Node.js 24+ (included)
- pnpm 10.15+ (included)
This project is a mono-repository. It contains multiple packages that are designed to work together.
Applications :
apps/store-back: Store Back-For-Front exposing backend featuresapps/store-front: Store Front-End exposing GUI featuresapps/product-registry: the product registry microservices, managing productsproduct.registry: the command microservice, handling product registry business logicproduct.registry.read: the read microservice, handling product registry read queries
apps/product-catalog: the product catalog microservices, managing product catalogproduct.catalog: the command microservice, handling product catalog business logicproduct.catalog.read: the read microservice, handling product catalog read queries
Libraries :
libs/cqrs-support: a library exposing utilities for event, projection, typings and persistencelibs/kernel: a library exposing the core business logic and domain modelslibs/sql: a package containing Liquibase changeloglibs/bom-platform: a library factorizing the Bill of Materials for the platformlibs/contracts/*: modules exposing the contracts for the different services, holding transitional data structures
This application allows to manage products, catalogs as an admin and consult catalogs as a customer. This application does not cover customer management, order processing nor delivery processing. This application does not cover stock management.
The main API is exposed through various Back-For-Front services. Internal services communicate with each other using events and commands passed to RESTful endpoints.
The product registry is a list of products that can be integrated into a catalog. Each product has a name, a description
The product catalog is a list of products that can be ordered by customers. Each entry includes a price.
Run to install the Node dependencies:
pnpm installRun to build the java project:
gradle buildRun quarkus application modules:
gradle <module_name>:quarkusDev
# Module names typically follows the pattern: apps:<app_name>Run angular application:
pnpm run --filter apps-store-front startTODO
- Thibaud FAURIE :