The Ledger project is a simple open-source project written in .NET Core. The objetive is to show how Domain Driven Design principles works in practice. Sometimes when you are creating an account on a restrict service (such as bank or supplier catalog), you need to provide a way to let them know your real-life ID. Basically, you send a copy of your documents, the service support analyze them and tell if you can access it's services. This is what Ledger do.
You need to install RabbitMQ in order to properly run this soluction.
- ASP.NET Core
- Entity Framework Core
- ASP.NET Identity Core
- SQL Server
- RabbitMQ
- MassTransit
- LilValidation
- SendGrid
- Swagger
- SonarQube
Every Bounded Context is 100% autonomous and the interactions across them are threathed through Integration Events using a Mass Transit event bus, no direct dependencies. Every Bounded Context also contains a 3-layer project (Application, Domain, Data).
Experimental Blogging context, Here is the logic for a simple blog about updates of the platform.
Activations context, this context is responsible for receive, analyze and validate a activation submision.
Companies Data, contains detailed informations about the Companies.
Contains all building blocks such as Event, Notification, Entity, ValueObject interfaces and base classes.
Application infrastructure services. Dependency Injection resolving, Email Services, Service Bus configurations and Unit Of Work definitons. Basically this layer wrapps all infrastructure dirty dependencies. Also responsible for resolve the User Identity by using HttpContext.
The application help-desk. Users can open tickets, send and receive messages from support.
Wrapps the Identity logic. Users, roles, logins, claims, etc. Makes use of ASP.NET Identity Core.
This Context is responsible for main application logic, after the Activation was accepted, users can access this page and create orders. (Currently not implemented)
Web API entry point and front-end.
- Unit Of Work
- Domain Notifications
- Domain (local events) Events
- Integration Events
- Builder
- Repository