Skip to content
CAI
Software that uses CAICheck a score

0xkuze/next-hexagonal-architecture

54.1

Adequate · 21 September 2026

729

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 Next.js-based web application that manages people records through a structured, layered architecture. It provides a user interface for creating and viewing people, backed by API endpoints and server actions that handle data persistence in local storage or memory. The codebase enforces strict code quality, testing, and domain modeling to support these core people management features.

Features

Add in-memory and local storage people repositories

The welcome module now includes two new repository implementations for managing people data: an in-memory store for testing and a local storage-based repository that persists data via API calls. The in-memory repository provides a simple Map-based store with methods to save, retrieve, and list people, while the local storage repository wraps API interactions for saving and fetching people. An end-to-end test has been added to verify the API integration for the local storage repository.

src/modules/welcome/infrastructure · high confidence

Add people management UI components and shared UI primitives

Introduced a suite of reusable UI components (Button, Card, Input, Label) and specific feature components (WelcomePeopleCard, WelcomePeopleCreate, WelcomePeopleList) for managing people profiles. The WelcomePeopleCreate component provides a form for adding new people, while WelcomePeopleList handles displaying the collection with an empty state and skeleton loading states. Tests were added for the new components.

src/sections · high confidence

Add use cases for creating and retrieving people

The application layer now includes \CreatePeopleUseCase\ and \GetAllPeopleUseCase\ to handle business logic for adding and listing people. The create use case enforces validation rules (name length, required fields, valid image URL formats) and sanitizes input before persisting to the repository. The get-all use case retrieves the full list of people from the repository.

src/modules/welcome/application · high confidence

Establishes modern development tooling and testing infrastructure

The project now includes configuration files for Biome.js (biome.json), ESLint (.eslintrc.json), and Vitest (vitest.config.ts, vitest.setup.ts) to standardize code quality and unit testing. Additionally, Cypress is configured for end-to-end testing (cypress.config.ts), and the project structure is documented in the README.md, which also outlines commands for running the development server, building, and executing tests.

(repo-wide) · high confidence

Introduce API endpoints and server actions for people management

Added new API routes and server actions to support creating and retrieving people. The GET /api/welcome endpoint fetches the list of people with caching, while the POST /api/welcome endpoint creates a new person and triggers a cache revalidation. Additionally, the /api/welcome/reset and /api/welcome/revalidate routes provide endpoints to reset the application state and manually trigger cache revalidation, respectively. The server actions in src/app/actions/people.ts expose the core use cases for listing and creating people.

src/app/api · high confidence

Introduce People domain model and repository interface

A new People domain model and repository interface have been added to the welcome module. The People interface defines the structure for person entries, with the id field made optional to support creating new entries without a pre-existing identifier. The PeopleRepository interface defines the contract for data access, including methods to save, retrieve by ID, and fetch all people.

src/modules/welcome/domain · high confidence

Introduce result handling and dependency injection for people management

Added new utility modules in src/lib to support people management features. Introduced a global container pattern (src/lib/container.ts) to manage the PeopleRepository instance, enabling consistent access to the in-memory repository and a reset mechanism for testing. Added a Result type (src/lib/result.ts) to standardize success/failure responses with validation errors, and a utility function (src/lib/utils.ts) for merging CSS classes.

src/lib · medium confidence

Behavioural changes

Introduce Tailwind CSS and CSS variables for theming

The application now uses Tailwind CSS for styling, with global styles defined in \src/styles/globals.css\. This file establishes CSS variables for light and dark mode color palettes, shadows, and fonts, enabling consistent theming across the UI components.

src/app · high confidence

Test coverage

Added end-to-end test for adding a person

Added a new Cypress end-to-end test that verifies the user can add a person via the welcome page. The test resets the state, navigates to the home page, enters a name and image URL, clicks 'Add Person', and asserts that the name appears in the list.

src/e2e · high confidence

Dependencies

Update project dependencies to latest versions

The project's dependencies and devDependencies in package.json have been updated to their latest versions, including Next.js 16.0.10, React 19.2.0, and Tailwind CSS 4.1.11, ensuring improved compatibility and security across the application.

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

Lenses

  • Code Health 95 → 94 (-0.2)
  • Architecture 69 → 69 (+0.0)
  • Maturity 69 → 69 (+0.0)
  • Readiness 36 → 37 (+0.9)
  • Security 75 → 80 (+5.0)
  • Accessibility 64 → 64 (+0.0)

Resolved (32)

  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (bun.lock)
  • Critical CVE: [GHSA redacted] (bun.lock)
  • Critical CVE: [GHSA redacted] (bun.lock)
  • Critical vulnerability: [GHSA redacted] (bun.lock)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 12 more

New (53)

  • Coverage not measured — JavaScript/TypeScript suite
  • Critical CVE: [CVE redacted] (bun.lock)
  • Critical CVE: [GHSA redacted] (bun.lock)
  • Critical CVE: [GHSA redacted] (bun.lock)
  • Critical CVE: [GHSA redacted] (bun.lock)
  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High CVE: [CVE redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • High CVE: [GHSA redacted] (bun.lock)
  • …and 33 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

0xkuze/next-hexagonal-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 8f205504c756b893f356c33e00b7e27a799ccb3a — 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.