Skip to content

CQRS and Clean Domain-Driven Design concepts on the ASP.NET Core stack. Demo application for a fictional corporate organization management tool.

License

Notifications You must be signed in to change notification settings

ruchinmunjal/OrgManager

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OrgManager

OrgManager is a demo enterprise, multi-tenant SaaS application built using .NET 5 (.NET Core) and Angular. The purpose of this project is to demonstrate Clean Domain-Driven Design (Clean DDD) and Command/Query Responsibility Segregation (CQRS) concepts, along with other architectural patterns and design best practices.

Philosophy

The architectural approach demonstrated is for illustrative purposes and may or may not be suitable for all applications. In particular, this architecture emphasizes a separation between Domain entities and Persistence entities, facilitated by a mapping infrastructure. This distinguishes it from many other Clean DDD implementations--especially those built using Entity Framework--which make no such distinction.

I will add more documentation as the solution evolves. Polite comments and feedback are welcome.

Blog Series

This application accompanies an in-depth blog series discussing multi-tenant SaaS, Clean DDD, and CQRS concepts at Software Alchemy.

Playing Around

By default, the application should scaffold the database and populate it with dummy data. It will create dummy user accounts that you can use to log in and play around with.

The dummy user accounts have names like

For all of these accounts, the default password is "P@ssw0rd1".

Routes to screens in the app that are (semi) functional at the moment are:

  • /
  • /lets-get-started
  • /employee-registered
  • /customer/update
  • /customer/manage-tenants
  • /t/tenant slug/
  • /t/tenant slug/employee
  • /t/tenant slug/employee/update
  • /test
  • /unauthorized

^^^ In the above routes, replace "tenant slug" with the actual slug for the tenant that the test user has access to, for example, "test-tenant-10".

Thank you for your interest, and happy coding...

Screen Mockups

Front Page

Registration Main

Employee Registration

Employer Registration

Registration Complete

Add/Edit Customer Information

Add/Update Tenants

Add/Edit Employee Information

Submit PTO

Submit Org Feedback

Upgrade/Downgrade/Cancel

Help/Support

Privacy Policy

About

Terms and Conditions

Testimonials

About

CQRS and Clean Domain-Driven Design concepts on the ASP.NET Core stack. Demo application for a fictional corporate organization management tool.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 60.2%
  • TypeScript 30.5%
  • HTML 6.3%
  • SCSS 1.4%
  • F# 1.2%
  • JavaScript 0.3%
  • CSS 0.1%