Onion architecture is one of the best options to establish clean architecture through Domain-Driven-Design.
This project intend to apply all best practices with Clean Code & Clean Architecture.
This example project is always in progress :)
I´m testing some tools in project:
MediatR for Command Query Responsability Segregation
https://lostechies.com/jimmybogard/2015/05/05/cqrs-with-mediatr-and-automapper/
https://lostechies.com/jimmybogard/2016/10/27/cqrsmediatr-implementation-patterns/
https://github.com/jbogard/MediatR/wiki
FluentValidation for separate entities validation - SoC
https://github.com/JeremySkinner/FluentValidation
MassTransit for Domain Events
http://looselycoupledlabs.com/2014/06/masstransit-publish-subscribe-example/
http://looselycoupledlabs.com/2014/07/a-real-world-masstransit-customer-portal-example/
I followed the separate concept of Raise & Publish (dispatching only when persisted entity and raise when occurred in memory).
https://lostechies.com/jimmybogard/2014/05/13/a-better-domain-events-pattern/
If you think that some part of the code not follow some best practice feel free for fork and contribute!
Thanks!