Skip to content
CAI
Software that uses CAICheck a score

t1agob/eventsourcing-qldb

50.0

Weak · 21 September 2026

2.1k

lines of production code

TypeScript

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Added CDK TypeScript entry point for AdsStack

A new TypeScript entry point (cdk-typescript.ts) was added to the CDK bin directory. This file initializes the CDK App and instantiates the AdsStack, enabling the deployment of the AdsStack infrastructure via the CDK CLI.

cdk/bin · high confidence

Added DynamoDB processor for Kinesis stream

Introduced a new serverless function, DynamoProcessor, which processes Kinesis records containing Ion-format data. The handler deserializes the records, extracts ad metadata (such as title, price, and category), and persists or updates the corresponding item in a DynamoDB table. A helper module handles the DynamoDB update and delete operations, ensuring that ad data is synchronized from the stream to the database.

backend/src/DynamoProcessor · high confidence

Added ESProcessor to handle Kinesis records and sync ads to Elasticsearch

A new serverless function, ESProcessor, has been introduced to process incoming Kinesis data streams. The handler.ts file parses Ion-format records, distinguishing between ad updates and deletions, and forwards the extracted ad data to an Elasticsearch cluster via HttpHelper. The implementation includes a model (ESAd) for ad data, a helper for Elasticsearch HTTP requests (createOrUpdateAd, deleteAd), and the necessary build configuration (webpack, tsconfig) to package the function for AWS Lambda.

backend/src/ESProcessor · high confidence

Added periodic QLDB snapshot export to S3

A new backend component in the PeriodicSnapshot directory enables the periodic export of Amazon QLDB journal data to an S3 bucket. The handler.ts file implements a Lambda function that calculates the previous month's date range and triggers an export via the AWS QLDB SDK, while serverless.ts configures the AWS provider, runtime, and environment variables (ledger name, role ARN, S3 bucket) for the deployment.

backend/src/PeriodicSnapshot · high confidence

Initial CDK project scaffolding and build configuration

The CDK directory is initialized with standard project scaffolding, including TypeScript configuration (tsconfig.json), a Jest test configuration (jest.config.js), and a build script (package-projects.sh) that automates packaging for multiple backend services. This establishes the development environment and build pipeline for the CDK application.

cdk · high confidence

New Replay API endpoint for querying and syncing entity history

A new backend service, ReplayAPI, has been introduced to support replaying entity states to a secondary store. The implementation includes a Lambda handler that queries an Amazon QLDB ledger for historical data of specific entities (e.g., 'Ads') within a given time range, and then upserts those historical records into a DynamoDB table via a helper function. The service is configured via Serverless framework with specific Webpack and TypeScript settings.

backend/src/ReplayAPI · high confidence

Behavioural changes

Migrated AdClientAPI to TypeScript

The AdClientAPI backend component has been rewritten from .NET to TypeScript, introducing a new serverless function that queries an Elasticsearch endpoint for ad data. This change includes the addition of a TypeScript configuration, a Webpack build setup for the serverless framework, and a new \handler.ts\ entry point that processes search queries and returns ad results as JSON.

backend/src/AdClientAPI · high confidence

Migrated AdPublisher and AdReader APIs to TypeScript

The AdPublisher and AdReader backend services have been rewritten in TypeScript, replacing the previous .NET implementation. This change updates the API handlers to use the Amazon QLDB driver for Node.js and introduces a new GET operation for the AdReader that queries DynamoDB, while the AdPublisher API continues to use QLDB for creating, updating, and deleting ads. The migration includes new TypeScript configuration files (tsconfig.json) and Webpack build setups for both services.

backend/src/AdReaderAPI · medium confidence

Migrated ad processing and storage to DynamoDB and QLDB

The CDK stack now provisions a DynamoDB table for state storage and a QLDB ledger for ad data, replacing previous .net-based processing. The architecture routes ad events from QLDB to Kinesis, which triggers a Lambda function to process data into Elasticsearch. This change introduces DynamoDB as a new state store and integrates QLDB for ledger-based ad tracking, shifting the backend from .NET to TypeScript for the processor and client APIs.

cdk/lib · medium confidence

Test coverage

Added initial test coverage for the CDK TypeScript stack

A new test file, cdk-typescript.test.ts, has been added to the cdk/test directory. This file contains a basic unit test for the AdsStack component, verifying that the stack initializes correctly with an empty resources configuration.

cdk/test · high confidence

Dependencies

Added package manifests for multiple backend services

New package.json and package-lock.json files were added for the AdClientAPI, AdPublisherAPI, AdReaderAPI, DynamoProcessor, ESProcessor, and PeriodicSnapshot services. These files define the Node.js dependencies and devDependencies for each service, including libraries such as axios, aws-sdk, and serverless-webpack, establishing the build and runtime environment for these components.

(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 49 → 50 (+0.6)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 70 → 59 (-10.4)
  • Architecture 100 → 67 (-32.8)
  • Maturity 62 → 61 (-0.9)
  • Readiness 31 → 40 (+8.7)
  • Security 56 → 57 (+0.6)

Resolved (60)

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

New (98)

  • Coverage not measured — JavaScript/TypeScript suite
  • Critical CVE: [GHSA redacted] (cdk/package-lock.json)
  • Critical CVE: [GHSA redacted] (cdk/package-lock.json)
  • Critical CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • Critical CVE: [GHSA redacted] (cdk/package-lock.json)
  • Critical CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • Critical CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • Critical CVE: [GHSA redacted] (cdk/package-lock.json)
  • Critical CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • Critical CVE: [GHSA redacted] (backend/src/DynamoProcessor/package-lock.json)
  • Critical CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • Critical vulnerability: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile is in a format this engine cannot resolve)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • High CVE: [GHSA redacted] (cdk/package-lock.json)
  • High CVE: [GHSA redacted] (cdk/package-lock.json)
  • High CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • High CVE: [GHSA redacted] (backend/src/AdClientAPI/package-lock.json)
  • …and 78 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

t1agob/eventsourcing-qldb 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 480f8fd5c9433b4b5c645d2e66d5d82871605951 — 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-28e75b8e3254.