Skip to content
CAI
Software that uses CAICheck a score

aspnetrun/run-aspnetcore-microservices

31.7

Weak · 21 September 2026

2.8k

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a .NET 8-based e-commerce microservices architecture designed for local development and containerized deployment. It comprises distinct services for catalog management, shopping cart operations, and order processing, all orchestrated via Docker Compose. The application provides a web interface for shopping and checkout, while backend services handle data persistence and business logic through gRPC and message-based communication.

Features

Add .NET 8-based Dockerfiles and shopping web application pages

The YarpApiGateway and Shopping.Web applications now include Dockerfiles that build against the .NET 8.0 SDK and runtime images, enabling containerized deployment for these services. Additionally, the Shopping.Web web app introduces new Razor Pages for the shopping experience, including a cart, checkout, order history, and product listing pages, along with the corresponding C\# code-behind files and data models.

src/ApiGateways, src/BuildingBlocks, src/WebApps · high confidence

Add basket and catalog services with .NET 8 and gRPC discount integration

The Basket and Catalog services are introduced, each built on .NET 8 and containerized via new Dockerfiles. The Basket service exposes endpoints to store, retrieve, and delete shopping carts, and to process checkouts by publishing events via MassTransit. The Catalog service provides endpoints to create, update, delete, and query products, with initial seed data. The Basket service integrates with a gRPC-based Discount service to calculate final prices before persisting cart data.

src/Services · high confidence

Added Docker Compose configuration and Postman collection for local development

Developers can now run the entire eShop microservices architecture locally using Docker Compose, with all services (Catalog, Basket, Discount, Ordering, YARP API Gateway, and Shopping Web) defined in new \docker-compose.yml\ and \docker-compose.override.yml\ files. A \.dockerignore\ file has been added to optimize the build context, and a \launchSettings.json\ file configures Visual Studio to launch all services via Docker Compose. Additionally, a Postman collection (\EShopMicroservices.postman\_collection.json\) is provided to test the Catalog and Basket APIs.

src · high confidence

Dependencies

Upgrade to .NET 8 across all services

All .NET project files in the repository have been updated to target .NET 8.0 (net8.0). This upgrade brings the application to the latest long-term support version of the .NET platform, which may include performance improvements, new language features, and updated base class libraries. Developers and operators should ensure their build environments support .NET 8.

(dependencies) · high 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 35 → 32 (-3.0)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 78 → 77 (-1.0)
  • Architecture 82 → 82 (+0.0)
  • Maturity 58 → 50 (-8.3)
  • Readiness 18 → 18 (+0.1)
  • Security 41 → 29 (-11.1)
  • Domain Modelling 68 → 84 (+16.6)
  • Event-Driven 100 → 100 (+0.0)
  • Accessibility 42 → 42 (-0.7)

Resolved (12)

  • Bounded contexts not declared
  • Duplicated block (14 lines × 2) (src/Services/Ordering/Ordering.Infrastructure/Data/Configurations/OrderConfiguration.cs)
  • High CVE: System.Text.Json 8.0.0
  • High CVE: System.Text.Json 8.0.0
  • Low CVE: Microsoft.Identity.Client 4.56.0
  • Medium CVE: Azure.Identity 1.10.3
  • Medium CVE: Azure.Identity 1.10.3
  • No exposed public API
  • The README mentions Docker Compose but does not show how to run the project (e.g. build/run commands) from the repository root. (README.md)
  • XML-doc coverage: YarpApiGateway (src/ApiGateways/YarpApiGateway/YarpApiGateway.csproj)
  • redundant comment (src/Services/Ordering/Ordering.Application/Orders/EventHandlers/Integration/BasketCheckoutEventHandler.cs)
  • single-maintainer — knowledge-concentration (bus factor) risk

New (38)

  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (14 lines × 2) (src/Services/Ordering/Ordering.Infrastructure/Data/Configurations/OrderConfiguration.cs)
  • Duplicated block (19 lines × 3) (src/WebApps/Shopping.Web/Pages/Index.cshtml.cs)
  • Duplicated block (20 lines × 3) (src/BuildingBlocks/BuildingBlocks.Messaging/Events/BasketCheckoutEvent.cs)
  • Duplicated block (6 lines × 2) (src/Services/Basket/Basket.API/Models/ShoppingCartItem.cs)
  • Duplicated block (7 lines × 2) (src/BuildingBlocks/BuildingBlocks/Pagination/PaginatedResult.cs)
  • Duplicated block (7 lines × 2) (src/Services/Catalog/Catalog.API/Models/Product.cs)
  • High CVE: System.Text.Json 8.0.0
  • High IaC: WD-COMPOSE-0002 (src/docker-compose.yml)
  • High IaC: WD-COMPOSE-0002 (src/docker-compose.yml)
  • High IaC: WD-COMPOSE-0002 (src/docker-compose.yml)
  • High IaC: WD-COMPOSE-0002 (src/docker-compose.yml)
  • Medium CVE: Azure.Identity 1.10.3
  • Medium IaC: WD-COMPOSE-0002 (src/docker-compose.yml)
  • Medium IaC: WD-DOCKER-0003 (src/ApiGateways/YarpApiGateway/Dockerfile)
  • Medium IaC: WD-DOCKER-0003 (src/ApiGateways/YarpApiGateway/Dockerfile)
  • Medium IaC: WD-DOCKER-0003 (src/Services/Basket/Basket.API/Dockerfile)
  • Medium IaC: WD-DOCKER-0003 (src/Services/Basket/Basket.API/Dockerfile)
  • …and 18 more

API surface

  • Unchanged — 17 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

aspnetrun/run-aspnetcore-microservices 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 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e3549abf009c71e8c2550f292f3a8edf110550a1 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.