Skip to content

Simple Distributed Multi-Tenancy Domain Driven Design Company Validation Application.

Notifications You must be signed in to change notification settings

LucasNSBR/Ledger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Releases

No releases published

Packages

No packages published

Languages