An experimental full-stack application showcasing cutting-edge technologies and architectural patterns for building scalable e-commerce systems.
β If you find this project useful, please consider giving it a star! It helps others discover the project.
βββ Core # Building blocks and abstractions
βββ Core.Infrastructure # Shared infrastructure implementations
β
βββ Crosscutting
β βββ ServiceClients # Kiota-generated HTTP clients
β βββ ApiGateway # Ocelot API Gateway
β βββ SignalR # Real-time communication
β βββ IdentityServer # Authentication & authorization
β
βββ Services
β βββ CustomerManagement
β βββ InventoryManagement
β βββ OrderProcessing
β βββ PaymentProcessing
β βββ ProductCatalog
β βββ QuoteManagement
β βββ ShipmentProcessing
β
βββ SPA # Angular frontend
βββ docker-compose # Container orchestration
| Layer | |
|---|---|
| Core | Defines building blocks and abstractions used across all projects. Highly abstract with no implementations. |
| Core.Infrastructure | Shared infrastructure abstractions and implementations for all microservices. |
| Crosscutting | Projects that cross-cut all microservices: IdentityServer, API Gateway, and ServiceClients with Kiota-generated HTTP clients. |
| Services | Backend microservices built with a vertically sliced structure. |
| SPA | Lightweight Angular-based Single Page Application. |
Each microservice follows a clean vertical slice architecture.
βββ EcommerceDDD.ProductCatalog
β βββ API # RESTful endpoints
β βββ Application # Use cases, commands & queries
β βββ Domain # Aggregates, entities, domain events
β βββ Infrastructure # Data persistence & external integrations
- Koalesce.OpenAPI aggregates all OpenAPI definitions exposed in the API Gateway.
- Kiota generates typed TypeScript clients from this unified spec.
- The Angular SPA communicates through the API Gateway using the clients.
Microservices communicate directly using Kiota-generated typed HTTP clients.
| Technology | Version |
|---|---|
| .NET | 10 |
| C# | 12 |
| Koalesce | 1.0.0-beta.5 |
| Ocelot | 24.1.0 |
| Marten | 8.19.0 |
| Confluent Kafka | 2.13.0 |
| Entity Framework Core | 10.0.2 |
| Npgsql (PostgreSQL) | 10.0.0 |
| Duende IdentityServer | 7.4.5 |
| Polly | 8.6.5 |
| Microsoft Kiota | 1.21.2 |
| xUnit | 2.9.3 |
| NSubstitute | 5.3.0 |
| Technology | Version |
|---|---|
| Angular | 19.2.7 |
| TypeScript | 5.5.4 |
| Jest | 29.7.0 |
| NgBootstrap | 18.0.0 |
| Bootstrap | 5.3.5 |
| Font Awesome | 6.7.2 |
| Toastr | 19.0.0 |
Backend only β starts all microservices, databases, Kafka, and infrastructure:
docker compose upBackend + Frontend β also builds and serves the Angular SPA at http://localhost:4200:
docker compose --profile frontend upπ‘ Tip: You can also set
docker-compose.dcprojas the startup project in Visual Studio for debugging.
If you prefer running the frontend outside Docker for development, start the backend with docker compose up, then:
cd src/EcommerceDDD.Spa
npm install
ng serveThe app will be available at http://localhost:4200.
If you want to regenerate all typed HTTP clients, after containers are running:
docker-compose --profile tools run regenerate-clientsThis generates:
- Backend clients (C#):
ServiceClients/Kiota/ - Single Frontend client (TypeScript):
EcommerceDDD.Spa/src/app/clients/
This project is licensed under the terms of the LICENSE file.
Made with β€οΈ by Felipe Henrique




