Skip to content
CAI
Software that uses CAICheck a score

pawelkaczor/ddd-leaven-akka-v2

42.3

Weak · 20 September 2026

1.6k

lines of production code

Scala

with Lua

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a sample e-commerce application built with Scala, Akka, and Event Sourcing, organized into distinct subsystems for Sales, Invoicing, Shipping, and Headquarters. It implements a CQRS architecture where write-back services manage domain aggregates like reservations and shipments via an Event Store, while read-front services expose HTTP APIs backed by SQL view stores. The platform includes comprehensive tooling for local development, stress testing, and end-to-end validation of the order lifecycle.

How it got here

2015 — Subsystem modularization and reactive DDD implementation

48 changes.

The project was restructured from a flat layout into distinct business subsystems (Sales, Invoicing, Shipping, Headquarters), each implementing a reactive DDD architecture with separate write-back, read-back, and read-front services. This period focused on building the core domain aggregates, establishing CQRS projections to SQL view stores, and configuring the Akka cluster and Event Store persistence for each module. Comprehensive testing infrastructure, including Vagrant-based end-to-end environments and stress tests, was introduced to validate the distributed system.

2016–2017 — Order lifecycle and saga implementation

6 changes.

This period focused on implementing the end-to-end order lifecycle through a new Order Process Manager saga in the Headquarters service, which orchestrates interactions between sales, invoicing, and shipping domains. The work included introducing reservation lifecycle management in the sales module, adding Kamon monitoring for observability, and establishing comprehensive test coverage for the new saga behaviors.

Features

Add dedicated view-update applications for Sales and Shipping subsystems

New entry-point applications (SalesViewUpdateApp and ShippingViewUpdateApp) have been added to the read-back modules for the Sales and Shipping subsystems. These applications initialize the Akka system and start the respective view-update services (SalesViewUpdateService and ShippingViewUpdateService) backed by a SQL view store configured with the Postgres JDBC profile, enabling the read-side projections to start as standalone bootable units.

sales/read-back/src/main/scala/ecommerce/sales/app, shipping/read-back/src/main/scala/ecommerce/shipping/app · high confidence

Add reservation read-model persistence and projection

The sales read-back view now persists reservation state to a relational database using Slick. A new \ReservationDao\ manages the \reservations\ table, storing reservation ID, client ID, status, and creation date, while a \ReservationProjection\ listens for domain events (created, confirmed, canceled, closed) to keep the read-model in sync.

sales/read-back/src/main/scala/ecommerce/sales/view · high confidence

Added tutorial landing page for Reactive DDD with Akka

A new tutorial index page has been added to the documentation, providing an overview of the Reactive DDD with Akka sample e-commerce system. This page details the system's architecture, including its use of Akka, Akka HTTP, Akka Persistence, and Event Store, and outlines the subsystems (Sales/Reservation, Invoicing, Shipping, Headquarters) and the ordering process. It also describes the application structure (write/read back/front) and provides links to guides for running, testing, and monitoring the system.

tutorial · high confidence

Enable Kamon monitoring for sales-write-back service

The sales-write-back service now includes a new monitoring configuration and startup runner. A reference configuration file defines Kamon metrics with a 3-second tick interval and StatsD reporting to localhost:8125, while a new Scala runner ensures Kamon is properly initialized and shut down with the application lifecycle.

monitoring · high confidence

Initial configuration for read-back service logging and event store connectivity

This change introduces the initial configuration files for the read-back service, establishing how it connects to the event store and manages logs. The \eventstore.conf\ file defines the connection details for the event store, including host, port, and credentials, with support for environment variable overrides. The \application.conf\ file configures Akka logging to use SLF4J and sets the default log level to DEBUG, while \logback.xml\ defines the console logging pattern and sets the root log level to DEBUG (configurable via the \ECOMMERCE\_LOG\_LEVEL\ environment variable), with specific loggers for Slick and event store TCP set to INFO.

shipping/read-back/src/main/resources · high confidence

Initial configuration for sales-write-back service

The sales-write-back service is now configured with a new set of resource files that define its runtime behavior. It binds to host and port 9101 (overridable via environment variables) and joins an Akka cluster using configurable seed nodes. The service connects to an EventStore database at 127.0.0.1:1113 with default credentials (also overridable via environment variables) and uses EventStore for both journal and snapshot persistence. Logging is set up via Logback with a configurable root level (defaulting to DEBUG) and specific INFO-level logging for cluster, serialization, and EventStore TCP components. Monitoring is enabled via Kamon with specific filters for Akka actors related to sales systems, eventstore persistence, and saga managers. The service exposes Akka Cluster HTTP Management on port 20000.

headquarters/write-back/src/main/resources, sales/write-back/src/main/resources, sales/write-front/src/main/resources · high confidence

Initial configuration for the invoicing write-back subsystem

This change introduces the runtime configuration files for the new invoicing write-back service. It defines the Akka cluster settings, including binding to port 9201, joining the cluster via seed nodes, and enabling HTTP management on port 20001. It also sets up logging via Logback with configurable levels (defaulting to INFO) and configures Kamon metrics to monitor specific invoicing-related actors and event store interactions. The eventstore configuration has been moved from the sales-write-back module to this new location.

invoicing/write-back/src/main/resources · high confidence

Initial project setup with CI, documentation, and build configuration

This change introduces the foundational structure for the ddd-leaven-akka-v2 sample e-commerce application. It adds a Travis CI configuration (.travis.yml) to automate testing with Scala 2.12.6 and Oracle JDK 8, including a local publish step for the monitoring module. The project now includes a MIT LICENSE file, a comprehensive README.md detailing the CQRS/DDD architecture, subsystems (Sales, Invoicing, Shipping, Headquarters), and running instructions, as well as activator.properties for project metadata. Additionally, a restart script for e2e-tests and updated .gitignore rules (excluding .vagrant and /journal) are added to support the development workflow.

(repo-wide) · high confidence

Initialize sales write-back application with cluster-aware startup and monitoring

The sales write-back subsystem now includes its application entry point, which automatically joins the Akka cluster and starts the Reservation aggregate root and command reception logic upon member readiness. This initialization integrates with the updated akka-ddd framework, enabling aggregate root monitoring and logging for the reservation process.

sales/write-back/src/main/scala/ecommerce/sales/app · high confidence

Initialize shipping backend application entry point and configuration

The shipping write-back service now includes its main application entry point and configuration traits. The \ShippingBackendApp\ handles cluster startup, automatically registering the Shipment aggregate root and the Department command receptor once the cluster member is up. The \ShippingBackendConfiguration\ trait defines the actor factories for these components, ensuring the Shipment aggregate uses the new \AggregateRootLogger\ for event logging and that command receptors are backed by \EventstoreSubscriber\ actors.

shipping/write-back/src/main/scala/ecommerce/shipping/app · high confidence

Introduce Docker-based wrk stress-test environment with reverse proxy

Adds a new stress-testing infrastructure for the ecommerce system, containerizing the wrk benchmarking tool via a dedicated Dockerfile and providing shell scripts (start-test-bench.sh, stress.sh, warmup.sh) to orchestrate tests. The setup includes an nginx reverse proxy configuration that routes sales, invoicing, and shipping traffic to specific backend ports, and Lua-based wrk scripts that generate realistic request payloads (including UUIDs and JSON bodies) for load testing.

commons/stress-test · high confidence

Introduce HTTP command handler for the invoicing subsystem

The invoicing write-front now exposes an HTTP endpoint to receive commands. A new HttpService actor binds to a configurable interface and port (defined in the 'http-service' config section) and routes requests under the path '/ecommerce/invoicing' to the invoicing command handler. The application entry point starts a supervisor that manages this HTTP service and terminates the system if the service fails.

invoicing/write-front/src/main/scala · high confidence

Introduce HTTP read-front service for shipping data

A new HTTP service has been added to the shipping read-front module, exposing shipping shipment view data via an Akka HTTP endpoint. The service binds to a configurable interface and port, listens at the path prefix 'ecommerce/shipping', and serves requests by querying a PostgreSQL-backed SQL view store. Configuration for the HTTP interface, port, and ask timeout is now managed through the application config under 'app.http-service'.

shipping/read-front/src/main/scala/ecommerce/shipping · high confidence

Introduce Headquarters service with cluster management and external office integration

This change introduces the Headquarters application module, providing a new service for managing the Ordering Process via the OrderProcessManager. It integrates Akka Cluster HTTP Management for operational visibility and configures the system to connect to external offices (Invoicing, Reservation, Shipping) using command queues. The implementation also adds a ClusterView actor to track cluster member status and utilizes the updated akka-ddd framework features, including the OfficeRegistry and AggregateRootLogger.

headquarters/write-back/src/main/scala/ecommerce/headquarters/app · high confidence

Introduce Invoicing subsystem backend application and configuration

The invoicing subsystem now includes a dedicated backend application entry point and configuration trait. The new InvoicingBackendApp initializes the Akka cluster, registers the Invoice aggregate root, and sets up command reception for the Department. The accompanying InvoicingBackendConfiguration defines the actor factory for Invoice aggregates, enabling event logging via AggregateRootLogger, and configures the command receptor to subscribe to the event store.

invoicing/write-back/src/main/scala/ecommerce/invoicing/app · high confidence

Introduce invoicing domain contracts and command routing

Added the core domain contracts for the invoicing subsystem, defining the command and event models for invoice lifecycle management. The new invoice.scala file specifies commands for creating, receiving payment for, and canceling invoices, alongside corresponding events such as InvoiceCreated, OrderBilled, OrderBillingFailed, and PaymentExpired. The package.scala file establishes the invoicing department identifier and configures the command routing to use a remote office queue named 'Invoice', ensuring commands are dispatched to the appropriate external office for processing.

invoicing/contracts/src/main/scala · high confidence

Introduce reactive read-model for shipping status

The shipping subsystem now maintains a dedicated read-optimized view of shipment data, enabling efficient queries for shipment status by ID or order ID. This is implemented via a new Slick-based DAO layer that persists \ShipmentView\ records (containing ID, order ID, and status) into a \shippings\ database table, alongside a projection that automatically updates this view whenever a \ShipmentCreated\ event occurs.

shipping/read-back/src/main/scala/ecommerce/shipping/view · high confidence

Introduce sales read-front service with reservation view endpoints

The sales read-front module is introduced, providing an HTTP service (defaulting to port 9110) that exposes reservation data via REST endpoints. Users can retrieve all reservations through GET /reservation/all or fetch a specific reservation by ID via GET /reservation/{id}, which returns a 404 status if the reservation is not found. The service is configured via application.conf and logback.xml, supporting environment variable overrides for host and port, and integrates with a SQL view store backed by Slick and PostgreSQL.

sales/read-front · high confidence

Introduction of Invoice aggregate with payment and cancellation handling

The system now includes an Invoice aggregate that manages the lifecycle of an invoice from creation to payment or cancellation. Users can create an invoice with order and customer details, receive payments which update the paid amount, or cancel the invoice, which triggers a billing failure event. This aggregate is built on the akka-ddd framework and integrates with the local office context.

invoicing/write-back/src/main/scala/ecommerce/invoicing · high confidence

Introduction of Shipment aggregate with initial state handling

A new Shipment aggregate has been added to the shipping write-back module, defining the core domain model for shipment lifecycle management. It implements an aggregate root with two states: Uninitialized and Active. The Uninitialized state handles the CreateShipment command, validating that the shipment does not already exist before emitting a ShipmentCreated event, which transitions the aggregate to the Active state. The Active state currently has no further actions defined. The aggregate is configured with a LocalOfficeId derived from a ShippingOfficeId, integrating it into the existing office-based architecture.

shipping/write-back/src/main/scala/ecommerce/shipping · high confidence

Introduction of Vagrant-based end-to-end test environment

Added Vagrant configuration files and shell scripts to virtualize the entire system for end-to-end testing. The setup provisions an Ubuntu VM running Docker, which orchestrates containers for the EventStore, a PostgreSQL view store, and the application subsystems (headquarters, sales, invoicing, shipping). This enables developers to spin up, restart, or destroy the complete distributed environment using simple commands like \vagrant up\ or \./destroy-all\.

e2e-tests · high confidence

Introduction of reservation lifecycle management

A new ReservationAggregateRoot has been added to the sales write-back module, defining the core state machine for managing product reservations. This component enables users to create reservations, reserve specific products (updating quantities or adding new items), confirm the reservation to calculate the total amount, and subsequently cancel or close the reservation. The aggregate handles transitions between uninitialized, open, confirmed, canceled, and closed states, ensuring that once a reservation is canceled or closed, no further modifications are allowed.

sales/write-back/src/main/scala/ecommerce/sales · high confidence

New Akka microkernel boot entry point

A new Main.scala entry point has been added to the commons module to bootstrap the Akka system. This component loads configuration, creates a classloader for deployable JARs, and executes startup/shutdown hooks for specified boot classes (including a monitoring runner). This provides the foundational startup logic for the application, replacing or supplementing previous manual initialization methods.

commons/src · high confidence

New Order Process Manager saga for end-to-end order lifecycle

Introduces the OrderProcessManager, a new saga that orchestrates the complete order lifecycle from reservation confirmation through payment, billing, and shipment. The process automatically creates an invoice upon reservation confirmation, handles payment expiration or billing failures by cancelling invoices or reservations, and transitions to delivery by closing the reservation and creating a shipment once billing succeeds. This centralizes the coordination between sales, invoicing, and shipping domains within the headquarters write-back service.

headquarters/write-back/src/main/scala/ecommerce/headquarters/processes · high confidence

New Shipment Read API endpoints and application startup logic

The shipping read-front now exposes HTTP endpoints to retrieve shipment data, including a list of all shipments, a specific shipment by ID, and shipments linked to a specific order ID. This functionality is implemented in the new ShipmentViewEndpoint class, which queries the underlying database via the ShipmentDao and SqlViewStore, returning appropriate HTTP responses including 404 Not Found for missing resources. The application entry point, ShippingReadFrontApp, has been updated to initialize the HTTP service using the configured interface, port, and timeout settings.

shipping/read-front/src/main/scala/ecommerce/shipping/app · high confidence

New ShippingViewUpdateService for reactive view store

A new ShippingViewUpdateService has been introduced in the shipping read-back module to manage reactive view updates using a Slick-based SQL view store. This service initializes the 'shipping-shipments' view by configuring a ShipmentProjection and ensures the underlying database schema is created upon startup, replacing previous initialization logic with a dedicated service class that extends SqlViewUpdateService.

shipping/read-back/src/main/scala/ecommerce/shipping · high confidence

New local deployment scripts and supervisor configurations for running services

This change introduces a set of shell scripts and configuration files to simplify running the application locally. The \commons/run-scripts\ directory now contains an \environment\ file that sets the Akka cluster seed and host, along with individual launch scripts for each service component (headquarters, invoicing, sales, and shipping) and a \run-all\ script to start them all in the background. A \stop-all\ script is also provided to terminate running Akka nodes. Additionally, \commons/supervisord-configs\ adds \.conf\ files for the invoicing, sales, and shipping modules, defining how each service should be managed by supervisord, including JVM memory settings and class paths.

commons/run-scripts · high confidence

Sales reservation view update service initialization

The sales read-back module now includes a dedicated service for updating the sales reservations view. This service configures the projection for sales reservations and ensures the underlying database schema is created when the view update process starts, preventing errors during initialization.

sales/read-back/src/main/scala/ecommerce/sales · high confidence

Removals

Removal of legacy Akka HTTP sales-write-front service

The legacy HTTP service implementation for the sales-write-front module has been removed. This change deletes the \BaseApp\ entry point and the \HttpService\ actor, which previously exposed an Akka HTTP endpoint at \/ecommerce/sales\ to handle sales commands via JSON marshalling. Users of this specific front-end service will no longer have access to this HTTP interface, indicating a shift away from this Akka-based implementation.

sales-write-front/src/main/scala · high confidence

Removal of legacy sales reservation module and serialization configuration

The sales-write-back module has removed the core Reservation aggregate implementation, the EventStoreSerializer, and the associated Akka serialization configuration. This deletes the code responsible for handling reservation creation, product reservation, confirmation, and closure, along with the specific JSON serialization bindings for reservation-related events. The application entry point (SalesBackendApp) that wired these components into the Akka cluster is also removed, effectively eliminating this specific sales write-back capability from the system.

sales-write-back/src/main · high confidence

Behavioural changes

Added event tagging configuration for the Order process

A new configuration file (tags.conf) has been added to define the 'order' tag, associating it with specific ecommerce events including ReservationConfirmed, OrderBilled, OrderBillingFailed, and PaymentExpired. This enables the system to categorize and process these specific order-related events under a unified tag.

headquarters/event-tagging · high confidence

Added helper scripts to enable standard ES projections

New shell scripts in the commons directory (\create-projection\ and \create-projections\) were added to simplify the deployment of Event Store continuous projections. The \create-projection\ script provides a reusable interface for creating individual projections via HTTP, while \create-projections\ uses this helper to automatically enable standard projections such as \clock\_proj\, \current\_deadlines\_proj\, and \tags\_proj\ by pointing to their respective JavaScript definitions in the headquarters module.

commons · high confidence

Build infrastructure modernized with SBT 1.1.6 and modularized plugins

The build system has been upgraded from SBT 0.13.7 to 1.1.6, requiring a migration of the build definition. The project structure has been refactored into modular SBT plugins (ApplicationPlugin, HttpServerPlugin, MonitoringPlugin, etc.) to better organize settings for different subsystems. Dependency management has been updated to use Akka 2.5.13, Akka-DDD 1.7.9-SNAPSHOT, and Kamon 0.6.6, while replacing older plugins like sbt-multi-jvm with sbt-coursier for dependency resolution. Docker packaging is now handled by sbt-native-packager 1.2.2, and end-to-end testing is supported via a new Vagrant integration.

project · high confidence

Configurable logging and HTTP service settings for the read-front service

The read-front service now includes explicit configuration for its HTTP interface (defaulting to 0.0.0.0:9310 with environment variable overrides) and logging behavior. Logging is set to DEBUG by default but can be overridden at runtime via the ECOMMERCE\_LOG\_LEVEL environment variable, with specific adjustments to reduce noise from Slick database operations to INFO level.

shipping/read-front/src/main/resources · high confidence

Configurable logging and event store connection for read-back service

The read-back service now includes dedicated configuration files for Akka logging and Event Store connectivity. Logging is now driven by Logback with a pattern that includes Akka timestamps and source information, and the root log level is configurable at runtime via the ECOMMERCE\_LOG\_LEVEL environment variable (defaulting to DEBUG). Additionally, the service connects to an Event Store instance (defaulting to localhost:1113) with credentials that can be overridden by environment variables (ES\_HOST, ES\_LOGIN, ES\_PASSWORD).

sales/read-back/src/main/resources · high confidence

Configure serialization hints and suppress Java serializer warnings

The sales and shipping contract modules now include reference configuration files that register their respective serialization hints providers (SalesSerializationHintsProvider and ShippingSerializationHintsProvider) and disable the Akka warning about Java serializer usage. This ensures that serialization hints are explicitly applied for these domains and prevents runtime warnings related to Java serialization.

sales/contracts/src/main/resources, shipping/contracts/src/main/resources · high confidence

Disable Java serializer usage warnings

The system no longer logs warnings when Java serialization is used for actor messages. This change suppresses the \akka.actor.warn-about-java-serializer-usage\ warning in the reference configuration, reducing log noise for existing serialization patterns.

invoicing/contracts/src/main/resources · high confidence

Invoicing write-front service configuration and logging updates

The application now uses a dedicated logback configuration that suppresses verbose Akka remoting and cluster heartbeat logs while allowing the root log level to be configured at runtime via the ECOMMERCE\_LOG\_LEVEL environment variable. The service's HTTP interface has moved from 127.0.0.1:9100 to 0.0.0.0:9200, and the backend contact point has been updated to point to the 'ecommerce' system on port 9201. Additionally, the ask-timeout for service calls was increased from 3 to 10 seconds, and Akka cluster extensions were updated to use the ClusterClientReceptionist.

invoicing/write-front/src/main/resources · high confidence

Migrate sales write-front to Akka HTTP 1.0 and Akka 2.4.2-RC2

The sales write-front service has been updated to use Akka HTTP 1.0 and Akka 2.4.2-RC2, requiring adjustments to the HTTP service implementation and startup logic. The application now uses the Akka \Bootable\ interface for initialization instead of the previous \BaseApp\ pattern, and the HTTP service explicitly binds to a configurable interface and port while exposing a default health check route. Additionally, the internal configuration trait was refactored to remove the \GlobalOfficeClientSupport\ dependency and renamed the \askTimeout\ setting to \timeout\ to align with the updated Akka DDD library version 1.7.0.

sales/write-front/src/main/scala · high confidence

Removal of sales-contracts serialization configuration

The \package.scala\ file in the \sales-contracts\ module, which previously defined JSON serialization settings (including stream names and type hints for reservation commands, events, and value objects), has been deleted. This change removes the local serialization configuration for the sales contracts module, likely shifting this responsibility to a different part of the system or a shared configuration layer.

sales-contracts · medium confidence

Sales domain model refactoring and serialization updates

The sales contracts module has been reorganized and its domain model updated to align with framework changes. The package structure was moved from \sales-contracts\ to \sales/contracts\, introducing a new \SalesSerializationHintsProvider\ that uses \EnumNameSerializer\ for \ProductType\ and defines a \ReservationOfficeId\ for external command queues. The \reservation.scala\ file now uses a specific \ReservationId\ type instead of the generic \EntityId\, renames \clientId\ to \customerId\ in commands and events, introduces a \CancelReservation\ command and corresponding \ReservationCanceled\ event, and adds a \Canceled\ status to \ReservationStatus\. Additionally, the \Product\ model was simplified by removing the \AggregateSnapshotId\ wrapper in favor of direct \id\ and \version\ fields, and \Money\ now has a default zero-argument constructor.

sales/contracts/src/main/scala · high confidence

Shipping contracts: new serialization, ID types, and domain model

The shipping contracts module now defines its core domain model, including the \ShippingStatus\ enumeration (Waiting, Sent, Delivered) and command/event types like \CreateShipment\, \ShipmentCreated\, and \GoodsDelivered\. It introduces \ShipmentId\ as an \AggregateId\ and configures \ShippingOfficeId\ for remote office communication. Serialization is handled by \ShippingSerializationHintsProvider\, which uses \EnumNameSerializer\ for \ShippingStatus\ instead of the previous \EnumSerializer\, ensuring consistent JSON representation of status values.

shipping/contracts/src/main/scala · high confidence

Shipping write-back service configuration and logging setup

The shipping/write-back module now includes dedicated configuration for connecting to an Event Store (with environment-variable overrides for host and credentials) and integrates Akka Cluster HTTP Management on port 20002. The service's default HTTP port changed from 2551 to 9301, and it now auto-joins the cluster using the configured seed node. Logging is standardized via a new logback.xml that writes to the console with Akka-specific formatting, and the root log level is controlled by the ECOMMERCE\_LOG\_LEVEL environment variable (defaulting to INFO). The application switched from the ClusterReceptionist to the ClusterClientReceptionist extension, and removed the now-unnecessary serialization include.

shipping/write-back/src/main/resources · high confidence

Test coverage

Added e2e test infrastructure with REST-assured integration; Added end-to-end system test for the ecommerce workflow; Added test configuration files for Akka persistence; Added test configuration for H2 database and logging; Added tests for Order Process Manager behavior; Added tests for ReservationProjection; Added tests for ShipmentProjection; Added tests for ShipmentViewEndpoint; Removed redundant test support configuration files; Updated ReservationSpec tests to align with akka-ddd 1.7.0 API changes.

Dependencies

Migrate to Scala 2.12 and restructure project into subsystem modules

The build system has been upgraded from Scala 2.11.4 to 2.12.6, requiring compatibility updates across all modules. The project structure has been refactored from a flat list of subprojects (e.g., \sales-contracts\, \sales-write-back\) into a hierarchical model organized by business subsystems (\sales\, \invoicing\, \shipping\, \headquarters\, \commons\, \monitoring\, \e2e-tests\). This change introduces new \build.sbt\ files for each subsystem, consolidating dependencies like Akka-DDD, Kamon, and Docker packaging settings, and adds sbt command aliases (\redeploy\, \redeployQuick\) to streamline development and deployment workflows.

(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 46 → 42 (-3.8)
  • Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 99 (-0.8)
  • Architecture 82 → 98 (+16.9)
  • Maturity 48 → 51 (+3.0)
  • Readiness 46 → 34 (-11.7)
  • Security 94 → 97 (+3.0)
  • Domain Modelling 84 → 72 (-12.1)
  • Event Sourcing 43 → 43 (+0.0)
  • Accessibility 40 → 40 (+0.0)

Resolved (25)

  • Boundary-crossing change coupling: Deps.scala ↔ HttpService.scala (project/Deps.scala)
  • Boundary-crossing change coupling: Deps.scala ↔ ReservationViewEndpoint.scala (project/Deps.scala)
  • Boundary-crossing change coupling: HeadquartersConfiguration.scala ↔ InvoicingBackendConfiguration.scala (headquarters/write-back/src/main/scala/ecommerce/headquarters/app/HeadquartersConfiguration.scala)
  • Boundary-crossing change coupling: HeadquartersConfiguration.scala ↔ SalesBackendConfiguration.scala (headquarters/write-back/src/main/scala/ecommerce/headquarters/app/HeadquartersConfiguration.scala)
  • Boundary-crossing change coupling: HeadquartersConfiguration.scala ↔ ShippingBackendConfiguration.scala (headquarters/write-back/src/main/scala/ecommerce/headquarters/app/HeadquartersConfiguration.scala)
  • Boundary-crossing change coupling: HttpService.scala ↔ ShipmentViewEndpoint.scala (sales/read-front/src/main/scala/ecommerce/sales/HttpService.scala)
  • Boundary-crossing change coupling: InvoicingBackendConfiguration.scala ↔ ShippingBackendConfiguration.scala (invoicing/write-back/src/main/scala/ecommerce/invoicing/app/InvoicingBackendConfiguration.scala)
  • Boundary-crossing change coupling: SalesBackendConfiguration.scala ↔ ShippingBackendConfiguration.scala (sales/write-back/src/main/scala/ecommerce/sales/app/SalesBackendConfiguration.scala)
  • Boundary-crossing change coupling: SalesViewUpdateService.scala ↔ ShippingViewUpdateService.scala (sales/read-back/src/main/scala/ecommerce/sales/SalesViewUpdateService.scala)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • High IaC: DS-0002 (commons/stress-test/Dockerfile)
  • High IaC: DS-0029 (commons/stress-test/Dockerfile)
  • Low IaC: DS-0026 (commons/stress-test/Dockerfile)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • …and 5 more

New (11)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (16–17 lines × 2) (sales/read-front/src/main/scala/ecommerce/sales/app/ReservationViewEndpoint.scala)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • Low: security finding (details withheld)
  • TodoComment (headquarters/write-back/src/main/scala/ecommerce/headquarters/app/HeadquartersConfiguration.scala)
  • TodoComment (sales/read-back/src/main/scala/ecommerce/sales/view/ReservationProjection.scala)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

pawelkaczor/ddd-leaven-akka-v2 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 8dca13682a22e2bfdbd025df958ccb3d1fec5d3e — 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.