onebeyond/monaco
53.4
Adequate · 20 September 2026
5.5k
lines of production code
C#
primary language
1
measurement over time
What this system is
Monaco is a .NET template system that generates backend REST API, Blazor WASM, and .NET MAUI application scaffolds. It provides a foundational architecture for backend services, featuring domain-driven design patterns, event sourcing support, and standardized query handling via MediatR. The generated solutions are structured around core business entities like companies, products, and media assets, with comprehensive test coverage for application-layer features.
Features
Domain model for companies, products, and media assets
The domain layer now includes entity and value-object definitions for the core business concepts: Company (with name, email, website, and address), Product (with title, description, price, and image gallery), and media assets (File, Document, and Image with dimensions, GPS, and thumbnails). Country and Address value objects support location data, while GpsPosition and ImageDimensions provide validated coordinate and size structures. These models establish the data structure for managing company catalogs and their associated media content.
Monaco.Template.Backend.Domain · high confidence
Initial release of Monaco .NET templates with CLI support
This entry marks the initial availability of the Monaco project, a set of .NET templates for backend (REST API), Blazor WASM, and .NET MAUI applications. The release includes the MIT license, NuGet configuration, and a comprehensive README detailing installation via \dotnet new install Monaco.Template\ and usage for generating backend solutions. It explicitly notes that Visual Studio support for the backend template is discontinued in favor of CLI usage to ensure correct folder structure generation, and specifies support for .NET 10.
(repo-wide) · high confidence
New domain and query base classes for common backend functionality
The \Monaco.Template.Backend.Common\ library now includes foundational classes to support domain-driven design and query handling. It introduces \QueryBase\<T\>\, a MediatR request base that provides case-insensitive helpers for parsing query string parameters into various types (strings, integers, booleans, etc.) and checking for 'expand' flags. It also adds \AggregateRoot\, which manages a collection of \DomainEvent\ objects (implementing \INotification\) to support event sourcing patterns, and \Enumeration\, a base class for strongly-typed enumerations with lookup capabilities. Additionally, \Page\<T\>\ and \Pager\ records are provided to standardize pagination metadata and item collections across the application.
Monaco.Template.Backend.Common · high confidence
Test coverage
Added application-layer tests for Company, Country, and File features; Added unit tests for Product application features.
Dependencies
Backend solution template now targets .NET 10
The backend solution template has been upgraded to target .NET 10.0, as defined in the new Directory.Build.props file. This change updates the underlying framework for all generated projects, requiring a development environment with .NET 10 SDK installed to build and run the template.
src/Content · high confidence
Centralized package management and .NET 10 upgrade
The backend template solution now uses Central Package Management (Directory.Packages.props) to define versions for all dependencies, ensuring consistency across the 21 project files. This change upgrades the target framework to .NET 10, updating core Microsoft packages (such as EF Core, ASP.NET Core, and Extensions) to version 10.0.2, and refreshes third-party libraries including SkiaSharp to 3.119.1, MassTransit to 8.5.7, and AwesomeAssertions to 9.3.0.
(dependencies) · high confidence
Initial NuGet package definition for Monaco Template v2.8.0
The \src/Monaco.Template.nuspec\ file has been added, defining the NuGet package metadata for the Monaco Template project. This configuration sets the package ID to \Monaco.Template\, version to \2.8.0\, and identifies the author as One Beyond. It specifies the package as a Template type, includes the MIT license, and configures file inclusion for the \Content\ directory while excluding build artifacts (bin, obj, logs) and user-specific files. The package also references the README and a specific icon image for display in package managers.
src · 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 65 → 53 (-11.8)
- Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 95 → 93 (-1.6)
- Architecture 75 (new)
- Maturity 57 → 57 (+0.3)
- Readiness 61 → 60 (-0.6)
- Security 84 → 59 (-25.7)
- Domain Modelling 45 (new)
- Event-Driven 84 (new)
- Performance 60 (new)
Resolved (147)
- Further orphaned files (smaller)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Low coverage: AppDbContext.cs (Monaco.Template.Backend.Application/Persistence/AppDbContext.cs)
- Low coverage: AppDbContext.cs (src/Content/Backend/Solution/Monaco.Template.Backend.Application/Persistence/AppDbContext.cs)
- Low coverage: ApplicationOptions.cs (Monaco.Template.Backend.Application/DependencyInjection/ApplicationOptions.cs)
- Low coverage: ApplicationOptions.cs (src/Content/Backend/Solution/Monaco.Template.Backend.Application/DependencyInjection/ApplicationOptions.cs)
- Low coverage: AuditEntry.cs (Monaco.Template.Backend.Common.Infrastructure/Context/AuditTrail/AuditEntry.cs)
- Low coverage: AuditEntry.cs (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Context/AuditTrail/AuditEntry.cs)
- Low coverage: AuditEventTelemetryConverter.cs (Monaco.Template.Backend.Common.Serilog/ApplicationInsights/TelemetryConverters/AuditEventTelemetryConverter.cs)
- Low coverage: AuditLog.cs (Monaco.Template.Backend.Common.Infrastructure/Context/AuditTrail/AuditLog.cs)
- Low coverage: AuditLog.cs (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Context/AuditTrail/AuditLog.cs)
- Low coverage: AuthExtensions.cs (Monaco.Template.Backend.Common.Api/Auth/AuthExtensions.cs)
- Low coverage: BaseDbContext.cs (Monaco.Template.Backend.Common.Infrastructure/Context/BaseDbContext.cs)
- Low coverage: BaseDbContext.cs (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Context/BaseDbContext.cs)
- Low coverage: BehaviorExtensions.cs (Monaco.Template.Backend.Common.Application/Commands/Behaviors/BehaviorExtensions.cs)
- Low coverage: BehaviorExtensions.cs (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Commands/Behaviors/BehaviorExtensions.cs)
- Low coverage: BlobMetadata.cs (BlobMetadata.cs)
- Low coverage: BlobMetadata.cs (Monaco.Template.Backend.Common.BlobStorage/BlobMetadata.cs)
- …and 127 more
New (25)
- Documentation: no contributor guidance (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (11 lines × 2) (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Serilog/ApplicationInsights/TelemetryConverters/AuditEventTelemetryConverter.cs)
- Duplicated block (13 lines × 2) (src/Content/Backend/Solution/Monaco.Template.Backend.Application/Features/Product/CreateProduct.cs)
- Duplicated block (26 lines × 2) (src/Content/Backend/Solution/Monaco.Template.Backend.Application/Features/Company/CreateCompany.cs)
- Duplicated block (8 lines × 2) (src/Content/Backend/Solution/Monaco.Template.Backend.Application/Features/Product/CreateProduct.cs)
- Duplicated block (8 lines × 2) (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Serilog/ApplicationInsights/TelemetryConverters/AuditEventTelemetryConverter.cs)
- Duplicated block (8–9 lines × 2) (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Context/Extensions/FilterExtensions.cs)
- FilterExtensions.GetOperationExpression (cognitive 30) (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Context/Extensions/FilterExtensions.cs)
- FilterExtensions.GetOperationExpression (cyclomatic 20) (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Context/Extensions/FilterExtensions.cs)
- FilterExtensions.ValidateDataType (cyclomatic 23) (src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Context/Extensions/FilterExtensions.cs)
- High CVE: SSH.NET 2025.1.0
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- MethodTooLong: CountrySeed.GetCountries (src/Content/Backend/Solution/Monaco.Template.Backend.Application/Persistence/EntityConfigurations/Seeds/CountrySeed.cs)
- Mock framework: Moq
- Mock framework: Moq
- …and 5 more
Architecture
- Containers 5 added · 0 removed · contexts 2 added · 0 removed · edges 1 added · 0 removed
Added containers (5)
- database:Database
- queue:Message bus
- web-api:Monaco.Template.Backend.Api
- web-api:Monaco.Template.Backend.Common.ApiGateway
- worker:Monaco.Template.Backend.Worker
Added bounded contexts (2)
- Monaco.Template.Backend.Common
- Monaco.Template.Backend.Domain
Added dependency edges (1)
- Monaco.Template.Backend.Domain → Monaco.Template.Backend.Common
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
onebeyond/monaco 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 20 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 5700abab4d735e7accdcd0d1fde823845e8c99c3 — 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.