Skip to content
CAI
Software that uses CAICheck a score

Adaptech/nota

42.4

Weak · 21 September 2026

4k

lines of production code

JavaScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a web-based platform for managing organizations, voters, and referendums, featuring a React frontend and a RESTful API backend. It supports the full lifecycle of referendums, including registration, voting, and organization management, while explicitly excluding monetary transactions and election administration features. The architecture relies on modern JavaScript tooling and state management libraries to deliver a responsive user interface and robust API endpoints.

Features

Initial web application structure and configuration

The web directory is initialized with a complete React application structure, including Webpack configuration for development and production builds, Babel presets, ESLint rules, and a Node.js server setup. The application features a landing page, a referendums page displaying referendum cards, and a register page, all managed by React Router. State management is handled via MobX stores for UI and data, with components like the Header, Footer, and ReferendumCard. The build process compiles JSX and CSS, and the server serves static assets and handles hot reloading in development.

web · high confidence

Introduce API for managing organizations, voters, and referendums

The API now exposes endpoints for creating and managing organizations, registering and authenticating voters, and creating, modifying, opening/closing polls, and casting votes in referendums. This includes new controllers (OrganizationController, ReferendumController, VoterController) that map HTTP requests to domain commands (CreateOrganization, RegisterVoter, CreateReferendum, CastVote, etc.) and domain aggregates (Organization, Referendum, Voter). The change also adds supporting infrastructure such as a CommandActionHelper for standardizing command execution, a Logger, and event classes for the domain.

api · high confidence

Removals

Removed legacy services and logging utilities

The legacy service implementations—ReadRepository, commandHandler, and the Logger utility—have been removed from the codebase. This eliminates the previous in-memory read store, the event-sourcing command handler, and the custom logging class, likely as part of a broader architectural shift to a different data access or event-processing strategy.

src/services · high confidence

Behavioural changes

Moved API type definitions to api/ directory

The TypeScript type definition files and their associated typings.json configuration files for the body-parser, uuid, and validator modules have been relocated from the root typings directory to the api/ subdirectory. This change reorganizes the project's type declaration structure, grouping these specific API-related types within the api folder.

api/typings/modules/body-parser, api/typings/modules/uuid, api/typings/modules/validator · high confidence

Removal of ElectionAdmin read model

The read model for managing election administrators has been removed from the application. This eliminates the ability to track and store election admin records via the 'ElectionAdminCreated' and 'ElectionAdminUpdated' events, effectively removing the 'electionadmin' feature from the system.

src/readModels · high confidence

Removal of MonetaryAmount domain class

The MonetaryAmount class, which previously handled currency and value validation for USD and CAD, has been removed from the domain layer. Users will no longer be able to create or validate monetary amounts using this specific domain model.

src/domain · high confidence

Removal of legacy application entry point

The main application entry point (src/app.js), which previously handled Express server setup, middleware registration, and dynamic loading of controllers and events, has been removed from the codebase.

src · high confidence

Dependencies

Upgrade web and API dependencies

The web application's package.json was added with a new set of dependencies including React 15.4.1, MobX, and various build tools, while the API's package.json was updated to include new libraries such as LevelDB and Morgan, and removed older Babel presets in favor of specific transform plugins.

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

Lenses

  • Code Health 62 → 60 (-1.3)
  • Architecture 100 → 74 (-25.9)
  • Maturity 49 → 49 (+0.0)
  • Readiness 20 → 23 (+3.0)
  • Security 99 → 99 (+0.0)
  • Accessibility 73 → 73 (+0.0)

Resolved (8)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Medium IaC: CKV_DOCKER_2 (api/Dockerfile.development)
  • Medium IaC: CKV_DOCKER_2 (web/Dockerfile.development)
  • No exposed public API
  • Scanner failed to run — not a clean result
  • Test reliability not included
  • dormant codebase — no living knowledge left to concentrate

New (9)

  • CommandActionHelper (cognitive 18) (api/src/infra/CommandActionHelper.js)
  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no committed lockfile, so no resolved version to grade)
  • Documentation: no architecture or design documentation (README.md)
  • Floating npm dependency: uuid
  • Medium IaC: WD-DOCKER-0003 (api/Dockerfile.development)
  • Medium IaC: WD-DOCKER-0003 (web/Dockerfile.development)
  • No ADRs found
  • Scanner failed to run — not a clean result
  • Scanner failed to run — not a clean result

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

Survey your own repository

Adaptech/nota 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 3039e4b0e3c366c7a0d1ce05a88a7aa971c3e155 — 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-fa71c66cabd8.