https://github.com/falberthen/ecommerceddd
Experimental full-stack application using Domain-Driven Design, Microservices, Event Sourcing, CQRS and Angular.
https://github.com/falberthen/ecommerceddd
angular clean-architecture cqrs ddd domain-driven-design dotnet6 event-sourcing marten microservices-architecture netcore spa
Last synced: 6 months ago
JSON representation
Experimental full-stack application using Domain-Driven Design, Microservices, Event Sourcing, CQRS and Angular.
- Host: GitHub
- URL: https://github.com/falberthen/ecommerceddd
- Owner: falberthen
- License: mit
- Created: 2020-09-28T23:36:18.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-27T10:41:20.000Z (over 1 year ago)
- Last Synced: 2024-05-27T22:00:15.860Z (over 1 year ago)
- Topics: angular, clean-architecture, cqrs, ddd, domain-driven-design, dotnet6, event-sourcing, marten, microservices-architecture, netcore, spa
- Language: C#
- Homepage: https://falberthen.github.io/posts/ecommerceddd-pt1
- Size: 14.9 MB
- Stars: 301
- Watchers: 9
- Forks: 49
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](LICENSE)## 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 ⭐ 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 as `IdentityServer` and `API gateway`.- **Services**
The microservices composing the backend are built to be as simple as possible, structured as a vertically sliced structure with `API`, `Application`, `Domain,` and `Infrastructure.````
├── 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 by `handling 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-based `SPA` providing a functional and user-friendly UI.
## Technologies used
-
ASP.NET Core API and C# 12
for cross-platform backend with:
- .NET 8
- Koalesce 0.1.0-alpha
- Ocelot 23.4.2
- MMLib.SwaggerForOcelot 8.3.2
- Marten 7.33.2
- Entity Framework Core 9.0.0
- Npgsql.EntityFrameworkCore.PostgreSQL
- 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 7.0.8
- MediatR 12.4.1
- Polly 8.4.2
- Fluent Assertions 7.0.0
- XUnit 2.9.2
- NSubstitute 5.3.0
- SwaggerGen/SwaggerUI 7.1.0
- Confluent Kafka 2.6.1
-
Angular v18.2.11 and TypeScript 5.5.4 for the frontend with:
- Kiota 1.0.0-preview.92
- Jest 29.7.0
- NgBootstrap 17.0.1/ Bootstrap 5.2.3
- Font Awesome 6.4.0
- Toastr 17.0.2
## What do you need to run it
#### Running the microservices using Docker
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:
```console
$ 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:
```console
$ npm install #first time only
$ ng serve
```