Skip to content
CAI
Software that uses CAICheck a score

thangchung/coolstore-moduliths

35.5

Weak · 21 September 2026

2.4k

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

CoolStore is a modular monolith application that manages product catalogs, inventory availability, and localization resources. It exposes data through GraphQL and gRPC interfaces, supported by a shared domain infrastructure layer. The system includes a Blazor-based frontend for user interaction and seed data for initial state.

Features

Add Blazor UI with GraphQL client and i18n support

The Blazor frontend is introduced with a new GraphQL client (StrawberryShake 11.0.0) to fetch products and inventory data, alongside a multi-language (i18n) system for UI text. The application includes pages for displaying product lists, inventory details, and a weather forecast demo, all wired up via dependency injection in Startup.cs.

src/CoolStore.UI.Blazor · high confidence

Add domain infrastructure and validation pipeline

The \src/Moduliths.Infra\ module introduces foundational domain and infrastructure components. This includes domain primitives such as \CoreException\, \EntityBase\, \IAggregateRoot\, \IDomainEvent\, \IRepository\, \ISpecification\, \IUnitOfWork\, \IdentityBase\, \SpecificationBase\, and \ValueObjectBase\. The infrastructure layer adds a generic \RepositoryBase\ and \UnitOfWork\ implementation using Entity Framework Core, along with MediatR integration for dispatching domain events. Additionally, a validation pipeline is added via \RequestValidationBehavior\ and related models (\ValidationError\, \ValidationException\, \ValidationResultModel\) to enforce request validation before handlers execute.

src/Moduliths.Infra · high confidence

Added database schema and domain models for localization

Added the initial database schema and domain models for the localization module. This includes the \Culture\ and \Resource\ entities, their corresponding ID types, Entity Framework Core configurations, and the \LocalizationDbContext\ with its initial migration. This establishes the underlying data structure for managing cultural resources.

src/CoolStore.Modules.Localization · high confidence

Added initial Protocol Buffers definitions for Catalog and Inventory services

New .proto files have been added to define the data models and API contracts for the Catalog and Inventory domains. The Catalog service now includes message definitions for products and categories, along with gRPC service methods for creating, updating, and deleting products. The Inventory service introduces an InventoryDto and corresponding gRPC methods to retrieve inventory details. These changes establish the foundational schema for these services.

src/proto · high confidence

Added inventory availability query and shared contract definitions

Users can now retrieve the full list of available inventories via a new GetAvailabilityInventories handler, which queries all inventory records and returns their ID, location, website, and description. This change also introduces shared contract definitions for inventory requests (GetInventoriesRequest, GetInventoryStreamRequest, GetInventoryRequest) and catalog domain events (ProductUpdated, ProductDeleted) in the shared module, supporting the new inventory query capability.

src/CoolStore.Modules.Inventory/Usecases/GetAvailabilityInventories, src/CoolStore.Modules.Shared · high confidence

Initial catalog module with database schema, domain models, and GraphQL API

The catalog module is introduced with a new database schema and domain model for managing products and categories. This includes the \CatalogDbContext\ with entity configurations for \Product\ and \Category\, along with an initial migration that creates the \catalog\ schema, populates it with sample data, and defines the \Products\ and \Categories\ tables. The domain layer adds \Product\ and \Category\ aggregates, value objects, and repositories. A new GraphQL API is added via \Program.cs\ and \CatalogQueries.cs\, exposing a \GetProducts\ query that retrieves products by price and name, integrating with the MediatR command bus and inventory services.

src/CoolStore.Modules.Catalog · high confidence

Initial repository structure and seed data for CoolStore modular monolith

The repository is initialized with the foundational structure for the CoolStore application, including a solution file defining projects for the domain, infrastructure, and modules (Catalog, Inventory, Localization, etc.). Seed data files (categories, inventories, products) are added to populate the system, alongside localization resources for English and Vietnamese. Configuration files for Docker (SQL Server), NuGet (FeatherHttp), and a PowerShell script for database migrations are also included to support local development and deployment.

(repo-wide) · high confidence

Dependencies

Initial project structure and dependency setup for CoolStore modules

The repository has been initialized with a new modular architecture, introducing distinct .csproj files for the Graph API, Catalog, Inventory, Localization, Shared, Blazor UI, and core domain/infrastructure layers. This change establishes the foundational build configuration for the application, targeting .NET Core 3.1 and introducing key dependencies including HotChocolate, MediatR, Entity Framework Core, gRPC, and various Microsoft.Extensions libraries to support the new modular design.

(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

Score

  • CAI 37 → 35 (-1.5)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 68 → 68 (+0.0)
  • Architecture 86 → 86 (+0.0)
  • Maturity 51 → 51 (+0.0)
  • Readiness 22 → 22 (+0.0)
  • Security 44 → 41 (-2.5)
  • Domain Modelling 67 → 68 (+1.3)
  • Accessibility 49 → 43 (-6.5)

Resolved (10)

  • Bounded contexts not declared
  • Build status unknown
  • No exposed public API
  • XML-doc coverage: CoolStore.GraphApi (src/CoolStore.GraphApi/CoolStore.GraphApi.csproj)
  • early-stage repository — too little history to judge knowledge freshness
  • git history depth insufficient
  • git history depth insufficient
  • redundant comment (src/CoolStore.Modules.Catalog/Data/CatalogDbContext.cs)
  • redundant comment (src/CoolStore.Modules.Catalog/Data/CatalogDbContext.cs)
  • single-maintainer — knowledge-concentration (bus factor) risk

New (7)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no project overview (README.md)
  • End-of-life runtime: .NET netcoreapp3.1
  • Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • redundant comment (src/CoolStore.Modules.Catalog/Data/CatalogDbContext.cs)
  • redundant comment (src/CoolStore.Modules.Catalog/Data/CatalogDbContext.cs)
  • redundant comment (src/CoolStore.Modules.Catalog/Data/CatalogDbContext.cs)

API surface

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

thangchung/coolstore-moduliths 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 c1395d00920d9d69b7cb80807c5ae4026d553d12 — 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.