Welcome to EmpowerID, an experimental application that integrates several cutting-edge technologies and architectural patterns. Your interest in this project is appreciated! If you find value in it, please consider giving it a ⭐ to show your support, which in turn motivates continuous improvement.

src
├── Gateway
│ ├── EmpowerID.Core
│ └── EmpowerID.Core.Infrastructure
│
├── Gateway
│ └── EmpowerID.ApiGateway
│
├── Identity
│ └── EmpowerID.IdentityServer
│
├── Services
│ ├── EmpowerID.Posts
│ └── EmpowerID.UserManagement
│
└── docker-compose
-
Core
Defines abstract building blocks utilized across all projects. -
Core.Infrastructure
Contains abstractions and infrastructure implementations for use by microservices and their dependencies. -
Identity § Gateway
Encompasses project implementations that intersect multiple microservices, such asIdentityServer
andAPI Gateway
. -
Services
Backend microservices are structured in a vertically sliced manner withAPI
,Application
,Domain
, andInfrastructure
layers.├── EmpowerID.Posts │ ├── API │ ├── Application │ ├── Domain │ └── Infrastructure
-
API
Provides a RESTful interface for communication between client and server. -
Application
Orchestrates interactions between the external world and the domain, executing application tasks through use cases by managing commands and queries. -
Domain
Implements domain logic through aggregates, commands, value objects, domain services, repository definitions, and domain events. -
Infrastructure
A supporting library for upper layers, handling infrastructural concerns such as data persistence via repository implementations, database mapping, and external integrations.
-
-
ASP.NET Core API and C# 12
for cross-platform backend with:
- .NET 8
- Ocelot 22.0.1
- Marten 6.4.1
- MSSQL 2019
- 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
Running Microservices with Docker
The project is designed to be easily run within Docker containers. Simply follow these steps:- Ensure you have Docker installed on your system.
- Using a terminal, execute the following command:
$ docker-compose up
Alternatively, you can set the
docker-compose.dcproj
as the Startup project in Visual Studio if you prefer to run it while debugging.