ardalis/VerticalCleanModularMicroservices
55.3
Adequate · 3 August 2026
1.8k
lines of production code
C#
primary language
3
measurements over time
What this system is
This system is a .NET 10-based e-commerce application that manages customers, products, and order lifecycles. It provides full CRUD operations for customer profiles and order processing, including cart management, item addition, and checkout flows. The codebase demonstrates multiple architectural patterns, including vertical slices, clean architecture, modular monoliths, and microservices, all supported by Entity Framework Core and Aspire for local development.
Features
Added Clean Verticals sample with Aspire hosting and value object support
A new 'Clean Verticals' sample project has been added to demonstrate a vertical slice architecture organized by domain features (Cart, GuestUser, Order, Product) rather than technical layers. The sample includes a .NET 10 target framework, Aspire hosting for local development, and a custom Entity Framework Core value generator to support the Vogen library for strongly-typed value objects. The solution also includes a new \OrderDemo.CleanArch.Core\ project containing domain models, specifications, and interfaces, alongside an \OrderDemo.CleanArch.Infrastructure\ project that implements the data access layer with EF Core configurations and repository patterns.
05-CleanVertical · high confidence
Added customer and order management capabilities
The Customers module now supports creating customers, retrieving customer details, and listing all customers. Additionally, the Orders module provides commands and queries to create, confirm, add items to, delete items from, and retrieve orders by ID or date. The Products module exposes a query to fetch product details, which is used by the order handlers to populate order items with product names and prices.
(repo-wide) · high confidence
Customers and Orders modules with API endpoints and domain models
Introduced the Customers and Orders modules within the modular monolith, including domain models (Customer, Order, OrderItem), repository interfaces and Entity Framework Core implementations, and API endpoints for creating, retrieving, and managing customers and orders. The AppHost configures SQL Server databases, a Papercut email testing container, and registers module services. Authorization is enforced via a custom service that validates admin or owner access to customer records.
03-ModularMonolith · high confidence
Initial vertical slice implementation for the cart and checkout flow
The OrderDemo.Api project now includes a complete vertical slice for managing shopping carts and processing orders. Users can add items to their cart, view cart contents, and proceed to checkout. The implementation introduces new database entities for Carts, CartItems, and Orders, along with corresponding Entity Framework Core migrations. The API exposes endpoints for adding to cart, viewing the cart, and confirming purchases, which integrates with a payment processing service to finalize orders.
01-VerticalSlice/src · high confidence
Initialize Clean Architecture project structure
The CleanArchitecture demo project has been initialized with a new solution structure. This includes an .editorconfig for consistent code formatting and naming conventions, a global.json pinning the .NET 10 SDK, and a Directory.Build.props file that sets the target framework to net10.0 with nullable references and implicit usings enabled. The solution file (OrderDemo.CleanArch.slnx) defines the project hierarchy, including Aspire host and service defaults, core/infrastructure/use-cases/web layers, and functional/integration/unit test projects.
02-CleanArchitecture · high confidence
Introduce Aspire host and EF Core infrastructure for domain aggregates
The application now includes an Aspire host (\OrderDemo.CleanArch.AspireHost\) to manage local development services, including a SQL Server instance and the web project. The domain model (Cart, GuestUser, Order, Product) is now persisted via Entity Framework Core, featuring custom value object converters for IDs and value types, along with a domain event dispatcher that automatically publishes events after database changes are saved. Initial database migrations and seed data for products have also been added.
02-CleanArchitecture/src · high confidence
Introduce Customers and Orders modules with API endpoints and domain logic
The Customers and Orders modules are introduced, providing full CRUD and state-management capabilities for customer profiles and order lifecycles. This includes API endpoints for creating, retrieving, and listing customers and orders, as well as specific actions like adding/removing order items and confirming orders. The domain layer includes aggregate roots (Customer, Order, OrderItem) with associated specifications for querying. Infrastructure changes include a new EF Core DbContext, repository implementations, and database migrations. Additionally, the AppHost is configured to manage dependencies on SQL Server, RabbitMQ, and Papercut, wiring up the microservices for local development.
04-Microservices · high confidence
Test coverage
Add functional and integration tests for the product domain
Added new test projects and files to verify the application's behavior. Functional tests in \OrderDemo.CleanArch.FunctionalTests\ include a \ProductList\ endpoint test and a \CustomWebApplicationFactory\ to manage the test database lifecycle. Integration tests in \OrderDemo.CleanArch.IntegrationTests\ cover the \EfRepository\ (add, update, delete) and the \ListProducts\ query with pagination. A \NoOpMediator\ stub was also added to the unit tests to facilitate isolated testing.
02-CleanArchitecture/tests · high confidence
Dependencies
Upgrade to .NET 10 and update project dependencies
All projects in the solution have been upgraded to target .NET 10. This includes updating the .NET SDK version, migrating to .NET 10-specific packages (such as \Microsoft.AspNetCore.Identity.EntityFrameworkCore\ 10.0.0-rc.2), and updating related dependencies like Aspire, OpenTelemetry, and Entity Framework Core to their latest compatible versions. This ensures the codebase is built on the latest .NET runtime and leverages the latest library features.
(dependencies) · high confidence
Upgrade to .NET 10 for the Vertical Slice demo
The 01-VerticalSlice demo project has been upgraded to target .NET 10. This includes updating the global.json to use the .NET 10 SDK (version 10.0.100-rc.2.25502.107) and configuring the project properties to use the net10.0 target framework with nullable and implicit usings enabled.
01-VerticalSlice · medium confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 55 → 55 (+0.4)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.
Lenses
- Code Health 81 → 81 (-0.2)
- Architecture 82 → 82 (+0.0)
- Maturity 72 → 72 (+0.0)
- Readiness 47 → 48 (+0.9)
- Security 48 → 48 (+0.0)
- Performance 71 → 71 (+0.0)
Resolved (14)
- High CVE: MessagePack 2.5.192
- High CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.13.1
- Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.13.1
- Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.13.1
New (22)
- CommentedOutCode (02-CleanArchitecture/tests/OrderDemo.CleanArch.FunctionalTests/CustomWebApplicationFactory.cs)
- CommentedOutCode (02-CleanArchitecture/tests/OrderDemo.CleanArch.FunctionalTests/CustomWebApplicationFactory.cs)
- High CVE: MessagePack 2.5.192
- High CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: MessagePack 2.5.192
- Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.13.1
- Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.13.1
- Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.13.1
- NoWarnInCsproj (02-CleanArchitecture/Directory.Build.props)
- NoWarnInCsproj (05-CleanVertical/Directory.Build.props)
- Shell project: Nimble.Modulith.Email.Contracts (04-Microservices/src/Nimble.Modulith.Email.Contracts/Nimble.Modulith.Email.Contracts.csproj)
- Shell project: Nimble.Modulith.Reporting.Contracts (04-Microservices/src/Nimble.Modulith.Reporting.Contracts/Nimble.Modulith.Reporting.Contracts.csproj)
- …and 2 more
API surface
- Unchanged — 10 HTTP endpoints
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ardalis/VerticalCleanModularMicroservices was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 3 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 42dcbd5f99d0c922641a611943b70dfecb1cf9a9 — the exact code this score is about.
- Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.