This project is an experimental full-stack application I use to combine several cutting-edge technologies and architectural patterns. Thanks for getting here! please give a ⭐ if you liked the project. It motivates me to keep improving it.
├── Core
├── Core.Infrastructure
│
├── Crosscutting
│ ├── ApiGateway
│ └── IdentityServer
│
├── Services
│ ├── CustomerManagement
│ ├── InventoryManagement
│ ├── OrderProcessing
│ ├── PaymentProcessing
│ ├── ProductCatalog
| | └─ EcommerceDDD.ProductCatalog
│ │ ├── API
│ │ ├── Application
│ │ ├── Domain
│ │ └── Infrastructure
│ ├── QuoteManagement
│ └── ShipmentProcessing
│
├── SPA
└── docker-compose
-
Core
It defines the building blocks and abstractions used on all underlying projects. Its nature is very abstract, with no implementations. -
Core.Infrastructure
It holds some abstractions and implementation for infrastructure to be used by all microservices and underlying dependencies. -
Crosscutting
It contains project implementations that cross-cut all microservices, such asIdentityServer
andAPI gateway
. -
Services
The microservices composing the backend are built to be as simple as possible, structured as a vertically sliced structure withAPI
,Application
,Domain,
andInfrastructure.
├── EcommerceDDD.ProductCatalog │ ├── API │ ├── Application │ ├── Domain │ └── Infrastructure
-
API
RESTful API for enabling communication between client and server. -
Application
It orchestrates the interactions between the external world and the domain to perform application tasks through use cases byhandling commands and queries
. -
Domain
A structured implementation of the domain through aggregates, commands, value objects, domain services, repository definitions, and domain events. -
Infrastructure
It is a supporting library for upper layers, handling infrastructural matters such as data persistence with implementing repositories, database mapping, and external integrations. -
SPA (Single Page Application)
A lightweight Angular-basedSPA
providing a functional and user-friendly UI.
-
-
ASP.NET Core API and C# 12
for cross-platform backend with:
- .NET 8
- Ocelot 22.0.1
- Marten 6.4.1
- Entity Framework Core 8.0.0
- Postgres for Entity Framework Core 8.0.0
- ASP.NET Core Identity 8.0.0
- ASP.NET Core Authentication JwtBearer 8.0.0
- Duende IdentityServer 6.3.8
- MediatR 12.2.0
- Polly 8.2.1
- Fluent Assertions 6.12.0
- XUnit 2.6.5
- NSubstitute 5.1.0
- Swagger 6.5.0
- Confluent Kafka 2.3.0
-
Angular 17 and TypeScript 5.2.0 for the frontend with:
- NgBootstrap 16.0.0/ Bootstrap 5.2.3
- Font Awesome 6.4.
- Toastr 17.0.2
The project was designed to be easily run within docker containers, hence all you need is 1 command line to up everything. Make sure you have Docker
installed and have fun!
- Download Docker: Docker Desktop with support for WLS 2
Using a terminal, run:
$ docker-compose up
You can also set the docker-compose.dcproj
as a Startup project on Visual Studio if you want to run it while debugging.
Using a terminal, navigate to EcommerceDDD.Spa
and run for the following commands the node packages and serving the SPA on http://localhost:4200
respectively:
$ npm install #first time only
$ ng serve