Skip to content
CAI
Software that uses CAICheck a score

danielbdias/domain-driven-design-in-nodejs

43.0

Weak · 21 September 2026

640

lines of production code

JavaScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Added TraceRoute use case for calculating routes between addresses

Users can now calculate a route between two addresses using a specific GPS type. This new use case retrieves origin and destination addresses and a GPS configuration, then delegates the route calculation to the GPS repository.

Domain/UseCases/TraceRoute · high confidence

Behavioural changes

Migrate from Sequelize ORM to raw SQL queries and introduce new GPS and Route capabilities

The infrastructure layer has been refactored to replace the Sequelize ORM with direct PostgreSQL client interactions, removing the dependency on \speck-sequelize-repository\ and associated model/mapper files. This change introduces new capabilities for managing GPS data and calculating routes. Specifically, the system now supports saving and retrieving GPS entities, as well as tracing routes between addresses using Google Maps or a mock implementation. The GraphQL API has been updated to expose new \gps\, \traceRoute\, and \saveGPS\ operations, while the underlying data access layer now uses raw SQL queries for all database operations.

Infra · high confidence

Removal of legacy address use-case implementations

The specific use-case modules for managing addresses have been removed from the domain layer. Specifically, the \DeleteAddress\ and \SaveAddress\ JavaScript files, which previously delegated to generic \DeleteEntity\ and \SaveEntity\ logic, are no longer present. This indicates a refactoring or consolidation of address-related operations, likely moving away from the previous generic CRUD use-case pattern.

Domain/UseCases/DeleteAddress, Domain/UseCases/SaveAddress · medium confidence

Removed GetAddresses use case

The GetAddresses use case, which previously retrieved address entities via the GetEntities service, has been removed from the domain layer. This eliminates the specific address retrieval flow, meaning the application no longer supports fetching address data through this dedicated use case.

Domain/UseCases/GetAddresses · high confidence

Removed legacy domain logic and simplified entity schemas

The domain layer has been refactored to remove obsolete or unused code. The \DeleteEntity\ and \GetEntities\ use cases and their tests were removed entirely. The \GPS\ entity was updated to integrate with \TrollMapsClient\ and \GoogleMapsClient\ for route calculation, replacing the previous placeholder logic. Additionally, the \Route\ value object was updated to use \origin\ and \destination\ instead of \start\ and \end\, and all associated documentation fields (\TYPE\_DOC\, \FIELDDocs\) were removed from \Address\, \GPS\, \Route\, and \RouteInstruction\ entities.

Domain · high confidence

Restructured address and GPS use cases into dedicated folders

The address and GPS management capabilities have been reorganized into specific use-case files. For addresses, new files were added to handle creating/saving, retrieving, and deleting addresses. For GPS data, the save logic was moved from a generic 'SaveEntity' service into a dedicated 'SaveGPS' use case, while a new 'GetGPS' file was added to handle retrieving GPS records. These changes consolidate the logic for managing address and GPS data into clearly named, single-purpose files.

Domain/UseCases/ManageAddress, Domain/UseCases/ManageGPS · high confidence

Updated README with new use cases and GMaps integration

The README has been translated to English and updated to reflect new application capabilities. The documentation now includes instructions for saving GPS data and tracing routes using both 'troll' and 'gmaps' types, indicating the addition of a GMaps client and related functionality. The previous example of retrieving tweets has been replaced with new GraphQL mutations for address and GPS data.

(repo-wide) · low confidence

Dependencies

Updated project dependencies and structure

The project's root package.json was updated to include new dependencies for Google Maps (@google/maps), environment variable management (dotenv), and string sanitization (striptags), while removing the speck-sequelize-repository package and its associated MySQL dependencies. Additionally, several internal packages were reorganized: the logger was renamed and moved to the Infra layer, and multiple use-case packages (DeleteAddress, GetAddresses, SaveAddress, GetGPS, SaveGPS) were renamed and relocated to the Domain/UseCases directory structure.

(dependencies) · medium 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 45 → 43 (-1.8)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 60 → 65 (+5.1)
  • Architecture 64 → 64 (+0.3)
  • Maturity 57 → 54 (-2.8)
  • Readiness 25 → 26 (+1.8)
  • Security 79 → 60 (-19.7)

Resolved (60)

  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • …and 40 more

New (101)

  • Critical CVE: [CVE redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • End-of-life runtime: Node.js 12
  • High CVE: [GHSA redacted] (yarn.lock)
  • …and 81 more

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

Survey your own repository

danielbdias/domain-driven-design-in-nodejs 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 940491b9b3aa19f5d7894c3219329f3ff17f5522 — 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.