Skip to content
CAI
Software that uses CAICheck a score

phongnguyend/Practical.CleanArchitecture

47.3

Weak · 29 July 2026

16.4k

lines of production code

C#

with JavaScript, TypeScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

How this codebase got here

Score

  • CAI 43 → 47 (+4.5)
  • Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.

Lenses

  • Code Health 58 → 61 (+3.2)
  • Architecture 84 → 84 (-0.0)
  • Maturity 61 → 64 (+3.3)
  • Readiness 34 → 46 (+11.8)
  • Security 66 → 75 (+9.2)
  • Domain Modelling 100 → 100 (+0.0)
  • Event-Driven 64 → 64 (+0.0)
  • Accessibility 36 → 37 (+1.2)
  • Performance 61 → 61 (+0.0)

Resolved (125)

  • Change coupling: Program.cs ↔ Program.cs (src/Microservices/Services.Identity/ClassifiedAds.Services.Identity.Api/Program.cs)
  • Dead code: AddClaimCommandHandler (src/Monolith/ClassifiedAds.Application/Roles/Commands/AddClaimCommand.cs)
  • Dead code: AddClaimCommandHandler (src/Monolith/ClassifiedAds.Application/Users/Commands/AddClaimCommand.cs)
  • Dead code: AddEntityCommandHandler (src/Monolith/ClassifiedAds.Application/Common/Commands/AddEntityCommand.cs)
  • Dead code: AddRoleCommandHandler (src/Monolith/ClassifiedAds.Application/Users/Commands/AddRoleCommand .cs)
  • Dead code: AddUpdateProductCommandHandler (src/Monolith/ClassifiedAds.Application/Products/Commands/AddUpdateProductCommand.cs)
  • Dead code: AddUpdateRoleCommandHandler (src/Monolith/ClassifiedAds.Application/Roles/Commands/AddUpdateRoleCommand .cs)
  • Dead code: DeleteClaimCommandHandler (src/Monolith/ClassifiedAds.Application/Roles/Commands/DeleteClaimCommand.cs)
  • Dead code: DeleteClaimCommandHandler (src/Monolith/ClassifiedAds.Application/Users/Commands/DeleteClaimCommand.cs)
  • Dead code: DeleteProductCommandHandler (src/Monolith/ClassifiedAds.Application/Products/Commands/DeleteProductCommand.cs)
  • Dead code: DeleteRoleCommandHandler (src/Monolith/ClassifiedAds.Application/Roles/Commands/DeleteRoleCommand.cs)
  • Dead code: DeleteRoleCommandHandler (src/Monolith/ClassifiedAds.Application/Users/Commands/DeleteRoleCommand.cs)
  • Dead code: DeleteUserCommandHandler (src/Monolith/ClassifiedAds.Application/Users/Commands/DeleteUserCommand.cs)
  • Dead code: GetAuditEntriesQueryHandler (src/Monolith/ClassifiedAds.Application/AuditLogEntries/Queries/GetAuditEntriesQuery.cs)
  • Dead code: GetFileEntriesQueryHandler (src/Monolith/ClassifiedAds.Application/FileEntries/Queries/GetFileEntriesQuery.cs)
  • Dead code: GetPagedAuditEntriesQueryHandler (src/Monolith/ClassifiedAds.Application/AuditLogEntries/Queries/GetPagedAuditEntriesQuery.cs)
  • Dead code: GetProductQueryHandler (src/Monolith/ClassifiedAds.Application/Products/Queries/GetProductQuery.cs)
  • Dead code: GetRoleQueryHandler (src/Monolith/ClassifiedAds.Application/Roles/Queries/GetRoleQuery.cs)
  • Dead code: GetRolesQueryHandler (src/Monolith/ClassifiedAds.Application/Roles/Queries/GetRolesQuery.cs)
  • Dead code: GetUserQueryHandler (src/Monolith/ClassifiedAds.Application/Users/Queries/GetUserQuery.cs)
  • …and 105 more

New (117)

  • Build action pinned to a mutable branch
  • Change coupling: Nav.vue ↔ List.vue (src/UIs/vuejs/src/views/Nav.vue)
  • Change coupling: RabbitMQReceiver.cs ↔ RabbitMQSender.cs (src/Microservices/Common/ClassifiedAds.Infrastructure/Messaging/RabbitMQ/RabbitMQReceiver.cs)
  • Change coupling: SendEmailWorker.cs ↔ SendSmsWorker.cs (src/Monolith/ClassifiedAds.Background/HostedServices/SendEmailWorker.cs)
  • Coverage not measured — no test passed in the analyzed run
  • Critical CVE: [GHSA redacted] (src/UIs/angular/package-lock.json)
  • High CVE: [GHSA redacted] (src/UIs/angular/package-lock.json)
  • High CVE: [GHSA redacted] (src/UIs/angular/package-lock.json)
  • High CVE: [GHSA redacted] (src/UIs/angular/package-lock.json)
  • High CVE: [GHSA redacted] (src/UIs/angular/package-lock.json)
  • High CVE: [GHSA redacted] (src/UIs/bff/reactjs/package-lock.json)
  • High CVE: [GHSA redacted] (src/UIs/angular/package-lock.json)
  • High CVE: System.Security.Cryptography.Xml 10.0.8
  • High CVE: System.Security.Cryptography.Xml 10.0.8
  • High CVE: System.Security.Cryptography.Xml 10.0.8
  • High CVE: System.Security.Cryptography.Xml 10.0.8
  • High CVE: System.Security.Cryptography.Xml 10.0.8
  • High CVE: System.Security.Cryptography.Xml 8.0.2
  • High CVE: System.Security.Cryptography.Xml 8.0.2
  • High CVE: System.Security.Cryptography.Xml 8.0.2
  • …and 97 more

API surface

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

phongnguyend/Practical.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 29 July 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 818f3b56654cb88450a5bca8a15e7423fef8609b — the exact code this score is about.
  • Scored under rubric-2026.08.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.