Clean Architecture Template 10.8.0 Released

Over the last few weeks, the Clean Architecture Solution Template has had a pretty significant overhaul. What started as a round of dependency updates snowballed into rethinking several core parts of the template. Here's a summary of the highlights from v10.1.0 through v10.8.0.

New Documentation Site

The template now has a dedicated docs site at cleanarchitecture.jasontaylor.dev, covering getting started guides, architecture overview, and detailed documentation for each layer of the template. Existing READMEs in the repo have been updated or removed to avoid duplicating content — the docs site is now the single source of truth.

Clean Architecture documentation site

Frontend Modernisation

The Angular app jumped from version 18 to 21, and the React app migrated from Create React App to Vite. Both frontends also got a visual refresh — Bootstrap has been replaced with Pico CSS, a minimal classless CSS framework that provides light and dark mode out of the box.

Angular frontend with Pico CSS and dark mode

NSwag → ASP.NET Core OpenAPI + Scalar

NSwag's runtime API introspection and Swagger UI have been replaced with the built-in ASP.NET Core OpenAPI support and Scalar as the API explorer UI. NSwag is still used under the hood for generating the TypeScript API clients via a prebuild npm script in both the Angular and React apps.

Scalar API explorer

Identity API Endpoints

The Razor Pages-based Identity UI has been replaced with the ASP.NET Core Identity API endpoints. This is a much better fit for SPA and API-only templates — no more server-rendered pages for authentication.

Aspire Integration

This was the big one. Aspire is now included in all solution configurations and manages both the Web API and SPA frontends. The test infrastructure was also rebuilt around Aspire — acceptance tests use Aspire + Playwright, and functional tests run through Aspire with support for SQLite, PostgreSQL, and SQL Server.

The motivation was to eliminate friction. Previously, running functional or acceptance tests required manual database setup and launching multiple processes. Now, dotnet test is all that's needed.

Aspire dashboard

Modernised Minimal API

The endpoint infrastructure was refactored to use a static abstract interface (IEndpointGroup) instead of the previous EndpointGroupBase class. Endpoint handlers are now static methods, and a new RoutePrefix property supports custom and nested resource paths.

Simplified Tooling and Defaults

Cake was replaced with straightforward PowerShell build scripts, and SQLite is now the default database provider — no more dependency on SQL Server LocalDB just to get started. The Todo demo has also been slimmed down, removing pagination, the purge command, and domain events to keep the sample focused on the essentials.


If there's something you'd like to see in a future release, let me know by raising an issue on GitHub.

Read more