Skip to content
CAI
Software that uses CAICheck a score

a-pedroso/CleanArchitecture

39.0

Weak · 21 September 2026

1.6k

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Introduced Web API with full CRUD endpoints and modern observability stack

Added the WebApi project containing a ProductController that exposes standard RESTful endpoints (GET, POST, PUT, DELETE) for product management, wired to a MediatR-based backend. The API now includes structured logging via Serilog (outputting to Console, Loki, and Seq), metrics collection using Prometheus-net, and distributed tracing via OpenTelemetry with a Jaeger exporter. Additionally, the application supports automatic Entity Framework Core database migrations, Swagger/ReDoc documentation, and configurable header forwarding for reverse proxy environments.

src/Presentation · high confidence

Repository initialization and structural reorganization

The repository was initialized with a new .NET 6 solution structure, introducing a Clean Architecture layout with distinct Application, Domain, Infrastructure, and Presentation layers. This change includes adding essential configuration files such as .editorconfig for code formatting, a .dockerignore, and a tye.yaml for local development orchestration. The solution file was reorganized to reflect the new project hierarchy, and supporting files like README.md and LICENSE were added.

(repo-wide) · high confidence

Behavioural changes

Refactored Product feature to use Result and PagedResponse wrappers

The Product feature's command and query handlers have been refactored to return a generic \Result\<T\>\ wrapper instead of the previous \Response\<T\>\ or \PagedResponse\<T\>\ types. This change standardizes the return types across the application, simplifying error handling and success states for operations like creating, updating, and deleting products, as well as retrieving them via \GetAllProducts\ and \GetProductById\ queries.

src/Application/Features/Products · medium confidence

Refactored application layer structure and types

The application layer has been restructured: common wrappers (PagedRequest, PagedResponse, Result) and exception classes have been updated or replaced, and the legacy Todo/Identity/CSV/Mapping infrastructure has been removed. The WeatherForecasts feature now uses a new GetWeatherForecastDTO and a Result-wrapped query handler, while domain entities (Product, BaseAuditableEntity, BaseEntity) and common interfaces have been renamed and simplified.

src/Application · high confidence

Removed Todo and TodoList command/query handlers

All command and query handlers for managing Todo items and Todo lists have been removed from the application layer. This includes the Create, Update, and Delete commands for both TodoItems and TodoLists, as well as the GetTodos and ExportTodos queries. Users will no longer be able to create, update, or delete individual todo items or todo lists through these specific endpoints.

src/application/Features/TodoLists · high confidence

Removed identity and todo features, introduced product domain

The identity management subsystem (including IdentityContext, DependencyInjection, and related services) has been removed from the infrastructure layer. The previous TodoList and TodoItem entities and their associated repositories and configurations have been deleted. In their place, a new Product entity has been introduced, including its EF Core configuration, repository, and a corresponding database migration. The underlying persistence layer has also been refactored to use synchronous repository interfaces (removing the 'Async' suffix from class names) and the directory structure has been standardized to match the domain model.

src/Infrastructure · high confidence

Test coverage

Removed obsolete integration test suite; Removed obsolete unit tests for logging, mapping, and domain value objects.

Dependencies

Upgrade to .NET 6 and modernize dependencies

The project has been upgraded to .NET 6.0, replacing the previous .NET Core 3.1 and .NET Standard 2.1 targets across all core and infrastructure projects. This includes updating NuGet packages such as FluentValidation, MediatR, and Microsoft.EntityFrameworkCore to their .NET 6-compatible versions, and removing the legacy Angular/Node.js client build configuration from the WebUI project.

(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 39 → 39 (+0.1)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 60 → 60 (-0.1)
  • Architecture 93 → 93 (+0.0)
  • Maturity 39 → 39 (+0.0)
  • Readiness 21 → 21 (+0.0)
  • Security 80 → 82 (+2.1)

Resolved (22)

  • High CVE: MessagePack 2.1.152
  • High CVE: MessagePack 2.1.152
  • High CVE: NuGet.Protocol 5.11.0
  • High CVE: NuGet.Protocol 5.11.0
  • Low CVE: NuGet.Protocol 5.11.0
  • Medium CVE: Azure.Identity 1.3.0
  • Medium CVE: Azure.Identity 1.3.0
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • Medium CVE: MessagePack 2.1.152
  • No exposed public API
  • Outdated: OpenTelemetry.Instrumentation.StackExchangeRedis
  • Secret: generic-api-key (src/Presentation/WebApi/appsettings.json)
  • …and 2 more

New (10)

  • CommentedOutCode (src/Application/Features/Products/Commands/UpdateProduct/UpdateProductCommandValidator.cs)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (15–21 lines × 2) (src/Application/Features/Products/Commands/CreateProduct/CreateProductCommandValidator.cs)
  • End-of-life runtime: .NET net6.0
  • High CVE: MessagePack 2.1.152
  • High CVE: NuGet.Protocol 5.11.0
  • Medium IaC: WD-DOCKER-0003 (src/Presentation/WebApi/Dockerfile)
  • Medium IaC: WD-DOCKER-0003 (src/Presentation/WebApi/Dockerfile)
  • Typo in method name: 'Reponse' instead of 'Response'. This typo is consistently propagated from the interface to the implementation, but the name itself is incorrect.

API surface

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

a-pedroso/CleanArchitecture 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 4cde0fc283afec3cc3629fc686ee6b6452d05ae7 — 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.