stphnwlsh/CleanMinimalApi
47.5
Weak · 21 September 2026
1.4k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a Clean Architecture template for .NET 10 Minimal APIs, structured into Presentation, Application, and Infrastructure layers. It implements a CQRS pattern using MediatR to manage domain logic for Authors, Movies, and Reviews, including full CRUD operations and validation. The infrastructure layer utilizes Entity Framework Core with an in-memory database for persistence, while the presentation layer exposes these capabilities via HTTP endpoints with OpenAPI documentation and structured logging.
How it got here
2021 — Initial Clean Minimal API template release
7 changes.
This period established the initial codebase for a Clean Minimal API template targeting .NET 10, implementing a three-layer architecture with CQRS, Entity Framework Core, and Minimal APIs. The work included setting up core domain logic for Authors, Movies, and Reviews, along with integration testing infrastructure and dependency updates to align with the new framework version.
2022–2023 — comprehensive test coverage implementation
5 changes.
This period focused on establishing robust test coverage across the application's layers, including unit tests for domain query and command handlers in the Movies and Reviews domains. Integration tests were added to validate the Entity Framework repository implementation, database configuration, and API endpoints, ensuring correct CRUD operations and error handling. The work also included presentation-layer unit tests for validators and endpoints, along with infrastructure improvements like parallel test execution and standardized JSON handling.
Features
Initial CQRS Application Layer Implementation
The application layer now implements a CQRS architecture using MediatR, introducing domain entities and query/command handlers for Authors, Movies, and Reviews. This includes the ability to retrieve lists and individual items for Authors and Movies, as well as full CRUD operations (Create, Read, Update, Delete) for Reviews, with validation ensuring referenced Authors and Movies exist before creating or updating a review. Additionally, a Version query is provided to expose application assembly metadata.
src/Application · high confidence
Initial Entity Framework Core infrastructure for Movie Reviews
The Infrastructure layer now provides the data persistence implementation for the Movie Reviews domain using Entity Framework Core with an in-memory database. This includes the definition of database models (Author, Movie, Review), Entity Framework configurations for relationships and keys, and an AutoMapper setup to map between Application entities and Infrastructure models. The repository pattern is implemented via EntityFrameworkMovieReviewsRepository, which handles CRUD operations for authors, movies, and reviews, and is registered in the dependency injection container along with the DbContext and a TimeProvider singleton.
src/Infrastructure · high confidence
Initial release of Clean Minimal API template for .NET 10
This change introduces the initial codebase for the Clean Minimal API template, a streamlined implementation of Clean Architecture using .NET 10 Minimal APIs. The solution is structured into three main projects: Presentation (Minimal API endpoints), Application (domain logic and CQRS-style commands/queries), and Infrastructure (data access and internal implementations). It includes a Dockerfile and docker-compose.yml for containerized development, an .editorconfig for consistent code styling, and a global.json pinning the SDK to version 10.0.1. The template is installable via the \dotnet new\ CLI and integrates Serilog, MediatR, FluentValidation, and Swashbuckle.
(repo-wide) · high confidence
Initial release of CleanMinimalApi presentation layer
This change introduces the Presentation layer for the CleanMinimalApi, establishing the HTTP API surface using .NET Minimal APIs. It defines endpoints for Authors, Movies, and Reviews (including full CRUD operations for Reviews) as well as a Version endpoint, all wired through a CQRS pattern using MediatR. The implementation includes a custom validation filter leveraging FluentValidation, structured logging via Serilog, OpenAPI/Swagger documentation, and JSON serialization configured for performance and AOT compatibility.
src/Presentation · high confidence
Test coverage
Added code coverage exclusions for test assemblies; Added integration test infrastructure and configuration; Added integration tests for API endpoints; Added integration tests for the MovieReviews database repository; Added unit tests for Movie query handlers; Added unit tests for Review command and query handlers; Added unit tests for presentation-layer endpoints and validators.
Dependencies
Upgrade to .NET 10 and update core dependencies
The solution has been migrated to target .NET 10.0, updating the Presentation layer and the template project to use the new framework version. This change includes upgrading key dependencies to versions compatible with .NET 10, such as Microsoft.EntityFrameworkCore.InMemory (10.0.11), Microsoft.AspNetCore.OpenApi (10.0.11), and Serilog.AspNetCore (10.0.0). Test projects have also been updated to use xUnit 2.9.3, NSubstitute 6.2.0, and Microsoft.NET.Test.Sdk 18.9.0.
(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 47 → 48 (+0.9)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 71 → 58 (-12.9)
- Architecture 86 → 86 (+0.0)
- Maturity 61 → 65 (+4.4)
- Readiness 50 → 51 (+0.5)
- Security 33 → 36 (+3.4)
Resolved (24)
- Bounded contexts not declared
- Coverage not measured — no coverage collector is wired up
- Duplicated block (6 lines × 2) (src/Infrastructure/Databases/MovieReviews/Mapping/AuthorMappingProfile.cs)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium IaC: CKV2_GHA_1 (.github/workflows/build-pipeline.yml)
- Medium IaC: CKV2_GHA_1 (.github/workflows/dependecy-updates.yml)
- Medium IaC: CKV_DOCKER_3 (Dockerfile)
- No exposed public API
- …and 4 more
New (44)
- AnalyzerSeverityNone (.editorconfig)
- AnalyzerSeverityNone (.editorconfig)
- CoverageExclusion (src/Application/DependencyInjection.cs)
- CoverageExclusion (src/Infrastructure/Databases/MovieReviews/Models/Author.cs)
- CoverageExclusion (src/Infrastructure/Databases/MovieReviews/Models/Entity.cs)
- CoverageExclusion (src/Infrastructure/Databases/MovieReviews/Models/Movie.cs)
- CoverageExclusion (src/Infrastructure/Databases/MovieReviews/Models/Review.cs)
- CoverageExclusion (src/Presentation/Extensions/WebApplicationBuilderExtensions.cs)
- CoverageExclusion (src/Presentation/Extensions/WebApplicationExtensions.cs)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (6 lines × 2) (src/Infrastructure/Databases/MovieReviews/Mapping/AuthorMappingProfile.cs)
- Flaky test: Presentation.Tests.Integration::CleanMinimalApi.Presentation.Tests.Integration.Endpoints.MovieEndpointTests.CleanMinimalApi.Presentation.Tests.Integration.Endpoints.MovieEndpointTests.GetMovieById_ShouldReturn_Ok
- High IaC: WD-COMPOSE-0002 (docker-compose.yml)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 24 more
Changes since last survey
- 1 commits — 1 feature/other, 0 fixes
By area
- src/Infrastructure — 1 commit
Notable commits
- change: Automated Dependency Updates
API surface
- Unchanged — 10 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
stphnwlsh/CleanMinimalApi 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 e19265251efabca0a08c2c1f5d56fdedfe6db885 — 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.