referbruv/ContainerNinja.CleanArchitecture
47.3
Weak · 21 September 2026
1.7k
lines of production code
C#
with TypeScript
4
measurements over time
What this system is
This system is a full-stack web application built on .NET 6 and Angular 13, designed to manage items and user authentication. The backend implements a Clean Architecture with CQRS and MediatR, featuring JWT-based authentication, FluentValidation, and distributed caching via NCache. The frontend provides a custom interface for item management and user login, served through an Nginx proxy configuration.
Features
Initial release of the ContainerNinja API with Clean Architecture
The API now supports versioned endpoints (v1 and v2) for managing items and authentication, utilizing a Clean Architecture structure with MediatR for CQRS. Users can create, read, update, and delete items, as well as register and authenticate users via JWT. The API includes features like ETag-based caching and response caching, along with FluentValidation for request validation. A distributed caching service (NCache) is also integrated, though currently configured to use in-memory caching by default.
API · high confidence
Replaced default Angular templates with a custom client application
The default Angular 'Counter' and 'Fetch data' templates have been removed and replaced with a new client application featuring a login page, an items management interface (list, add, edit, delete), and a home page. This includes new routing, components, services (auth, items, token), and configuration files, while also updating the build configuration to output to 'dist/client' and configuring Nginx for the new static assets.
Client · high confidence
Behavioural changes
Implements CQRS handlers with distributed caching and validation
The application now uses a CQRS (Command Query Responsibility Segregation) architecture, introducing new command and query handlers for managing items and users. All command handlers (CreateItem, CreateUser, DeleteItem, UpdateItem, ValidateUser) now enforce input validation via FluentValidation before processing. Additionally, query handlers for retrieving items (GetAllItems, GetItemById) and the UpdateItem command handler now utilize distributed caching (via IDistributedCache and ICachingService) to store and retrieve data, improving performance by serving cached responses when available.
API/ContainerNinja.Core/Handlers/Commands, API/ContainerNinja.Core/Handlers/Queries · high confidence
Renames Nginx proxy to Proxy and updates upstream server names
The Nginx proxy configuration has been renamed to Proxy, and the upstream server names have been updated: 'client' is now 'fe' (pointing to 'client'), and 'dncapi' is now 'be' (pointing to 'api').
Proxy · medium confidence
Dependencies
Upgrade .NET 6 and Angular 13 dependencies
The project has been upgraded to .NET 6 and Angular 13, with corresponding updates to the C\# project files and the client's package.json. The .NET side now targets net6.0 and includes packages for MediatR, FluentValidation, JWT authentication, Swagger, and NCache. The client side has been upgraded from Angular 8 to 13, updating the Angular CLI, build tools, and core libraries to their 13.x versions.
(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 47 → 47 (-0.0)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 73 → 74 (+0.4)
- Architecture 83 → 83 (+0.0)
- Maturity 41 → 44 (+2.8)
- Readiness 53 → 47 (-5.8)
- Security 43 → 41 (-2.8)
- Event-Driven 100 (new)
- Accessibility 64 → 66 (+2.3)
Resolved (66)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- …and 46 more
New (110)
- Coverage not measured — .NET and JavaScript/TypeScript suite
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Critical CVE: [GHSA redacted] (Client/package-lock.json)
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Documentation: no usage examples (README.md)
- Duplicate definition of user roles. Both a Constants class with string fields and an Enum with the same values (Base, Admin, Owner) are exposed. This creates ambiguity on whether consumers should use the string constants or the enum, and risks drift if values are updated in one but not the other.
- End-of-life runtime: .NET net6.0
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- High CVE: [GHSA redacted] (Client/package-lock.json)
- …and 90 more
API surface
- Unchanged — 6 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
referbruv/ContainerNinja.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 9a725d3db2e287580a65319d5717c848fad32551 — 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.