Welcome to Ecommerce DDD
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
Architecture
The overall architecture is organized with Core
, Crosscutting
and Services
.
Core
It defines all the building blocks and abstractions to be used on every underlying project.
Core.Infrastructure
It implements infrastructure matters to be used by microservices. Also, it centralizes third-party packages.
Crosscutting
It contains projects with logic needed to cross over the microservices, such as IdentityServer4
and API gateway
.
Services
The microservices composing the back-end, are built to be as compact as possible, meaning they're structured to have not only the business logic related to the domain but also to expose it through a self-contained API.
It is structured with: Domain
, Application
, API
, Infrastructure
(when apply).
- Domain
This is where the business logic resides, with a structured implementation of the domain through aggregates, commands, value objects, domain services, repository definitions, and domain events.
- Application
It orchestrates the interactions between the external world and the domain to perform application tasks through use cases by handling commands and queries.
- Infrastructure
It acts as a supporting library for higher layers. It handles infrastructural matters and data persistence.
Presentation
A lightweight Angular-based SPA
providing a functional and user-friendly UI.
Technologies used
-
ASP.NET and C# 10
for cross-platform back-end with:
- .NET 6
- ASP.NET Core Minimal API
- Ocelot
- Marten
- Postgres
- Entity Framework Core 6
- ASP.NET Core Identity
- JWT Bearer Authentication
- IdentityServer4
- SignalR Core
- MediatR
- XUnit / Mock
- Swagger
- Kafka
- Docker Compose
-
Angular 13 and TypeScript for the front-end with:
- NgBootstrap
- Font Awesome
- Toastr
- Angular JWT
What do you need to run
Running the back-end
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 installed Docker
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.
Running the Angular SPA
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