Skip to content
CAI
Software that uses CAICheck a score

ivanpaulovich/clean-architecture-kata-dojo

69.0

Adequate · 21 September 2026

1.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 is a .NET-based banking application built on Clean Architecture principles, designed to manage customer accounts and financial transactions. It provides core capabilities for registering customers, depositing and withdrawing funds, and retrieving account details through a Web API. The system is supported by a comprehensive test suite covering domain logic, use cases, and API integration.

Features

Initial project structure and documentation for Clean Architecture Kata

The repository now includes the solution file (Clean-Architecture.sln) defining the project structure for a Clean Architecture kata, encompassing the Manga.Application, Manga.Domain, Manga.Infrastructure, and Manga.WebApi projects, along with corresponding test projects. The README provides instructions for compiling the .NET Core solution and outlines the domain model and use cases, such as account registration, balance management, and withdrawal limits.

(repo-wide) · high confidence

Initial release of the Manga banking application

The application is introduced with core domain models for Accounts and Customers, including value objects for Name, SSN, and Amount. The feature set includes use cases for registering a new customer and account, depositing and withdrawing funds, and retrieving account or customer details. Infrastructure is provided via an in-memory data access layer and a Web API layer that exposes these capabilities, supported by exception handling and validation filters.

(repo-wide) · high confidence

Test coverage

Initial test suite for domain, use cases, and API integration

Added comprehensive test coverage for the Manga application, including domain unit tests for Account, Amount, Credit, Customer, Debit, Name, SSN, and TransactionCollection; use-case tests for deposit, withdraw, and register operations; and an integration test for customer registration, deposit, withdrawal, and account closure via the Web API.

test · high confidence

Dependencies

Initial project structure and dependencies

Added .csproj files for the Manga application layers (Domain, Application, Infrastructure, WebApi) and corresponding test projects. This establishes the build configuration, target frameworks (netstandard2.0 and netcoreapp2.0), and initial package references including Autofac, AutoMapper, Serilog, Swashbuckle, xUnit, and related testing utilities.

(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 67 → 69 (+1.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 71 → 71 (+0.0)
  • Architecture 81 → 81 (+0.0)
  • Maturity 87 → 84 (-3.7)
  • Readiness 75 → 75 (+0.0)
  • Security 59 → 63 (+4.1)

Resolved (27)

  • Bounded contexts not declared
  • High CVE: Microsoft.AspNetCore.Identity 2.0.0
  • High CVE: Microsoft.AspNetCore.Identity 2.0.0
  • High CVE: Microsoft.AspNetCore.Server.Kestrel.Core 2.0.0
  • High CVE: Microsoft.AspNetCore.Server.Kestrel.Core 2.0.0
  • High CVE: System.Net.Security 4.3.0
  • High CVE: System.Net.Security 4.3.0
  • High CVE: System.Security.Cryptography.Xml 4.4.0
  • High CVE: System.Security.Cryptography.Xml 4.4.0
  • Inconsistent naming for the Swedish Personal Identity Number. The domain model uses 'SSN' (Social Security Number), while the API/UseCase layer uses 'Personnummer' (Swedish term). Additionally, the domain model exposes 'Name' directly, while the API layer wraps it in a 'CustomerDetailsModel' or 'CustomerModel'.
  • Inconsistent naming for the customer's name property. The application layer uses 'CustomerOutput', while the API layer uses 'CustomerDetailsModel' and 'CustomerModel'. The property name 'Name' is consistent, but the container types differ significantly.
  • Medium CVE: Microsoft.AspNetCore.All 2.0.0
  • Medium CVE: Microsoft.AspNetCore.All 2.0.0
  • Medium CVE: Microsoft.AspNetCore.Server.Kestrel.Core 2.0.0
  • Medium CVE: Microsoft.AspNetCore.Server.Kestrel.Core 2.0.0
  • Medium CVE: Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv 2.0.0
  • Medium CVE: System.Data.SqlClient 4.4.0
  • Medium CVE: System.Net.Security 4.3.0
  • Medium CVE: System.Net.Security 4.3.0
  • Medium CVE: System.Security.Cryptography.Xml 4.4.0
  • …and 7 more

New (8)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • End-of-life runtime: .NET netcoreapp2.0
  • High CVE: Microsoft.AspNetCore.Identity 2.0.0
  • High CVE: System.Net.Security 4.3.0
  • High CVE: System.Security.Cryptography.Xml 4.4.0
  • The Swedish personal identity number is named 'Personnummer' in the API request and model, but misspelled as 'perssonummer' (double 's') in a parameter. While 'Personnummer' is the correct Swedish spelling, the inconsistency lies in the typo within the codebase.
  • The exception class 'InsuficientFundsException' contains a spelling error ('Insuficient' instead of 'Insufficient'). While this is a single symbol, it represents a vocabulary inconsistency with standard English spelling conventions used elsewhere in the codebase (e.g., 'Description', 'Transaction').

API surface

  • Unchanged — 6 HTTP endpoints

Architecture

  • Unchanged — 2 containers · 1 contexts · 0 edges

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

Survey your own repository

ivanpaulovich/clean-architecture-kata-dojo 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 a4897cb278354d986ec2f0d8e75a850c4354b8e8 — 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-fa71c66cabd8.