iayti/CleanArchitecture
45.9
Weak · 21 September 2026
3k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a Clean Architecture-based ASP.NET Core 6 API that manages city, district, and village data through a structured application layer. It exposes RESTful endpoints for CRUD operations, authentication, and weather forecasts, while enforcing standardized error handling and request processing via MediatR behaviors. The architecture is containerized with Docker and supported by comprehensive unit and integration tests.
Features
Added API exception filter for standardized error handling
A new ApiExceptionFilterAttribute has been added to the API layer to centralize exception handling. This filter intercepts specific exceptions (ValidationException, NotFoundException, UnauthorizedAccessException, ForbiddenAccessException) and invalid model states, mapping them to structured ServiceResult responses with appropriate HTTP status codes (e.g., 400, 404, 403, 500). This ensures consistent error responses for API consumers.
src/Apps/CleanArchitecture.Api/Filters · high confidence
Added application layer infrastructure and city management features
Introduced a new application layer structure in src/Common, including common infrastructure such as MediatR pipeline behaviors (authorization, logging, performance monitoring, validation, and exception handling), custom exception classes, and shared models (ServiceResult, ServiceError, PaginatedList). Additionally, implemented full CRUD operations (Create, Read, Update, Delete) and event handlers for the City domain, along with a GetToken query for user authentication.
src/Common · high confidence
Initial release of the Clean Architecture template
The repository is initialized with the core structure for a Clean Architecture ASP.NET Core 6 solution, including the solution file, project definitions, and configuration files. It introduces Docker support via docker-compose.yml for running SQL Server, Elasticsearch, and Kibana, and adds standard project metadata files such as the MIT license, a Code of Conduct, and a Contributing guide.
(repo-wide) · high confidence
Initial release of the CleanArchitecture.Api application
The API application is now fully bootstrapped with ASP.NET Core 6, including a Dockerfile for containerized builds, a Program entry point that handles database migrations and seeding, and a Startup class that configures services such as FluentValidation, Swagger, and health checks. Configuration files (appsettings) and environment-specific settings for IdentityServer and logging are also included, establishing the foundational runtime environment for the API.
src/Apps/CleanArchitecture.Api · high confidence
New API controllers for city, district, village, and weather forecast endpoints
The API now exposes new endpoints for managing cities, districts, and villages, as well as retrieving weather forecasts. The \BaseApiController\ provides a shared \Mediator\ for handling requests via the MediatR library. Each controller implements specific HTTP methods: \CitiesController\ and \VillagesController\ support full CRUD or list operations with pagination and cancellation tokens; \DistrictsController\ handles creation and export; \LoginController\ manages authentication token retrieval; and \WeatherForecastController\ provides static and current weather data. All controllers are located in \src/Apps/CleanArchitecture.Api/Controllers\ and rely on the underlying application layer queries and commands.
src/Apps/CleanArchitecture.Api/Controllers · high confidence
Test coverage
Added integration tests for Cities, Districts, and Villages; Added unit tests for Mapster mapping configurations; Added unit tests for exception classes; Added unit tests for the RequestLogger/LoggingBehaviour.
Dependencies
Upgrade to .NET 6 and update NuGet packages
The project files for the API, application, domain, infrastructure, and test projects have been updated to target .NET 6.0. Additionally, various NuGet packages have been upgraded to their latest versions, including FluentValidation (v10.4.0), MediatR (v10.0.1), and Microsoft.EntityFrameworkCore (v6.0.9).
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 48 → 46 (-2.3)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 76 → 76 (-0.1)
- Architecture 78 → 78 (+0.0)
- Maturity 60 → 50 (-9.9)
- Readiness 30 → 29 (-1.1)
- Security 57 → 59 (+2.3)
- Event-Driven 100 → 100 (+0.0)
Resolved (27)
- Bounded contexts not declared
- 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
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Leaked secret: hardcoded-credential (src/Apps/CleanArchitecture.Api/Controllers/LoginController.cs)
- 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
- …and 7 more
New (25)
- CommentedOutCode (tests/CleanArchitecture.Application.IntegrationTests/WeatherForecast/Queries/GetCurrentWeatherTests.cs)
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Duplicated block (16 lines × 2) (src/Common/CleanArchitecture.Application/Dto/CurrentWeatherForecastDto.cs)
- End-of-life runtime: .NET net6.0
- High CVE: MessagePack 2.1.152
- High CVE: NuGet.Protocol 5.11.0
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Inconsistent exception naming suffix. Most exceptions use the standard '-Exception' suffix (ValidationException, ForbiddenAccessException), but one uses the non-standard '-ateException' suffix (UnauthorizeException). The correct noun form for the exception type should be 'UnauthorizedException'.
- Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
- Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
- Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
- Medium IaC: WD-DOCKER-0003 (src/Apps/CleanArchitecture.Api/Dockerfile)
- Medium IaC: WD-DOCKER-0003 (src/Apps/CleanArchitecture.Api/Dockerfile)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- …and 5 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
iayti/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 199363fa5d4547f2c64feb34a8d8be7dec2fc6aa — 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.