Skip to content
CAI
Software that uses CAICheck a score

haxnted/pet-family-backend-new

56.4

Adequate · 21 September 2026

18.7k

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 system is a .NET 10 microservices architecture for a PetFamily platform, centered around managing pet adoptions and user accounts. It provides core domain capabilities for handling species, pets, shelters, and volunteers, alongside user profile management. The infrastructure layer supports reliable messaging and observability, while the codebase enforces consistent coding standards and centralized dependency management.

Features

Adds shared domain, contracts, and infrastructure monitoring configurations

This update introduces the core shared kernel for the PetFamily microservices architecture. It adds the \PetFamily.SharedKernel.Domain\ layer with a structured \Error\ and \ErrorType\ system for consistent error handling, alongside custom exceptions like \DomainException\, \EntityNotFoundException\, \ForbiddenException\, and \UseCaseException\. The \PetFamily.SharedKernel.Contracts\ layer is introduced, defining integration events (e.g., \UserCreatedEvent\, \UserDeletedEvent\) and MassTransit commands for the pet adoption saga (e.g., \StartPetAdoption\, \ReservePet\). Additionally, infrastructure configuration files are added for observability and monitoring: OpenTelemetry settings, Prometheus scrape configs for all services, Grafana dashboard definitions for ASP.NET Core, PostgreSQL, RabbitMQ, and Redis, as well as Kibana and RabbitMQ plugin configurations.

Shared · high confidence

Introduce account profile management with read/write capabilities

Users can now create, update, and retrieve their account profiles. This change adds the domain model for the Account aggregate (including phone number, age experience, description, and photo), along with the application layer commands and handlers for creating an account, updating profile details, and updating a profile photo. The infrastructure layer provides the database context, entity configuration, and migrations for the Accounts table, while also integrating MassTransit outbox/inbox state tables for reliable messaging. Caching is introduced to store account data by user ID for 5 minutes, and dependency injection is configured for the repository and service layers.

Solution · high confidence

Behavioural changes

Added project-wide code style and build configuration

The repository now enforces consistent C\# code formatting and style through a new .editorconfig file, which defines rules for blank lines, brace placement, 'var' usage, and indentation. Additionally, a Directory.Build.props file has been added to set the default .NET 10.0 target framework, enable implicit usings and nullable reference types, and integrate StyleCop.Analyzers for static code analysis. A stylecop.json configuration file is also included to customize analyzer behavior.

(repo-wide) · high confidence

Test coverage

Added integration tests for domain handlers

Added integration tests for the following domain handlers: Species, Pet, Shelter, and Volunteer. These new test files verify the correct behavior of command and query handlers for managing species, pets, shelters, and volunteers, including operations like adding, updating, deleting, and querying these entities.

(repo-wide) · high confidence

Dependencies

Centralized package version management and .NET 10.0 upgrade

The project has adopted centralized package version management via a new Directory.Packages.props file, which defines versions for all dependencies including OpenTelemetry, Ocelot, MassTransit, and various Microsoft libraries. Additionally, all .csproj files in the solution have been updated to target the net10.0 framework, standardizing the runtime version across the microservices and shared kernels.

(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 56 → 56 (+0.2)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 98 → 89 (-8.5)
  • Architecture 85 → 85 (+0.1)
  • Maturity 70 → 70 (+0.0)
  • Readiness 65 → 63 (-2.5)
  • Security 44 → 45 (+1.4)
  • Domain Modelling 79 (new)
  • Event-Driven 80 → 80 (+0.0)
  • Performance 60 → 60 (+0.0)

Resolved (29)

  • Bounded contexts not declared
  • Coverage not measured — analyzer environment
  • Duplicate intent: Both events represent a request to delete a file/photo. They share identical properties (FileId, BucketName) but have different names and types.
  • Duplicated block (12 lines × 2) (Solution/VolunteerManagement/Hosts/VolunteerManagement.Hosts.Endpoints/Controllers/VolunteerController.cs)
  • Duplicated block (13 lines × 2) (Solution/VolunteerManagement/Application/VolunteerManagement.Services/Sagas/PetAdoptionStateMachine.cs)
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High CVE: System.Security.Cryptography.Xml 9.0.0
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium CVE: Azure.Identity 1.3.0
  • Medium CVE: Azure.Identity 1.3.0
  • Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.15.0
  • Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.15.0
  • Medium CVE: OpenTelemetry.Exporter.OpenTelemetryProtocol 1.15.0
  • …and 9 more

New (139)

  • Ambiguous Domain Overlap: 'ReservePet' and 'StartPetAdoption' both involve VolunteerId, AdopterId, and PetId. It is unclear if these are sequential steps in a single workflow (Reserve -> Start) or alternative paths. If sequential, 'StartPetAdoption' should likely not require AdopterId if it's already known from the Reserve step, or the events should clearly indicate state transitions. The duplication of core identifiers suggests a lack of clear state management in the event model.
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • AnalyzerSeverityNone (.editorconfig)
  • …and 119 more

API surface

  • Unchanged — 64 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

haxnted/pet-family-backend-new 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 4aa0c08333341074d10cec92b34f6252ae2aedfc — 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.