Skip to content
CAI
Software that uses CAICheck a score

Ahoo-Wang/wow-project-template

67.2

Adequate · 21 September 2026

643

lines of production code

TypeScript

with Kotlin, JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a template for a Kotlin-based microservice built on the Wow framework, utilizing Domain-Driven Design, Event Sourcing, and CQRS patterns. It provides a complete scaffolding for a 'Demo' bounded context, including server-side REST APIs, domain aggregates, and stateless sagas, alongside an auto-generated TypeScript client library for type-safe communication. The project also establishes standardized tooling for dependency management, code generation, and consistent build environments.

How it got here

2023 — Initial project scaffolding and template setup

7 changes.

This period focused on establishing the foundational structure of a Wow framework microservice template, implementing core DDD, Event Sourcing, and CQRS patterns. Key activities included setting up the Gradle build environment, defining the initial domain model with aggregates and sagas, and creating the corresponding API contracts and server-side implementations for a demo context.

2024–2025 — Demo service and client library setup

5 changes.

This period focused on establishing the foundational structure for a demo bounded context, including the creation of a Kotlin server template and a TypeScript client library. The work involved generating type-safe client code for the demo aggregate, configuring the build environment with Vite, and adding integration tests to verify the server's startup and configuration.

Features

Add demo server components for API and event projection

The demo server now includes a REST controller implementing the DemoApi interface and a projector that handles the DemoCreated event, providing a basic server-side implementation for the demo template.

server/src/main/kotlin/me/ahoo/wow/template/server/demo · high confidence

Added demo service template and client API

The template module now includes a DemoService object that defines a bounded context for a demo aggregate, and a corresponding DemoClient interface annotated with CoApi to facilitate client-side API calls to that service.

api/src/main/kotlin/me/ahoo/wow/template · high confidence

Added use case diagram for DemoService

The documentation now includes a new use case diagram illustrating the interactions between the User actor and the DemoService, specifically detailing the CreateDemo and UpdateDemo use cases. This visual aid is provided in both PlantUML source format and a rendered SVG image to help users understand the system's functional scope.

document · high confidence

Generated client code for the Demo bounded context

The client now includes auto-generated TypeScript code for the 'demo' bounded context, providing type-safe access to its API. This adds a \DemoCommandClient\ for executing commands (create, update, delete, recover, and apply resource tags) and a \demoQueryClientFactory\ for querying aggregate state and handling domain events. The generated types define the \DemoState\, command bodies (\CreateDemo\, \UpdateDemo\), and event interfaces (\DemoCreated\, \DemoUpdated\), exposing endpoints under \/tenant/{tenantId}/demo\.

client/src · high confidence

Initial client library setup with Vite build and fetcher dependencies

The client directory has been initialized as a TypeScript library project. It uses Vite for building, configured to bundle the library entry point while externalizing the \@ahoo-wang/fetcher\ family of packages (fetcher, decorator, eventstream, cosec, wow) to be provided at runtime. The project includes ESLint configuration for TypeScript, a tsconfig targeting ES2020, and a .gitignore file. Documentation is provided in the README for generating client code from OpenAPI specs and building the library.

client · high confidence

Initial domain model for the Demo bounded context

This change introduces the core domain components for the Demo bounded context, including the Demo aggregate root, its state management via IDemoState, and a stateless saga that automatically triggers an UpdateDemo command upon creation. It also adds the corresponding unit tests for both the aggregate and the saga to verify command handling and event sourcing behavior.

domain · high confidence

Initial project template scaffolding with documentation and tooling

The repository is initialized as a Wow framework microservice template implementing DDD, Event Sourcing, and CQRS. This entry establishes the foundational project structure and tooling: it adds the Gradle wrapper scripts (gradlew, gradlew.bat) and configuration (.gitattributes) for consistent builds, introduces .editorconfig to enforce Kotlin coding standards (trailing commas, import-on-demand rules), and sets up Renovate (renovate.json) to manage dependency updates with specific groupings for Spring and Kotlin/KSP ecosystems. It also includes comprehensive documentation in README.md (module descriptions, usage guides, CI/CD steps) and CLAUDE.md (AI assistant guidance, build commands, architecture patterns), alongside an updated .gitignore to exclude build artifacts and IDE files.

(repo-wide) · high confidence

Introduce demo aggregate API with Create and Update commands

This change adds the initial API definitions for a demo aggregate, including the \CreateDemo\ and \UpdateDemo\ commands, along with their corresponding events (\DemoCreated\, \DemoUpdated\). These commands implement the new \IDemoInfo\ interface and are annotated with \@Summary\ for documentation. A \DemoApi\ interface is also introduced using \@HttpExchange\ to expose the aggregate's endpoints, establishing the client-side API contract for this domain model.

api/src/main/kotlin/me/ahoo/wow/template/api · high confidence

Behavioural changes

Rename demo application entry point to Server

The main application entry point class has been renamed from DemoApplication to Server. This change updates the Kotlin class definition and its usage in the Spring Boot application configuration, ensuring the application starts correctly with the new class name while maintaining the same bounded context and service scanning behavior.

server/src/main/kotlin/me/ahoo/wow/template/server · high confidence

Test coverage

Added basic server integration test

A new \ServerTest\ class has been added to verify that the Spring Boot application context loads successfully, ensuring the server's core dependencies and configuration are valid at startup.

server/src/test · high confidence

Dependencies

Gradle wrapper updated to version 9.7.1

The Gradle wrapper configuration has been updated to use Gradle version 9.7.1. This ensures that builds will consistently use this specific version of the Gradle build tool, downloaded from the official distribution URL, providing a stable and reproducible build environment.

gradle · high confidence

Initial dependency management and module scaffolding

The project introduces a centralized dependency management strategy by adding a BOM module and a new API module. The API module (\api/build.gradle.kts\) declares its dependencies against a shared platform (\:dependencies\), integrating core libraries such as \wow-api\, \wow-apiclient\, \coapi-api\, and \swagger-annotations\, while also configuring the KSP plugin for code generation. This establishes the foundational build structure and dependency graph for 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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 74 → 67 (-6.6)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 (new)
  • Architecture 100 → 66 (-34.3)
  • Maturity 71 → 71 (+0.0)
  • Readiness 69 → 61 (-7.8)
  • Security 73 → 74 (+1.3)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (25)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (client/pnpm-lock.yaml)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 5 more

New (31)

  • Coverage not measured — JavaScript/TypeScript suite
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High CVE: [GHSA redacted] (client/pnpm-lock.yaml)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 11 more

Changes since last survey

  • 97 commits — 0 feature/other, 97 fixes

By area

  • gradle/libs.versions.toml — 52 commits
  • client/package.json — 31 commits
  • .github/workflows — 12 commits
  • gradle/wrapper — 2 commits

Notable commits

  • fix: fix(deps) Update @types/node to ^24.13.4 (#1173)
  • fix: fix(deps) Update @types/node to ^24.13.5 (#1184)
  • fix: fix(deps) Update @types/node to ^24.13.6 (#1189)
  • fix: fix(deps) Update Gradle to v9.7.0 (#1099)
  • fix: fix(deps) Update Gradle to v9.7.1 (#1122)
  • fix: fix(deps) Update actions/setup-java action to v6 (#1140)
  • fix: fix(deps) Update ahoo-wang-fetcher to ^3.17.0 (#1110)
  • fix: fix(deps) Update ahoo-wang-fetcher to ^3.17.1 (#1135)
  • fix: fix(deps) Update ahoo-wang-fetcher to ^3.18.0 (#1144)
  • fix: fix(deps) Update ahoo-wang-fetcher to ^3.18.1 (#1146)
  • fix: fix(deps) Update ahoo-wang-fetcher to ^4.0.1 (#1160)
  • fix: fix(deps) Update ahoo-wang-fetcher to v4 (#1151)
  • fix: fix(deps) Update ahoo-wang-fetcher to v5 (#1163)
  • fix: fix(deps) Update com.google.devtools.ksp to v2.3.11 (#1092)
  • fix: fix(deps) Update com.google.devtools.ksp to v2.3.12 (#1174)
  • fix: fix(deps) Update com.google.guava:guava to v33.7.0-jre (#1113)
  • fix: fix(deps) Update com.google.guava:guava to v33.7.1-jre (#1115)
  • fix: fix(deps) Update eslint to ^10.10.0 (#1162)
  • fix: fix(deps) Update eslint to ^10.11.0 (#1190)
  • fix: fix(deps) Update eslint to ^10.8.1 (#1100)
  • …and 77 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

Ahoo-Wang/wow-project-template 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 3db247a2943364f631a15152d4a0e6f1ce893f8c — 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.