Skip to content
CAI
Software that uses CAICheck a score

proyecto26/projectx

45.3

Weak · 21 September 2026

20k

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 monolithic e-commerce and authentication platform built on a modern TypeScript stack, featuring a NestJS backend with Temporal for long-running workflows and a React frontend. It provides core services for user authentication, order management, and payment processing via Stripe, alongside transactional email delivery. The architecture supports rapid development through CLI generators and AI-assisted coding skills, all orchestrated within a Turborepo-based monorepo structure.

How it got here

2024 — Monorepo migration and feature expansion

9 changes.

The project underwent a significant infrastructure shift by migrating the monorepo build orchestration from Nx to Turborepo and upgrading to React 19. Concurrently, the codebase expanded with new features, including an email-based authentication system, an admin order management API with Temporal workflows, and automated database initialization scripts.

2026 — Core infrastructure and tooling setup

13 changes.

This period focused on establishing the foundational layers of the application, including database schemas, payment and email services, and core authentication modules. Concurrently, the team implemented a comprehensive CLI for scaffolding microservices and configured AI agent skills and IDE tooling to support the new architecture.

Features

Add CLI commands for generating services, workflows, and project initialization

The ProjectX CLI now includes new commands to streamline project setup and scaffolding. Users can run 'projectx generate' to create new NestJS services (including Temporal-enabled ones) and workflows, with interactive prompts for names, ports, and optional modules like email or payment. A new 'projectx init' command allows customizing the template by renaming the project, cleaning up example services, and updating Docker configuration. Additionally, 'projectx info' displays a summary of the current setup, including services, packages, and available generator scripts.

packages/cli · high confidence

Add CLI generators for NestJS and Temporal microservices

Developers can now use the CLI to scaffold new NestJS microservices or Temporal-enabled services with a single command. The new \nestjs-service\ generator creates a standard NestJS application with health checks, Swagger documentation, and optional Email/Payment modules. The \nestjs-temporal-service\ generator builds on this by adding Temporal workflow support, including activity templates, workflow definitions, and a REST endpoint to trigger workflows. Both generators include pre-configured TypeScript, Jest, and E2E test templates, reducing the setup time for new services in the monorepo.

turbo, turbo/generators/templates/nestjs-service, turbo/generators/templates/nestjs-temporal-service · high confidence

Add Stripe payment integration and configuration

The payment package now includes a complete Stripe integration, featuring a \StripeService\ that handles payment intents, webhooks, and refunds. The service is wired into a NestJS \PaymentModule\ and exposes configuration for the Stripe secret key and webhook secret via environment variables.

packages/payment · high confidence

Add server-side configuration, security headers, and admin order hooks

The web app now includes server-side configuration files (app.config.server.ts, env.server.ts, security.server.ts, utils.server.ts) that centralize environment variables, API URLs, and security headers (CSP, HSTS, etc.). Additionally, the app introduces hooks for admin order management (useAdminOrders.ts) and global session/CSRF handling (session.server.ts, auth.server.ts), enabling server-side session management and admin order operations.

apps/web/src · high confidence

Added AI agent skills for NestJS, Prisma, React Router v7, and Temporal

Added new AI agent skills to guide code generation and development workflows. The NestJS skill provides patterns for controllers, services, and modules. The Prisma skill covers database operations, schema patterns, and migrations. The React Router v7 skill includes comprehensive guides for loaders, actions, navigation, and advanced patterns like error boundaries and protected routes. The Temporal skill introduces a visual workflow designer for building and editing Temporal workflows. These skills serve as reference documentation for developers using these technologies within the project.

(repo-wide), .agents · high confidence

Added Cursor IDE configuration for backend, frontend, and infrastructure

New files were added to the \.cursor\ directory to configure the Cursor IDE for the project. This includes \mcp.json\ defining Model Context Protocol servers for Chrome DevTools, Playwright, PostgreSQL, Stripe, Context7, and Temporal. Additionally, Markdown rule files were added to guide AI interactions for NestJS backend services, backend packages, Temporal workflows, frontend packages, the React Router web app, and Docker infrastructure for apps, databases, and Temporal. Symbolic links for skills (NestJS, Prisma, React Router v7, Temporal, Temporal Playground, and Turborepo) were also created.

.cursor · high confidence

Added deployment scripts and configuration for Temporal backend

The deployment process now includes automated setup for the Temporal workflow engine. A new dynamic configuration file (development.yaml) defines performance limits, retry policies, and feature flags for the frontend and history services. Additionally, shell scripts have been added to orchestrate the initialization of the Temporal namespace, create custom search attributes (OrderId, UserId, Email), and configure the required PostgreSQL and Elasticsearch backends, ensuring the system is fully bootstrapped on startup.

deployment · high confidence

Initial AI agent and skill configuration for the development workflow

The \.claude\ directory is introduced, containing new agent definitions for backend, DevOps, and frontend engineering, alongside symlinks to specific technical skills (NestJS, Prisma, React Router v7, Temporal, Turborepo). This establishes the AI assistant's capabilities and tooling for the project. Additionally, the \.prettierrc\ file has been moved to \.claude/settings.json\ with updated configuration.

.claude · high confidence

Initial Storybook configuration and tooling setup

The Storybook application is now configured with a Vite-based React framework, Tailwind CSS integration, and specific preview parameters for actions and controls. Additionally, a pre-commit hook is added to run lint-staged, and a .gitignore file is created to exclude Storybook static build artifacts.

.husky, apps/storybook · medium confidence

Initial database schema and repository layer for orders, payments, products, and users

The \packages/db\ and \packages/models\ packages now contain the foundational database layer for the application. This includes a Prisma schema and SQL migration defining tables for users, roles, permissions, manufacturers, products, orders, order items, payments, and reviews. Corresponding repository services and NestJS modules have been added to handle data access for these entities, along with DTOs for creating and updating orders and payments. A database seed script is also included to initialize admin users and roles.

packages/db, packages/models · high confidence

Initial release of the Temporal Playground: a visual workflow builder with AI-assisted chat and live editing

The Temporal Playground skill is introduced, providing a complete environment for designing and editing Temporal workflows. The server (\.agents/skills/temporal-playground/server\) exposes an HTTP API and MCP bridge to scan the monorepo for workflow definitions, resolve TypeScript types, and serve the UI. The UI (\.agents/skills/temporal-playground/ui\) renders a React Flow-based canvas with a vertical toolbar for adding nodes, a context menu for block insertion, and a chat panel for sending workflow specs to Claude for implementation. Users can select existing workflows from the palette, edit node details via a side panel, manage parameters, and apply AI-generated changes directly to the canvas.

.agents/skills/temporal-playground/server, .agents/skills/temporal-playground/ui · high confidence

Introduce admin order management API and order workflow

The order service now exposes a new admin API for managing orders, including endpoints to retrieve dashboard statistics, list orders with filtering and pagination, and update or cancel orders. This is supported by new DTOs for admin responses, an \OrderAdminController\, and an \OrderService\ that handles order creation, payment confirmation/failure reporting, and status queries. The change also introduces a Temporal-based order workflow (\order.workflow.ts\) and a child workflow for processing payments (\process-payment.workflow.ts\), enabling long-running, reliable order processing. Additionally, a \ActivitiesService\ is provided to bridge the workflow to the \OrderService\. The service also handles Stripe webhooks to update order status based on payment events.

apps/order · high confidence

Introduce core infrastructure and workflow execution capabilities

This change adds the foundational modules for the application's core and workflow execution layers. The core package now provides authentication (JWT guard, strategy, and service), application bootstrapping with security headers and rate limiting, health checks, structured logging, and user management utilities. The workflows package introduces a NestJS module for managing Temporal workers and clients, including retry logic for connection and worker initialization. Additionally, shared workflow utilities are added to the core package, enabling the definition of signals, queries, and updates for state management within Temporal workflows.

packages/core, packages/workflows · high confidence

Introduce email service with login and order status templates

Added a new email package that provides a NestJS module and service for sending transactional emails. The service supports four email templates: a login verification email and order status updates (pending, success, and failed). The implementation uses MJML to render HTML emails and integrates with SendGrid for delivery, with configuration loaded from environment variables.

packages/email · high confidence

Introduce email-based login and user profile management in the auth service

The auth application now provides a complete authentication flow. Users can initiate login via a POST to /login, which triggers an asynchronous Temporal workflow to send a verification email. Subsequently, verifying the code via POST to /verify-code returns an access token. Additionally, protected endpoints are available for authenticated users to retrieve and update their profile information.

apps/auth · high confidence

New UI components and hooks for layout, navigation, and cart interactions

Added a suite of new UI components and hooks to the \packages/ui\ package. This includes a \Badge\ component with multiple variants (success, warning, error, info, urgent, count) and corresponding Storybook stories. A \Breadcrumb\ component for navigation paths was added with stories. Button components were expanded to include \CheckoutButton\ (which handles cart state and navigation) and \ThemeButton\ (for light/dark mode toggling), each with stories and tests. New card components (\Card\, \MetricCard\, \MetricCardV2\, \ProductCard\) were introduced with stories. A \CategoryChip\ component for filtering was added. Layout components \Header\ and \Footer\ were implemented with stories and tests. A \ShoppingCartDrawer\ and \ShoppingCartContent\ were added to manage the cart UI. Additionally, new hooks \useAvatarUrl\ and \useScroll\ were created. The \index.ts\ file was updated to export these new components.

packages/ui · high confidence

Removals

Removed the legacy UI library and its configuration

The \libs/ui\ directory has been completely removed from the codebase. This includes all source files for the \Button\, \Header\, \Footer\, and \Ui\ components, along with their associated Storybook stories and unit tests. Additionally, all configuration files related to this library have been deleted, including \project.json\, \eslint.config.js\, \postcss.config.js\, \tailwind.config.ts\, and various TypeScript and Babel configuration files. This change eliminates the legacy UI component library and its associated build and styling configurations.

libs/ui · high confidence

Behavioural changes

Initialize PostgreSQL with trgm and PostGIS extensions

The Docker entrypoint now automatically installs the pg\_trgm and PostGIS extensions when the database is first initialized. This ensures that text similarity search and geospatial query capabilities are available from the start, without requiring manual database setup steps.

docker-entrypoint-initdb.d · high confidence

Migrated build orchestration from Nx to Turborepo

The monorepo's build orchestration has been migrated from Nx to Turborepo. This change replaces the Nx-specific configuration files (nx.json, eslint.config.js, tsconfig.base.json) with Turborepo equivalents (turbo.json, biome.json, tsconfig.json). The project now uses pnpm-workspace.yaml for workspace management and updates the root tsconfig.json to support the new monorepo structure. This affects how developers run commands like \pnpm build\ or \pnpm dev\, as the underlying task runner and caching mechanisms have changed.

(repo-wide) · high confidence

Migrated web app from Remix to React Router with updated build configuration

The web application has been migrated from a Remix-based setup to React Router, introducing a new \react-router.config.ts\ for server-side rendering and origin configuration. Build tooling has been updated to use Vite with Tailwind CSS integration, and TypeScript configuration has been modernized to ES2022 with bundler module resolution. The project has also adopted the shadcn/ui component library, and path aliases have been updated to reflect the new framework structure.

apps/web · medium confidence

Removed legacy Remix app entry points and styles

The default root layout (root.tsx), the index route (\_index.tsx), and the Tailwind CSS configuration file (tailwind.css) have been removed from the web application. This removes the previous default page structure and styling, likely as part of a broader migration or restructuring of the web app's entry points.

apps/web/app · high confidence

Dependencies

Migrated from Nx to Turborepo and upgraded to React 19

The project has been restructured from an Nx-based monorepo to a Turborepo-based monorepo, introducing a new build and task runner configuration. As part of this migration, the frontend stack has been upgraded to React 19. Additionally, the \@projectx/ui\ library was moved from the \libs\ directory to \packages/ui\, and the root \package.json\ was updated to reflect the new workspace structure and scripts.

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

Lenses

  • Code Health 87 → 84 (-2.5)
  • Architecture 78 → 66 (-12.6)
  • Maturity 77 → 77 (+0.0)
  • Readiness 18 → 18 (+0.8)
  • Security 68 → 72 (+3.4)
  • Accessibility 66 → 66 (+0.0)

Resolved (57)

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

New (217)

  • ClassTooLong: ProductDetailPage (apps/web/src/pages/ProductDetailPage.tsx)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Documentation: hard to navigate (docs/ai/search/IMAGE_SEARCH.md)
  • Documentation: hard to navigate (docs/ai/search/VECTOR_SEARCH_CONF.md)
  • FileTooLong: admin/Dashboard.tsx (apps/web/src/pages/admin/Dashboard.tsx)
  • FileTooLong: admin/Orders.tsx (apps/web/src/pages/admin/Orders.tsx)
  • FileTooLong: pages/MarketplacePage.tsx (apps/web/src/pages/MarketplacePage.tsx)
  • FunctionTooLong: Dashboard.AdminDashboardPage (apps/web/src/pages/admin/Dashboard.tsx)
  • FunctionTooLong: Header.Header (packages/ui/src/lib/header/Header.tsx)
  • FunctionTooLong: LoginPage.LoginPage (apps/web/src/pages/LoginPage.tsx)
  • FunctionTooLong: Order.OrderPage (apps/web/src/pages/Order.tsx)
  • FunctionTooLong: OrderHistory.OrderHistory (apps/web/src/pages/OrderHistory.tsx)
  • FunctionTooLong: OrderSummary.OrderSummary (apps/web/src/pages/OrderSummary.tsx)
  • FunctionTooLong: Orders.AdminOrdersPage (apps/web/src/pages/admin/Orders.tsx)
  • …and 197 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

proyecto26/projectx 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 247950662306bdad8990005a5638436f6f497e09 — 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.