finds.dev← search

// the find

engindemirog/nArchitecture

★ 571 · C# · updated Oct 2022

nArchitecture is a .NET boilerplate that wires together Clean Architecture, CQRS via MediatR, and a set of cross-cutting pipeline behaviors (caching, logging, validation, authorization) into a reusable core package layer. It targets developers who want a pre-assembled starting point for enterprise-style ASP.NET Core APIs rather than assembling these patterns themselves. The rentACar demo shows how the core packages are consumed.

The pipeline behavior composition is well-structured — each concern (caching, validation, authorization, logging) is a separate MediatR behavior with its own marker interface, so you only opt in where you need it. The Core.Persistence layer includes a dynamic filter/sort extension that generates LINQ from a simple JSON-friendly model, which saves real boilerplate for list endpoints. Core.Security ships with both email-based and OTP (TOTP via OtpNet) authenticator support baked in, not bolted on. The project layout enforces a consistent vertical-slice structure inside Application/Features, which makes onboarding to a new feature predictable.

Last commit is October 2022 — the repo is abandoned. .NET 7 was already out then and it's now three LTS versions behind; you'd be starting with stale dependencies including EF Core and MediatR APIs that have since changed. The dynamic filter in Core.Persistence builds LINQ expressions from unvalidated string field names, which is a SQL injection risk if that surface is ever exposed to user input without sanitization. The demo project only implements two features (Brand, Model) with no query handler tests anywhere, so there's no signal on whether the pipeline behaviors actually work correctly under load or composition edge cases. The EfRepositoryBase generic repository is the pattern that most teams end up fighting — it leaks EF specifics and makes aggregate-level queries awkward.

View on GitHub →

// 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 →