Skip to content
CAI
Software that uses CAICheck a score

archimedes-projects/archimedes-js

59.1

Adequate · 21 September 2026

2.7k

lines of production code

TypeScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a modular architecture framework that implements the Command/Query pattern with support for asynchronous execution, caching, and notifications. It provides a runner to orchestrate use cases through a chain of links, allowing for cache invalidation and result subscriptions. The repository also includes example applications for Angular and React to demonstrate integration, alongside utility packages for HTTP clients and UI components.

How it got here

2021 — Architecture modernization and API expansion

14 changes.

This period focused on modernizing the project's build system, refactoring the core architecture to support asynchronous execution and customizable caching, and expanding the public API with subscription support. It also involved cleaning up legacy examples and updating dependencies to align with current web standards.

2022 — Example applications for Angular and React

4 changes.

This period focused on expanding the project's demonstration capabilities by introducing complete example applications for Angular and React. These examples, featuring a full Todo list implementation, showcase the framework's support for modern rendering, dependency injection, and command/query patterns in different environments.

Features

Add Angular example with complete todo feature

The \examples/with-angular\ directory now includes a fully functional Angular application demonstrating a todo list feature. This includes domain models (Todo, NewTodo), a repository interface with HTTP and local storage implementations, application commands and queries for creating, retrieving, and completing todos, and UI pages for creating and listing todos. The example showcases the framework's command/query pattern and dependency injection.

examples/with-angular/src/app/features/todo · high confidence

Add new React example with modern rendering and dependency injection

A new 'with-react' example has been added to the examples directory, featuring a React application that uses the modern ReactDOM.createRoot API for rendering. The example includes a complete feature set with routing, a dependency injection container using tsyringe, and performance reporting via web-vitals. The entry point (index.tsx) initializes the app using React 18's concurrent rendering API, and the component tree is wrapped in StrictMode and BrowserRouter. Additionally, the useDi hook has been updated to use React's useMemo for stable dependency injection resolution.

examples/with-react · high confidence

Add subscription support and cache invalidation options to UseCase

The UseCase class now supports subscribing to execution results via a new \subscribe\/\unsubscribe\ API, allowing external listeners to react to each execution with the result, parameters, and execution options. Additionally, the \ExecutionOptions\ interface has been extended with an \invalidateCache\ boolean flag, and the \execute\ method now passes this option to the runner. Tests confirm that multiple subscriptions are called per execution and that unsubscription works correctly.

packages/arch/src/use-case · high confidence

Added a complete Todo feature with React UI and application logic

The with-react example now includes a full Todo feature, introducing domain models (Todo, NewTodo, TodoRepository), application commands and queries (CreateTodoCmd, CompleteTodoCmd, GetTodoQry, GetTodosQry), and infrastructure implementations (HttpTodoRepository, LocalTodoRepository). The UI layer provides a CreateTodo component for adding new items and a TodoList component for displaying and completing existing ones, wired together via dependency injection.

examples/with-react/src/features/todo · high confidence

Introduce Archimedes facade and expand public API

A new Archimedes facade class is added, providing a static createChain method that delegates to the Runner. The public API is expanded with new exports for cache management (Cache, CacheResult, InvalidationPolicy, LruCache, CacheManager, UseCaseKey, InvalidateCache), runner components (Context, ChainError, Logger), and use-case types (Command, Query, UseCase, ExecutionOptions). Several existing exports are reorganized or renamed, such as moving link classes into a links subdirectory and updating the index.ts to reflect these structural changes.

packages/arch/src · medium confidence

Introduce HTTP client, date/time utilities, and helper functions

The HTTP client now wraps responses in a structured object containing status, headers, and result, and supports query parameters via a new HttpParams class. The client also accepts default headers and request options. Date and time handling gains a difference method to calculate the interval between two dates, and the Duration class now supports conversion to various time units. A new range function generates numeric sequences, and a Timer class allows pausing and resuming timeouts. The observer pattern is simplified by replacing Publisher/Subscriber interfaces with Subject/Observer. The Maybe class is refactored to use a static 'from' method and removes the 'some' method, while the MockDatetime utility updates to use Luxon's Settings.defaultZone.

packages/utils/src · high confidence

New Angular and React example apps added to the examples directory

The repository now includes two new example applications: a Angular app (with-angular) and a React app (with-react), both migrated from the packages directory to the examples directory. The Angular example features a complete implementation with routing, dependency injection, and Archimedes integration, while the React example utilizes CRACO for configuration. These examples demonstrate the framework's capabilities in different environments.

examples · high confidence

Project build, configuration, and documentation overhaul

The project has been restructured with a new Parcel build configuration (.parcelrc) and updated TypeScript settings (tsconfig.json, tsconfig.project.json) to support the new build system. Automated releases are now managed by Semantic Release (.releaserc.json), and the repository includes a new CONTRIBUTING.md guide. Additionally, the README has been significantly expanded with badges, links, and usage instructions, while legacy configuration files like lerna.json and babel.config.js have been removed or replaced.

(repo-wide) · high confidence

Removals

Removed example-react package

The example-react package has been removed from the repository. This includes the deletion of all associated source files (App, components, styles, and configuration), effectively removing the React-based example application from the project.

packages/example-react · high confidence

Behavioural changes

Add configurable timeout and pause/resume controls to NotificationCenter

The NotificationCenter now accepts a configuration object allowing users to set a custom notification timeout (defaulting to 5,000ms). The internal implementation has been updated to use a Timer utility instead of window.setTimeout, and the class now implements Subject instead of Publisher, with observers replacing subscribers. Additionally, the component exposes pause(), resume(), and close() methods to control the notification lifecycle.

packages/arch/src/notifications · medium confidence

Cache manager now supports custom cache implementations and TTL configuration

The cache system has been refactored to allow greater customization. The CacheManager now accepts a CacheOptions object containing a custom Cache implementation and a Time-To-Live (TTL) duration, replacing the previous hardcoded 500,000ms TTL and default LRU cache. The Cache interface has been updated to include a create() method for factory-style instantiation, and the CacheResult type now wraps return values with creation timestamps to support TTL expiration logic. Additionally, the cache storage method has been renamed from cache() to set(), and the invalidation decorator has been renamed from EvictCache to InvalidateCache.

packages/arch/src/cache · high confidence

Introduce primary and secondary button themes and update toast color variables

The button component now supports primary and secondary themes, with corresponding CSS classes and styling applied via the \theme\ property. Additionally, the toast component's color variables for success and info states have been updated to use \--on-success-color\ and \--on-info-color\ respectively, aligning with the new theme system defined in \material-theme.css\.

packages/components/src · high confidence

The runner's link architecture has been refactored to support asynchronous operations, with the \next\ method on all link types (including \CacheLink\, \ExecutorLink\, \NotificationLink\, and others) now returning a \Promise\<void\>\ instead of \void\. This change enables the \CacheLink\ to perform asynchronous cache checks and invalidations, and introduces a new \invalidateCache\ flag in \ExecutionOptions\ that allows users to explicitly invalidate the cache for a specific use case key during execution.

packages/arch/src/runner/links · medium confidence

Removed Angular example application and e2e tests

The Angular example application located in packages/example-angular has been removed from the repository. This includes the main application components (app.component, app.module), the associated query and command classes (FooCmd, BarQry, etc.), the e2e test suite (protractor configuration and specs), and supporting configuration files (tslint, tsconfig).

packages/example-angular · high confidence

Runner.run becomes async and executionOptions become optional

The Runner.run method is now asynchronous, requiring callers to await the result. Additionally, the executionOptions parameter is now optional, allowing the runner to operate with default settings when no options are provided.

packages/arch/src/runner · high confidence

Updated TypeScript configuration and build output

The \@archimedes/components\ package now references \@archimedes/utils\ via TypeScript project references, and the Stencil build configuration has been simplified by removing the \dist-custom-elements-bundle\ output, leaving only the \www\ output. Additionally, the README has been updated to point to the official documentation for usage instructions.

packages/components · medium confidence

Test coverage

Added test setup file for fetch polyfill

A new test setup file (tests/setup.js) was added to import the isomorphic-fetch library, ensuring the fetch API is available in the test environment.

tests · high confidence

Dependencies

Upgrade to Angular 14 and React 18 in examples

The \with-angular\ example has been updated to Angular 14, and the \with-react\ example has been upgraded to React 18. Additionally, the \@archimedes/components\ package has been updated to version 1.6.2, and the \@archimedes/utils\ package has been updated to version 2.1.1.

(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

Score

  • CAI 53 → 59 (+5.7)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 96 → 98 (+2.4)
  • Architecture 88 → 91 (+2.8)
  • Maturity 48 → 53 (+4.9)
  • Readiness 52 → 60 (+7.8)
  • Security 45 → 55 (+9.4)

Resolved (61)

  • 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] (packages/components/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)
  • 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)
  • 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)
  • …and 41 more

New (269)

  • Coverage not measured — JavaScript/TypeScript suite
  • 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] (packages/components/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)
  • 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)
  • 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)
  • …and 249 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

archimedes-projects/archimedes-js 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 99e344bdc67816146a1f6122976beb056705f051 — 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-b84573e22831.