// the find
NimblePros/eShopOnWeb
Sample ASP.NET Core 10.0 reference application, powered by Microsoft, demonstrating a domain-centric application architecture with monolithic deployment model.
NimblePros-maintained fork of the original Microsoft eShopOnWeb reference app, updated to ASP.NET Core 10.0. It demonstrates clean/onion architecture with a monolithic deployment: MVC web frontend, Blazor WebAssembly admin panel, and a minimal API project. Aimed at .NET developers learning layered architecture patterns, not at anyone building a real store.
- Layer separation is genuinely well done — ApplicationCore has zero infrastructure dependencies, specifications live in the domain layer, and EF config is isolated in Infrastructure. Good model for showing why the dependency rule matters.
- Kept current: targeting ASP.NET Core 10.0 on main with older versions tagged, plus CI via GitHub Actions and a dependabot config, so it doesn't rot like many reference apps.
- Dev container support with separate containers for the app and docs is a practical addition that lowers the 'works on my machine' friction for newcomers.
- Ardalis.Specification is used consistently for query encapsulation rather than leaking IQueryable everywhere — one of the few reference apps that actually practices what it preaches on repository abstraction.
- The companion eBook still references ASP.NET Core 8.0 while the code is on 10.0, so the primary learning resource is already behind the code it's supposed to explain.
- Blazor WebAssembly admin requires running a separate PublicApi process locally — there's no single-command startup that handles all three projects, and the README instructions are easy to get wrong.
- Test coverage is thin on integration scenarios; the functional tests hit the web layer but there are no tests exercising the Blazor admin or the API endpoints together, which is exactly where the tricky auth/CORS wiring lives.
- The BlazorAdmin project carries its own copies of Bootstrap and Open Iconic as static files rather than using a package reference or CDN, and the CSS is dated — minor but signals the frontend side is treated as second-class.