Skip to content
CAI
Software that uses CAICheck a score

akoufa/nodejs-app-architecture

55.6

Adequate · 21 September 2026

277

lines of production code

TypeScript

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Add HTTP server and user route implementation

The application now includes an Express-based HTTP server that exposes a /users endpoint. The server is configured with JSON body parsing and registers a user route that supports GET and POST operations via a provided UsersService. An error handler middleware is included to catch and return 500 status codes for unhandled errors. Additionally, a utility function is added to wrap async route handlers for error propagation, and a test file is introduced to verify the user route's behavior.

src/http · high confidence

Add signal handler for graceful shutdown

A new \src/signals/index.ts\ file has been added to the application. This module exports an \init\ function that registers a handler for process termination signals. When triggered, it executes a provided close function and then exits the process with an appropriate status code (0 for success, 1 for error), ensuring the application shuts down gracefully.

src/signals · high confidence

Introduce user domain and data layer

Added new files to implement the user feature, including the domain model (src/domain/users/user.ts), the repository interface (src/domain/users/userRepository.ts), and the service layer (src/domain/users/usersService.ts). The data layer was also added with a Mongoose-based entity (src/data/database/entities/user.ts), a database connection manager (src/data/database/index.ts), and a concrete repository implementation (src/data/users/userRepository.ts) that maps database documents to domain objects.

src/data, src/domain · high confidence

Behavioural changes

Centralized configuration management

The application now uses a centralized configuration module that loads environment variables for the database connection string and the server port, consolidating these settings into a single exportable object.

src/configuration · high confidence

Migrate project to TypeScript and replace Sequelize with Mongoose

The application has been migrated to TypeScript, introducing a new logger implementation in src/libs/logger/index.ts and a refactored server entry point in src/server.ts. The server setup now uses Mongoose for database connections and repositories, replacing the previous Sequelize-based data access layer. This change affects how the application initializes, manages database connections, and handles graceful shutdowns.

src · medium confidence

Dependencies

Initial project setup with Node.js, TypeScript, and MongoDB

The project was initialized as a Node.js boilerplate using TypeScript, Express, and Mongoose for MongoDB integration. Development tooling including ESLint, Prettier, Jest, and Husky pre-commit hooks were added to enforce code quality and testing standards.

(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 55 → 56 (+0.4)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 98 (-1.8)
  • Architecture 69 → 69 (+0.0)
  • Maturity 63 → 67 (+3.7)
  • Readiness 36 → 37 (+0.8)
  • Security 80 → 82 (+2.4)

Resolved (55)

  • 'Architecture Overview' describes each layer, but the outline also names 'Quick start', 'Use Docker:', 'Use the npm scripts:', 'Build app', 'Packages and Tools', and 'License'; none of these appear in the visible portion. (README.md)
  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 35 more

New (77)

  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile is in a format this engine cannot resolve)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 57 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

akoufa/nodejs-app-architecture 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 24d996864d9037de9c3c6a256d6f7f159400cd50 — 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.