rijwanansari/CleanArchitectureDotNet7BlazorServer
43.1
Weak · 21 September 2026
859
lines of production code
C#
primary language
4
measurements over time
What this system is
This is a .NET 7 Blazor Server application designed to manage application settings and reference data. It provides a web interface for creating, reading, updating, and deleting configuration key-value pairs and reference fields. The system implements a layered architecture with a generic repository pattern to handle data persistence via Entity Framework Core.
Features
Added domain models for application settings and reference fields
The domain layer now includes new entities for managing application settings and reference data. Specifically, the \AppSetting\ class stores key-value pairs with metadata (reference key, value, description, and type), while \ReferenceField\ stores title and reference type information. Both entities inherit from new base classes (\AuditableWithBaseEntity\ and \BaseEntity\) that provide common auditing fields such as creation/modification dates and author/editor tracking, enabling consistent audit trails for these master data types.
Domain · high confidence
Initial WebApp scaffold with Blazor Server and App Setting management
The WebApp project has been initialized with a complete Blazor Server application structure, including the main router, layout components (MainLayout, EmptyLayout), and navigation menu. This update introduces a new App Setting management page that allows users to view, create, edit, and delete application settings through a dedicated interface. Additionally, the app now includes a Weather Forecast page that demonstrates data fetching from a service, alongside standard pages for Counter, Error handling, and unauthorized access scenarios.
WebApp · high confidence
Initial database schema and persistence infrastructure
The application now includes the initial Entity Framework Core migrations to create the 'AppSetting' and 'ReferenceField' database tables, along with the corresponding configuration classes and a generic repository implementation. This adds the foundational data access layer, including a unit-of-work pattern and dependency injection setup for the SQL Server database.
Infrastructure · high confidence
Introduce application-layer infrastructure for managing app settings
Added a new set of interfaces and models in the Application layer to support a generic repository pattern and unit-of-work abstraction. This includes the IAppSettingService and its implementation AppSettingService, which handle CRUD operations for AppSetting and ReferenceField entities. The change also introduces supporting infrastructure such as the ResponseModel for standardized API responses, AutoMapper profiles for DTO mapping, and dependency injection registration for the new services.
Application · high confidence
Behavioural changes
Project renamed and initialized with documentation and licensing
The solution file was renamed to reflect the new project name, and the repository was initialized with essential documentation and legal files. A comprehensive README.md was added, detailing the tech stack (.NET 7, Blazor Server, Entity Framework Core) and contribution guidelines. Additionally, a LICENSE.txt file was added to specify the MIT License, and a .gitignore file was updated to include build artifacts and user-specific files, while the previous .gitattributes configuration was removed.
(repo-wide) · high confidence
Dependencies
Migrate to .NET 7 and update core libraries
The project has been upgraded to .NET 7 across all layers (Application, Domain, Infrastructure, and WebApp). This includes updating the target framework and aligning key dependencies such as Entity Framework Core 7.0.0, AutoMapper 12.0.0, and Newtonsoft.Json 13.0.2. These changes ensure compatibility with the latest .NET runtime and provide access to new features and performance improvements.
(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 40 → 43 (+2.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 84 → 73 (-11.3)
- Architecture 84 → 84 (+0.0)
- Maturity 53 → 53 (+0.0)
- Readiness 38 → 47 (+9.0)
- Security 31 → 33 (+1.9)
- Accessibility 45 → 47 (+1.4)
Resolved (22)
- Delete methods are named 'Delete' and 'DeleteAsync' in both interface and implementation, which is consistent. However, 'Delete' takes an entity or expression, while 'DeleteAsync' takes an object or expression. The parameter types differ slightly.
- 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 CVE: Azure.Identity 1.6.0
- Medium CVE: Azure.Identity 1.6.0
- No exposed public API
- Retrieval of entities is named inconsistently across interfaces. 'Get' and 'GetAll' are used in IRepository, while 'GetAsync' and 'GetByIdAsync' are used in IRepositoryService. The naming convention for the base repository interface differs from the service interface.
- The Blazor README ends with a clip marker before any roadmap/contribution sections are shown, so completeness cannot be confirmed. (README.md)
- The UnitOfWork class implements transaction methods with 'Transaction' suffix, while the interface IUnitOfWork also has these methods. However, the interface IUnitOfWork also has 'Save' and 'SaveAsync', which are not transactional but persistence operations. The naming is consistent within the UnitOfWork class, but the interface IUnitOfWork mixes transactional and persistence concerns.
- The method 'Get' in EfRepository and IRepository<T> likely performs a single entity lookup by ID or key, but the name 'Get' is ambiguous compared to 'GetById' or 'GetByKey'.
- Update methods exist in both sync and async forms, but the sync 'Update' is present in the interface while the async 'UpdateAsync' is also present. However, 'EfRepository' implements both. The inconsistency is that 'Update' is used for synchronous updates while 'UpdateAsync' is for asynchronous, which is consistent, but the interface exposes both, potentially causing confusion about which to use.
- early-stage repository — too few commits for a meaningful bus factor
- early-stage repository — too little history to judge knowledge freshness
- git history depth insufficient
- git history depth insufficient
- …and 2 more
New (14)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- End-of-life runtime: .NET net7.0
- 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)
- No dependency advisory monitoring
- PR-triggered workflow without a permissions block
- WriteOnlyPrivateField (Infrastructure/Persistence/ApplicationDBContext.cs)
- WriteOnlyPrivateField (WebApp/Pages/Error.cshtml.cs)
- misleading comment (Infrastructure/Persistence/ApplicationDBContext.cs)
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
rijwanansari/CleanArchitectureDotNet7BlazorServer 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 c425519083c2733c0917a27e60f7dba31d232892 — 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.