garronej/clean-architecture
61.6
Adequate · 21 September 2026
1.1k
lines of production code
TypeScript
primary language
4
measurements over time
What this system is
This system is a Clean Architecture framework for TypeScript web applications that provides a core state management library built on Redux Toolkit and the Evt event system. It offers utilities for managing use cases, handling context, and preventing premature property access, along with a React adapter for seamless UI integration. The project includes a demo application and automated tooling to facilitate local development and demonstrate the architecture's framework-agnostic design.
Features
Automated linking script for demo apps
A new script, scripts/link-in-test-app.ts, has been added to automate the setup of local development environments for demo applications. This tool modifies the dist/package.json to adjust path prefixes and uses Yarn to link common third-party dependencies (such as React and Redux Toolkit) as well as the local 'clean-architecture' package into the specified test apps (currently 'demo-app'), streamlining the process of running and testing the library against sample projects.
scripts · high confidence
Initial release of the core state management library
This change introduces the foundational API for the application's state management, replacing the previous placeholder exports. It provides \createCore\ to initialize the Redux-based store, manage usecases, and expose states, events, and functions. The library includes a React adapter (\createReactApi\) with a \useCoreState\ hook for subscribing to state changes, a middleware (\middlewareEvtAction\) to bridge Redux actions with the Evt event system, and utilities for managing usecase context and creating objects that throw on early access. The public API is now exported via \src/index.ts\, exposing core creation, context APIs, and Redux Toolkit helpers like \createSlice\ (aliased as \createUsecaseActions\).
src · high confidence
Introduce Clean Architecture demo application with React and TypeScript
The demo-app now provides a canonical Clean Architecture setup using React and TypeScript. It features a framework-agnostic core layer (containing ports, adapters, and use cases) separated from the UI layer, demonstrating how to structure an application for easy framework switching. The app includes a React-specific API bridge, state management via Redux Toolkit (made an internal dependency), and utilizes modern React patterns like Suspense and the new \createRoot\ API for rendering.
demo-app · high confidence
New utilities to detect and prevent premature access to object properties
Added \createObjectThatThrowsIfAccessed\ and \createObjectWithSomePropertiesThatThrowIfAccessed\ to enforce strict access control on objects, throwing an \AccessError\ when properties are accessed before they are ready. These tools include a detection helper (\isObjectThatThrowIfAccessed\) and support whitelisting specific properties, helping to prevent runtime errors caused by accessing uninitialized data in state reducers or other contexts.
src/tools · high confidence
Behavioural changes
Project repositioned as Clean Architecture framework with updated tooling and configuration
The project has shifted from a generic TypeScript starter template to a specific Clean Architecture framework for building web applications, as reflected in the updated README and LICENSE metadata. This change includes removing the previous ESLint configuration files (.eslintrc.js, .eslintignore) and deleting the README and LICENSE templates, while introducing Renovate for automated dependency management. Additionally, the Prettier configuration was updated to disable trailing commas, and the TypeScript compiler options were adjusted to include the ES2019.Object library.
(repo-wide) · high confidence
Test coverage
Added type tests for core store and middleware utilities
Added type-level tests in src/test/types to verify the TypeScript signatures of the store creation, middleware event action, usecase context API, and various usecase transformation utilities (reducers, states, functions, and events). These tests ensure that the public APIs for createStore, createMiddlewareEvtAction, createUsecaseContextApi, usecasesToEvts, usecasesToFunctions, usecasesToReducer, and usecasesToStates maintain correct type contracts for Redux Toolkit integration and event handling.
src/test · high confidence
Dependencies
Update core dependencies and add demo application scaffolding
The library now requires Redux Toolkit 1.9.7 and declares evt as a peer dependency, while upgrading TypeScript to 5.0.2 and adding ts-node for build scripts. A new demo-app has been introduced to showcase the library, bundling React 18.2, evt 2.5.3, and tsafe 1.6.5.
(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 52 → 62 (+9.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 89 → 91 (+1.8)
- Architecture 69 → 69 (+0.0)
- Maturity 62 → 64 (+2.5)
- Readiness 49 → 59 (+10.0)
- Security 42 → 58 (+16.4)
Resolved (68)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- …and 48 more
New (85)
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Critical CVE: [GHSA redacted] (demo-app/yarn.lock)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- High CVE: [GHSA redacted] (demo-app/yarn.lock)
- …and 65 more
Changes since last survey
- 4 commits — 4 feature/other, 0 fixes
By area
- (root) — 2 commits
- src/createObjectThatThrowsIfAccessed.ts — 1 commit
- src/tools — 1 commit
Notable commits
- change: Bump version
- change: Bump version
- change: Export createObjectWithSomePropertiesThatThrowIfAccessed
- change: Make trapped properties non enumerable
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
garronej/clean-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 fab8018acd85633856e93a63b282ee1f7da38c32 — 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.