Skip to content
CAI
Software that uses CAICheck a score

puomhicipo/PlainBridge

50.1

Adequate · 21 September 2026

7.9k

lines of production code

C#

with TypeScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

PlainBridge is a distributed application platform that manages host and server applications through a .NET 10-based microservices architecture. It provides a web UI for user interaction, an API layer for business logic, and a client service for real-time communication via WebSockets and message buses. The system is orchestrated by an AppHost that coordinates services like IdentityServer and RabbitMQ, supported by comprehensive unit and integration tests.

Features

Added service defaults for observability and health checks

Introduced a new \Extensions.cs\ file in the \PlainBridge.ServiceDefaults\ project that configures OpenTelemetry for metrics and tracing, adds default liveness and readiness health check endpoints (\/health\, \/alive\), and sets up HTTP client resilience and service discovery. This provides a standardized way for services to enable distributed tracing, metrics collection, and health monitoring.

src/PlainBridge.ServiceDefaults · high confidence

Initial project structure and documentation

The repository now includes a complete solution structure for the PlainBridge application, defined by the new PlainBridge.sln and PlainBridge.slnx files. This establishes the build and development environment for all components, including the AppHost, API, Server, Client, IdentityServer, and Web UI projects. Additionally, the project is now fully documented with a comprehensive README.md, and standard repository files like .dockerignore, LICENSE (MIT), and development cookies/headers have been added to support local development and legal compliance.

(repo-wide) · high confidence

Initial release of the PlainBridge.Web.UI Angular application

The PlainBridge.Web.UI Angular application has been introduced, providing the web-based user interface for the PlainBridge platform. This update establishes the frontend architecture, including the main application module, routing configuration, and layout components. It introduces a consistent API response handling mechanism via the \ApiResponseService\, which automatically displays toast notifications based on the \resultDescription\ from the backend. The UI features a dashboard displaying counts for host and server applications, a protected layout with navigation, and role-based access control via an \AuthGuard\. Additionally, the project includes configuration files for development, testing (Karma, Cypress), and containerized deployment (Docker, Nginx).

src/PlainBridge.Web · high confidence

Introduce client API endpoint and application layer for handling HTTP and WebSocket requests

The project has been restructured to introduce a new \PlainBridge.Client.ApiEndPoint\ project, which serves as the HTTP entry point for the client application. This includes a \DependencyResolver\ that configures authentication (OpenID Connect), caching (HybridCache), and error handling. The application layer (\PlainBridge.Client.Application\) has been added to handle business logic, including HTTP request handling, WebSocket management, and message bus services (ClientBus, ServerBus) for communicating with backend services via RabbitMQ. Additionally, DTOs for caching and port management have been introduced to support these new capabilities.

(repo-wide) · high confidence

Introduced AppHost orchestration and configurable service ports

The application's development and local deployment experience is now managed by a new AppHost project that orchestrates the entire stack. This introduces a centralized configuration for service ports (API, Server, IdentityServer, Web UI, and Client) and wires up dependencies such as Redis, RabbitMQ, and optional Elasticsearch for logging. The host also configures Docker Compose integration and sets up the Angular web UI, ensuring that services start in the correct order and are accessible at the specified local ports.

src/PlainBridge.AppHost · high confidence

Behavioural changes

Restructured PlainBridge.Api project folders and introduced new API endpoints

The PlainBridge.Api project has been restructured, moving code into a new \src/PlainBridge.Api\ directory. This change introduces a new \PlainBridge.Api.ApiEndPoint\ project containing a \DependencyResolver\ for service registration, an \ErrorHandler\ for exception handling, and several new API endpoints: \HostApplicationEndpoint\ (CRUD for host applications), \ServerApplicationEndPoint\ (CRUD for server applications), \UserEndpoint\ (user management), and \LoginEndpoint\ (authentication and session management).

(repo-wide) · high confidence

Test coverage

Added integration tests for API, Client, IDS, and Server components; Added unit tests for Host, Server, and User application use cases.

Dependencies

Upgrade to .NET 10 and update dependencies

The project has been upgraded to target .NET 10.0 across all .csproj files. Additionally, the .NET Aspire packages have been updated to version 13.4.3, and other dependencies such as Serilog, xUnit, and various Microsoft libraries have been updated to their latest compatible versions.

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

Lenses

  • Code Health 72 → 71 (-0.8)
  • Architecture 83 → 83 (+0.2)
  • Maturity 63 → 63 (+0.0)
  • Readiness 45 → 46 (+1.2)
  • Security 77 → 61 (-16.5)
  • Domain Modelling 58 → 65 (+6.4)
  • Event-Driven 74 → 74 (+0.0)
  • Accessibility 43 → 43 (-0.0)

Resolved (66)

  • Boundary-crossing change coupling: Extensions.cs ↔ ServerApplicationDto.cs (src/PlainBridge.ServiceDefaults/Extensions.cs)
  • Boundary-crossing change coupling: Program.cs ↔ Program.cs (src/PlainBridge.Api/src/PlainBridge.Api.ApiEndPoint/Program.cs)
  • Boundary-crossing change coupling: Program.cs ↔ Program.cs (src/PlainBridge.Api/src/PlainBridge.Api.ApiEndPoint/Program.cs)
  • Bounded contexts not declared
  • Build did not complete in the analyzer
  • Change coupling: HostApplicationDto.cs ↔ ServerApplicationDto.cs (src/PlainBridge.Shared/src/PlainBridge.Shared.Application/DTOs/HostApplicationDto.cs)
  • Change coupling: HostApplicationService.cs ↔ PlainBridgeApiClientService.cs (src/PlainBridge.Server/src/PlainBridge.Server.Application/Services/HostApplication/HostApplicationService.cs)
  • Change coupling: HttpRequestProxyMiddleware.cs ↔ WebSocketProxyMiddleware.cs (src/PlainBridge.Server/src/PlainBridge.Server.ApiEndPoint/Middleware/HttpRequestProxyMiddleware.cs)
  • Change coupling: PlainBridgeApiClientService.cs ↔ ServerApplicationService.cs (src/PlainBridge.Server/src/PlainBridge.Server.Application/Services/PlainBridgeApiClient/PlainBridgeApiClientService.cs)
  • CommentedOutCode (src/PlainBridge.Client/tests/PlainBridge.Client.Tests/UnitTests/Management/WebSocketManagementTests.cs)
  • CommentedOutCode (src/PlainBridge.Client/tests/PlainBridge.Client.Tests/UnitTests/Management/WebSocketManagementTests.cs)
  • CommentedOutCode (src/PlainBridge.Client/tests/PlainBridge.Client.Tests/UnitTests/Management/WebSocketManagementTests.cs)
  • Critical CVE: [GHSA redacted] (src/PlainBridge.Web/src/PlainBridge.Web.UI/package-lock.json)
  • Critical CVE: [GHSA redacted] (src/PlainBridge.Web/src/PlainBridge.Web.UI/package-lock.json)
  • Duplicated block (12 lines × 2) (src/PlainBridge.Server/src/PlainBridge.Server.Application/Services/ApiExternalBus/ApiExternalBusService.cs)
  • Duplicated block (15 lines × 2) (src/PlainBridge.Api/src/PlainBridge.Api.Infrastructure/ExternalServices/Identity/IdentityService.cs)
  • Duplicated block (15 lines × 4) (src/PlainBridge.Api/src/PlainBridge.Api.ApiEndPoint/ErrorHandling/ErrorHandler.cs)
  • High CVE: [GHSA redacted] (src/PlainBridge.Web/src/PlainBridge.Web.UI/package-lock.json)
  • High CVE: [GHSA redacted] (src/PlainBridge.Web/src/PlainBridge.Web.UI/package-lock.json)
  • High CVE: [GHSA redacted] (src/PlainBridge.Web/src/PlainBridge.Web.UI/package-lock.json)
  • …and 46 more

New (219)

  • ApiResponseService.handleResponse (cognitive 17) (src/PlainBridge.Web/src/PlainBridge.Web.UI/src/app/services/api-response.service.ts)
  • Boundary-crossing change coupling: Program.cs ↔ Program.cs (src/PlainBridge.Api/src/PlainBridge.Api.ApiEndPoint/Program.cs)
  • Boundary-crossing change coupling: Program.cs ↔ Program.cs (src/PlainBridge.Api/src/PlainBridge.Api.ApiEndPoint/Program.cs)
  • Change coupling: ApiExternalBusService.cs ↔ HostApplicationService.cs (src/PlainBridge.Server/src/PlainBridge.Server.Application/Services/ApiExternalBus/ApiExternalBusService.cs)
  • Change coupling: CacheManagement.cs ↔ ServerApplicationService.cs (src/PlainBridge.Server/src/PlainBridge.Server.Application/Management/Cache/CacheManagement.cs)
  • Change coupling: DependencyResolver.cs ↔ LoginEndpoint.cs (src/PlainBridge.Api/src/PlainBridge.Api.ApiEndPoint/DependencyResolver.cs)
  • Change coupling: LoginEndpoint.cs ↔ Program.cs (src/PlainBridge.Api/src/PlainBridge.Api.ApiEndPoint/Endpoints/LoginEndpoint.cs)
  • Change coupling: ServerApplicationConsumerService.cs ↔ ServerBusService.cs (src/PlainBridge.Server/src/PlainBridge.Server.Application/Services/ServerApplicationConsumer/ServerApplicationConsumerService.cs)
  • CommentedOutCode (src/PlainBridge.ServiceDefaults/Extensions.cs)
  • Critical CVE: [GHSA redacted] (src/PlainBridge.Web/src/PlainBridge.Web.UI/package-lock.json)
  • Critical CVE: [GHSA redacted] (src/PlainBridge.Web/src/PlainBridge.Web.UI/package-lock.json)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (src/PlainBridge.IdentityServer/src/PlainBridge.IdentityServer.EndPoint/Pages/Ciba/ViewModel.cs)
  • Duplicated block (10 lines × 3) (src/PlainBridge.Api/src/PlainBridge.Api.Application/Features/ServerApplication/Commands/CreateServerApplicationCommand.cs)
  • Duplicated block (10 lines × 3) (src/PlainBridge.IdentityServer/src/PlainBridge.IdentityServer.EndPoint/Pages/Ciba/Consent.cshtml.cs)
  • Duplicated block (11 lines × 2) (src/PlainBridge.Api/src/PlainBridge.Api.Application/Features/HostApplication/Commands/CreateHostApplicationCommand.cs)
  • Duplicated block (11 lines × 2) (src/PlainBridge.Api/src/PlainBridge.Api.Application/Features/HostApplication/Commands/CreateHostApplicationCommand.cs)
  • Duplicated block (11 lines × 2) (src/PlainBridge.Api/src/PlainBridge.Api.Infrastructure/ExternalServices/Identity/IdentityService.cs)
  • Duplicated block (11 lines × 4) (src/PlainBridge.Api/src/PlainBridge.Api.Application/Features/User/Commands/CreateUserCommand.cs)
  • …and 199 more

API surface

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

puomhicipo/PlainBridge 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 c22cd1c0f9c3d43d374120cb2e2541a123073a7d — 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.