archimedes-projects/archimedes-js
59.1
Adequate · 21 September 2026
2.7k
lines of production code
TypeScript
primary language
4
measurements over time
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
Links now support asynchronous execution and cache invalidation
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.