Skip to content
CAI
Software that uses CAICheck a score

mehdihadeli/food-delivery-modular-monolith

47.0

Weak · 21 September 2026

20.5k

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-based modular monolith API designed for food delivery operations, structured around distinct modules for catalogs, customers, and identity. It implements CQRS and event sourcing patterns to manage product, user, and order data, supported by comprehensive integration and unit tests. The architecture includes shared building blocks for messaging and domain logic, with REST client definitions provided for API interaction.

Features

Added REST client files for catalog, customer, and identity APIs

New .rest files have been added to the \_httpclients directory, providing ready-to-use HTTP client definitions for the catalog, customer, and identity API endpoints. These files define requests for authentication, user management, product management, and restock subscriptions, enabling developers to easily test and interact with the backend services using tools like the VSCode REST Client extension.

_\httpclients · high confidence

Initial project scaffolding and configuration

The repository was initialized with essential configuration files including \.editorconfig\ for C\# code formatting and style rules, \.csharpierrc\ for CSharpier, \global.json\ specifying .NET SDK 8.0.303, \nuget.config\ for package sources, \stylecop.json\ for static analysis rules, and a \LICENSE\ file. The \README.md\ was updated to describe the 'Food Delivery Modular Monolith' architecture, and a solution file (\food-delivery-modular-monolith.sln\) was created to organize the project structure.

(repo-wide) · high confidence

Introduce Catalogs module with Brands, Categories, and Products

The Catalogs module is now available, providing the foundational domain models and infrastructure for managing brands, categories, and products. This includes the creation of domain entities, data seeders for initial data, and configuration for database mappings. The module also introduces value objects for product attributes such as dimensions, price, and stock levels, along with corresponding DTOs and mappers to support API interactions.

src/Modules/Catalogs, src/Modules/Customers, src/Modules/Identity · high confidence

Introduce modular monolith API with CQRS-based product management and structured error handling

The Food Delivery API is now structured as a modular monolith, featuring a custom controller activator that routes requests to specific modules (Catalogs, Customers, Identity, Orders) via a CompositionRoot registry. The API implements a comprehensive ProblemDetails middleware that maps custom exceptions (e.g., ConflictException, ValidationException, DomainException) to standardized HTTP error responses. Additionally, the Catalog module introduces CQRS commands and domain events for managing product attributes, including creating products, and changing their brand, category, price, supplier, and stock thresholds. The API also registers health checks for all database modules and configures CORS, monitoring, and JWT authentication.

(repo-wide) · high confidence

Introduces comprehensive CQRS, event sourcing, and messaging abstractions

The BuildingBlocks layer now provides a full set of abstractions for CQRS (commands, queries, processors), domain-driven design (aggregates, entities, business rules), event sourcing, and messaging (bus, handlers, persistence). This establishes the foundational interfaces for command/query processing, domain event handling, and reliable message delivery, enabling developers to implement these patterns consistently across the application.

src/BuildingBlocks · high confidence

Test coverage

Added integration and unit tests for Customers and Identity modules; Added shared test infrastructure for integration and end-to-end testing.

Dependencies

Centralized package version management and test project setup

The project now uses central package management via Directory.Packages.props files in both the src and tests directories. This allows all .csproj files to reference packages without specifying versions, ensuring consistent versions across the solution. The diff also introduces a shared test project (Tests.Shared) and configures various test projects (unit, integration, and end-to-end) to use this centralized dependency management.

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

Lenses

  • Code Health 82 → 68 (-14.3)
  • Architecture 66 → 67 (+0.2)
  • Maturity 65 → 66 (+1.0)
  • Readiness 47 → 42 (-5.3)
  • Security 42 → 40 (-2.9)
  • Domain Modelling 55 → 59 (+4.6)
  • Event-Driven 83 → 83 (+0.0)
  • Performance 64 → 63 (-0.6)

Resolved (30)

  • Bounded contexts not declared
  • CommentedOutCode (tests/building-blocks/Core/BuildingBlocks.Core.IntegrationTests/BusPublishTests.cs)
  • CommentedOutCode (tests/building-blocks/Core/BuildingBlocks.Core.IntegrationTests/BusPublishTests.cs)
  • CommentedOutCode (tests/building-blocks/Core/BuildingBlocks.Core.IntegrationTests/BusPublishTests.cs)
  • CommentedOutCode (tests/building-blocks/Core/BuildingBlocks.Core.IntegrationTests/BusPublishTests.cs)
  • CommentedOutCode (tests/building-blocks/Core/BuildingBlocks.Core.IntegrationTests/BusPublishTests.cs)
  • Coverage not measured
  • Duplicated block (11 lines × 2) (src/BuildingBlocks/BuildingBlocks.Core/Messaging/MessagePersistence/InMemory/InMemoryMessagePersistenceService.cs)
  • Duplicated block (11 lines × 2) (src/Modules/Identity/FoodDelivery.Modules.Identity/IdentityModuleConfiguration.cs)
  • Duplicated block (12 lines × 4) (src/Modules/Catalogs/FoodDelivery.Modules.Catalogs/Shared/Extensions/ApplicationBuilderExtensions/Seed.cs)
  • Duplicated block (15 lines × 2) (src/Modules/Catalogs/FoodDelivery.Modules.Catalogs/Shared/Extensions/ServiceCollectionExtensions/Infrastructure.cs)
  • Duplicated block (16 lines × 2) (src/BuildingBlocks/BuildingBlocks.Core/Messaging/Broker/InMemory/InMemoryBus.cs)
  • Duplicated block (8 lines × 2) (src/BuildingBlocks/BuildingBlocks.Resiliency/Extensions/HttpClientBuilderExtensions.CircuitBreaker.cs)
  • Duplicated block (9 lines × 2) (src/BuildingBlocks/BuildingBlocks.Core/Extensions/ReflectionExtensions.cs)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • LLM evaluation failed
  • No exposed public API
  • Secret: generic-api-key (src/Api/ECommerce.Api/appsettings.docker.json)
  • …and 10 more

New (148)

  • 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)
  • AnalyzerSeverityNone (.editorconfig)
  • …and 128 more

API surface

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

mehdihadeli/food-delivery-modular-monolith 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 cd65d342d8959528683893af9705f0dd0491a2af — 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.