Skip to content
CAI
Software that uses CAICheck a score

akoken/onion-architecture

44.1

Weak · 21 September 2026

720

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 an ASP.NET web application built on the .NET Framework, structured using Onion Architecture with a clear separation of concerns. It implements Domain-Driven Design and CQRS patterns to manage products and categories through distinct core, infrastructure, and client layers. The infrastructure layer handles data persistence via Entity Framework 6 and provides logging with Serilog, while the core layer manages business logic and command/query handling. The codebase includes automated testing for query handlers and is configured for continuous integration.

Features

Added logging, persistence, and service layers to the infrastructure

The infrastructure layer now includes a new logging service using Serilog, a persistence layer with Entity Framework 6 for database operations, and a service layer for product and category management. The persistence layer introduces a command dispatcher and executor to handle command validation and execution, while the service layer provides methods to retrieve products and categories from the database.

src/Infrastructure · high confidence

Initial project structure and CI configuration

The repository is initialized with an Onion Architecture solution containing Core, Infrastructure, Client, and DependencyResolution layers, along with a Test folder. A README file documents the use of DDD, CQRS, and ASP.NET, while an AppVeyor CI configuration is added to handle NuGet restoration and build status notifications.

(repo-wide) · high confidence

Behavioural changes

Moved Web project to Client folder

The Web project has been reorganized into the \src/Client\ directory. This change includes the relocation of core configuration files such as \BundleConfig.cs\, \FilterConfig.cs\, and \RouteConfig.cs\, as well as static assets like \Site.css\ and \bootstrap.css\. Additionally, the \ApplicationInsights.config\ file has been moved to this new location, ensuring that telemetry and performance monitoring settings are correctly associated with the client-side web application.

src/Client · high confidence

Fixes

Revert to .NET Framework from .NET Core

The project has been reverted from .NET Core back to the .NET Framework. This change includes the addition of core domain and service layer files (such as ICacheService, ILoggingService, Category, Product, and command/query handlers) and the dependency resolution bootstrapper, which now utilizes SimpleInjector for dependency injection and Entity Framework 6 for data access.

src/Core, src/DependencyResolution · medium confidence

Test coverage

Added unit tests for the GetCategoriesQuery

A new test project, Infrastructure.Tests, was introduced containing a unit test for the GetCategoriesQuery. The test verifies that the query correctly retrieves all categories from the data store, using mocked dependencies to ensure isolated testing of the query's behavior.

test · high confidence

Dependencies

Updated .NET Framework dependencies to version 4.6.1

The project files and package configurations for the Web, Bootstrapper, Logging, Persistence, Service, and Infrastructure.Tests components have been updated to target the .NET Framework 4.6.1. This includes adding or updating references to key libraries such as Entity Framework 6.1.3, SimpleInjector 3.3.2, Serilog 2.4.0, and various Microsoft and third-party NuGet packages to ensure compatibility with the new framework version.

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

Lenses

  • Code Health 95 → 97 (+1.7)
  • Architecture 80 → 80 (+0.0)
  • Maturity 46 → 46 (+0.0)
  • Readiness 47 → 47 (+0.0)
  • Security 95 → 95 (+0.0)
  • Accessibility 49 → 29 (-20.3)

Resolved (9)

  • Bounded contexts not declared
  • Build status unknown
  • No exposed public API
  • Test reliability not measured — no test run produced results
  • no production source files with tracked history to analyse
  • redundant comment (src/Client/Web/App_Start/BundleConfig.cs)
  • redundant comment (src/Client/Web/Properties/AssemblyInfo.cs)
  • redundant comment (src/Client/Web/Properties/AssemblyInfo.cs)
  • single-maintainer — knowledge-concentration (bus factor) risk

New (6)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • No dependency advisory monitoring
  • WriteOnlyPrivateField (test/Infrastructure.Tests/GetCategoriesQueryTests.cs)
  • redundant comment (src/Client/Web/Properties/AssemblyInfo.cs)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

akoken/onion-architecture 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 9ce0f05ba873bdaa207a5d91129e05c9b356632e — 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.