finds.dev← search

// the find

EduardoPires/EquinoxProject

★ 6,774 · C# · MIT · updated Apr 2026

Web Application ASP.NET 9 using Clean Architecture, DDD, CQRS, Event Sourcing and a lot of good practices

A reference implementation of DDD, CQRS, and event sourcing on ASP.NET 9, built around a trivial Customer CRUD domain. The author is explicit that this is a learning scaffold, not a production template — it exists to show the wiring, not to model a real problem. If you're trying to understand how these patterns fit together in .NET, this is a solid read.

The layered project structure is clean and the separation of concerns is actually enforced — domain, application, infra, and API are distinct assemblies with enforced dependencies. The recent swap of MediatR for NetDevPack.SimpleMediator and AutoMapper for hand-rolled extensions shows the author is actively trimming fat rather than piling on dependencies. Architecture tests using NetArchTest.Rules are a genuine value-add — most reference repos skip this and leave the guard rails as suggestions. SQLite out of the box with auto-migrations means you can clone and run without a database server.

The domain is a single Customer entity with three fields — it cannot demonstrate how these patterns behave under real complexity (aggregates with invariants, eventual consistency between bounded contexts, projection rebuilds). Event sourcing is implemented against SQL, which sidesteps the hard parts: snapshot strategies, projection rebuilds, and ordering guarantees under concurrent writes. The UI project carries its own ApplicationDbContext and migrations separate from the main EF context, which is an accidental complexity that trips up people trying to adapt the structure. No tests beyond the architecture layer — there are no unit tests for the domain or command handlers, so the validation logic in FluentValidator goes completely untested.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →