meysamhadeli/booking-monolith
58.2
Weak · 20 September 2026
11.3k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a .NET 10 monolithic booking service that manages flight, aircraft, and seat data alongside the creation and management of bookings. It employs a CQRS architecture with separate read models in MongoDB and write models in PostgreSQL, synchronized via an event-driven pipeline using EventStoreDB and MassTransit. The platform provides a minimal API layer secured by JWT authentication and supports local development orchestration through .NET Aspire.
Features
Initial API service scaffolding with Aspire integration
The API service is initialized with a new infrastructure layer that integrates with .NET Aspire for local development orchestration. This includes a centralized \SharedInfrastructureExtensions\ class that configures the application with JWT authentication, IdentityServer, MediatR with validation and logging behaviors, MassTransit for in-memory messaging, and multiple data stores (PostgreSQL, MongoDB, EventStoreDB). The service also enables distributed observability (OpenTelemetry, Prometheus) and resilience patterns via Aspire's service defaults, while \Program.cs\ wires these components together to expose minimal endpoints.
src/Api · high confidence
Initial Booking Monolith domain scaffolding
This change introduces the initial structure for the Booking Monolith, establishing the foundational domain models and infrastructure for the Flight and Booking aggregates. It defines the core entities (Booking, Aircraft, Airport, Flight, Seat) with value objects and validation logic, sets up the read/write data access layers using Entity Framework Core (PostgreSQL) and MongoDB, and implements event mapping and projection logic to synchronize domain events to the read models.
src/BookingMonolith · high confidence
Initial release of Flight and Booking domain features
This change introduces the initial implementation of core Flight and Booking capabilities, including endpoints and handlers for creating, updating, deleting, and querying flights, aircraft, airports, and seats. It also adds the CreateBooking feature, which orchestrates flight and seat availability checks to finalize a booking. The implementation follows a CQRS pattern with separate read models (MongoDB) and write models (SQL/Entity Framework), and includes internal commands to synchronize the read side.
(repo-wide) · high confidence
Introduce foundational building blocks for CQRS, event sourcing, and persistence
This change adds the core architectural components for the application within the BuildingBlocks library. It introduces a CQRS foundation with MediatR pipeline behaviors for caching and cache invalidation, alongside interfaces for commands and queries. An event-driven architecture is established with domain, integration, and internal event types, a composite event mapper, and an event dispatcher that handles publishing and persistence. Persistence support includes an EF Core base context with automatic audit tracking, optimistic concurrency, soft deletes, and transaction management, as well as an EventStoreDB integration for event-sourced aggregates, subscriptions, and projections. Utility features like pagination with Sieve and database seeding are also included.
src/BuildingBlocks · high confidence
Project initialized with .NET 10 target and Aspire integration scaffolding
The repository has been initialized with a new solution structure targeting .NET 10 (SDK 10.0.103), replacing the previous .NET 9 baseline. This includes a global \Directory.Build.props\ file that enforces modern C\# coding standards, nullable reference types, and a suite of Roslyn-based analyzers. The solution now includes dedicated Aspire projects (\AppHost\ and \ServiceDefaults\) to support service discovery and local orchestration, alongside standard development tooling such as \.editorconfig\, \.dockerignore\, and commitlint configuration.
(repo-wide) · high confidence
Behavioural changes
Added commit message linting and pre-commit formatting hooks
The repository now enforces commit message standards and code formatting automatically. A new commit-msg hook runs commitlint to validate commit messages against configured rules, while a pre-commit hook executes npm scripts for formatting and CI-format checks before changes are staged.
.husky · high confidence
Dependencies
Initialize .NET 10 monolith with Aspire hosting and standard tooling
The project is initialized as a .NET 10 monolith, with core libraries and the API service targeting net10.0 and referencing Microsoft .NET 10 packages (e.g., EF Core 10.0.3, ASP.NET Core 10.0.3). An Aspire AppHost is added to manage infrastructure, referencing Aspire.Hosting packages at version 13.1.1 (including Docker, MongoDB, PostgreSQL, RabbitMQ, Redis, EventStore, and Elasticsearch hosts). The build is configured with commitlint and Husky for conventional commits, and integration tests are set up with xUnit and Microsoft.NET.Test.Sdk.
(dependencies) · high confidence
Housekeeping
Added booking monolith architecture diagram
A new architectural diagram (booking-monolith.drawio) has been added to the assets folder, illustrating the system's structure. The diagram depicts a monolith containing Identity, Flight, Passenger, and Booking domains, supported by Postgres, EventStore, and Mongo databases, and an Outbox Processor.
assets · 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 59 → 58 (-1.2)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 79 → 56 (-22.5)
- Architecture 78 → 78 (-0.0)
- Maturity 71 → 68 (-2.0)
- Readiness 50 → 55 (+5.0)
- Security 66 → 59 (-6.7)
- Domain Modelling 73 → 81 (+7.7)
- Event-Driven 82 → 82 (+0.0)
- Performance 63 → 63 (+0.0)
Resolved (41)
- Bounded contexts not declared
- Duplicated block (12 lines × 2) (src/BuildingBlocks/EFCore/AppDbContextBase.cs)
- Duplicated block (16 lines × 3) (src/BuildingBlocks/EFCore/AppDbContextBase.cs)
- Duplicated block (19 lines × 3) (src/BookingMonolith/src/Flight/Data/EfTxFlightBehavior.cs)
- Duplicated block (19 lines × 3) (src/BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerMetrics.cs)
- Duplicated block (19 lines × 3) (src/BuildingBlocks/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerMetrics.cs)
- Duplicated block (24 lines × 3) (src/BuildingBlocks/EFCore/AppDbContextBase.cs)
- Duplicated block (9 lines × 2) (src/BookingMonolith/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlight.cs)
- Duplicated block (9 lines × 2) (src/BuildingBlocks/PersistMessageProcessor/PersistMessageProcessor.cs)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: MessagePack 2.5.192
- High CVE: MessagePack 2.5.192
- 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)
- LLM evaluation failed
- Medium CVE: [GHSA redacted] (package-lock.json)
- …and 21 more
New (218)
- 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 198 more
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
meysamhadeli/booking-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 20 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 c631f6f9d20ea7b74add4dd740f084f1888acfbf — 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.