What is the Ledger Project?
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.
Prerequisites
You need to install RabbitMQ in order to properly run this soluction.
Core Technologies
- ASP.NET Core
- Entity Framework Core
- ASP.NET Identity Core
- SQL Server
- RabbitMQ
- MassTransit
- LilValidation
- SendGrid
- Swagger
- SonarQube
Architecture Overview
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).
Company Activation Context
Experimental Blogging context, Here is the logic for a simple blog about updates of the platform.
Company Activation Context
Activations context, this context is responsible for receive, analyze and validate a activation submision.
Company Data Context
Companies Data, contains detailed informations about the Companies.
Shared Kernel
Contains all building blocks such as Event, Notification, Entity, ValueObject interfaces and base classes.
CrossCutting
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.
HelpDesk Context
The application help-desk. Users can open tickets, send and receive messages from support.
Identity Context
Wrapps the Identity logic. Users, roles, logins, claims, etc. Makes use of ASP.NET Identity Core.
Ordering Context
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 Apps
Web API entry point and front-end.
Pattern List
- Unit Of Work
- Domain Notifications
- Domain (local events) Events
- Integration Events
- Builder
- Repository