Skip to content
CAI
Software that uses CAICheck a score

logustra/vivu

49.5

Weak · 21 September 2026

1.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

This system is a modern Vue 3 single-page application framework, structured around a modular architecture that supports rapid feature development through automated scaffolding. It provides a complete frontend stack including state management with Pinia, internationalization, and form validation, all managed via a Vite-based build system. The application is containerized for Nginx serving and includes comprehensive tooling for code quality, testing, and type safety.

Features

Add About page routing configuration

A new router configuration file has been added for the About module, defining a route for the '/about' path that dynamically imports the about view component.

src/modules/About · high confidence

Add router guard with progress bar and error handling

A new router guard utility has been introduced to manage navigation states and error recovery. The guard integrates a loading progress bar that starts before each route change and ends after each route is resolved. It also implements an error handling mechanism that captures router errors, stores the intended page name in cookies, and triggers a full browser reload to ensure smooth code updates after releases. Supporting this are new utility functions for checking undefined values and cookie-based storage for the error page name.

src/utils · high confidence

Added About page view component

A new Vue component for the About page has been added. It utilizes the Pinia store (useCommonStore) to set the page title to 'About' on mount, and renders a centered div containing the text 'about'.

src/modules/About/views · medium confidence

Added Vue component template with test scaffolding

A new Vue component template (vexample.vue) has been added to the CLI scaffolding, providing a default component structure that includes TypeScript setup, a required 'example' prop, and a mounted lifecycle hook. A corresponding Vitest test file (vexample.test.tsx) was also added to the template, containing a basic test case to verify the component's functionality.

create/templates/component · medium confidence

Added auto-import and component type declarations for Vue, Pinia, and Element Plus

The project now includes generated TypeScript declaration files (auto-imports.d.ts and components.d.ts) that expose global types for Vue 3, Pinia, vue-router, vue-i18n, Element Plus, and custom application components. This enables IDE auto-completion and type-checking for auto-imported APIs and globally registered components without manual imports. Additionally, commonTypings.ts was renamed from .tsx to .ts, and env.d.ts was simplified to define the ImportMetaEnv type.

src/typings · high confidence

Added default Nginx configuration files for development and production

New Nginx configuration files (nginx.dev.conf and nginx.prod.conf) have been added to the project. These files configure the server to serve static assets from /usr/share/nginx/html, handle SPA routing via try\_files, and apply specific caching headers for fonts, images, and scripts.

nginx · high confidence

Adds a new module template with full-stack scaffolding

The module template now includes a complete set of scaffolding files for a new feature, including a Pinia store for state management, a service layer for API communication, a Vue 3 component and view, a router configuration, and localization support via YAML files. Additionally, a basic Vitest test suite is included to verify the template's functionality.

create/templates/module · high confidence

Initial component structure and layout templates

Adds the foundational component hierarchy for the application, introducing a new VNavbar organism that provides navigation links to the home and about pages, and a VLayout template that composes the header and main content area. The change also includes documentation files for atoms, molecules, organisms, and templates, alongside a new VFormItem molecule for form validation styling and its associated test coverage.

src/components · high confidence

Introduce CLI tool for scaffolding new components and modules

A new \create\ directory and \index.js\ script have been added to the project, providing a command-line interface for generating boilerplate code. This tool supports scaffolding for various component types (atoms, molecules, organisms, templates) and module types (components, composables, constants, locales, services, stores, typings, views, router). The script handles directory creation, file generation from templates, and status logging, enabling developers to quickly set up new parts of the application structure.

create · high confidence

Introduce shared composable and language constants

Adds a new common composable and a constants file that defines the supported languages (English and Indonesian). This provides a centralized place for shared logic and language configuration within the application.

src/composables, src/constants · high confidence

Major build and development environment overhaul

The project's build system has been significantly reconfigured to support a modern Vue 3 stack. This includes adding configuration files for Vitest, UnoCSS, and Histoire, while updating the Vite configuration to integrate auto-imports, on-demand components, and localization plugins. The Dockerfile has been added to support containerized builds and serving via Nginx, and the root HTML template has been updated to use English as the default language.

(repo-wide) · high confidence

Behavioural changes

Environment configuration files renamed and updated

The environment configuration files have been renamed from env.development and env.production to env.dev and env.prod. Additionally, the timeout value has been updated from 20 to 20000, and a new storage error page configuration (VITE\_STORAGE\_ERROR\_PAGE = erpg) has been added to both files.

env · high confidence

Home view upgraded to Vue 3 Composition API with i18n and form validation

The Home view has been rewritten from a Vue 2 Options API component to a Vue 3 Composition API component using the \\<script setup\>\ syntax. This change introduces internationalization support via vue-i18n (allowing dynamic locale toggling) and form validation using @vuelidate/core. The previous Vuex store integration has been replaced with a new common store, and the template now includes an ElButton for locale switching and an ElForm with a required name field.

src/modules/Home/views · medium confidence

Husky pre-commit and pre-push hooks added

The project now enforces code quality and build checks before changes are committed or pushed. A pre-commit hook runs \pnpm lint\ to check code style, a prepare-commit-msg hook integrates commitizen for conventional commits, a commit-msg hook validates commit messages with commitlint, and a pre-push hook runs \pnpm build:prod\ to ensure the application builds successfully before pushing.

.husky · high confidence

Migrate state management from Vuex to Pinia and add internationalization support

The application's state management has been upgraded from Vuex to Pinia, simplifying the store configuration. Additionally, internationalization (i18n) support has been introduced, allowing the application to display content in multiple languages, starting with English and Indonesian. The router has also been updated to use HTML5 history mode instead of hash-based routing, and a global router guard has been integrated.

src · high confidence

Migrated HTTP client from Axios to Umi-Request

The project's HTTP service layer has been refactored to replace the previous Axios-based implementation with a new service built on Umi-Request. This change introduces a new \createService\ utility and a \commonService\ module that configures the HTTP client using environment variables for the API base URL and timeout. The legacy \Http\ class and its index export have been removed, meaning all API calls now go through the new Umi-Request-based service.

src/services · high confidence

Migrated common store from Vuex to Pinia

The common store implementation has been migrated from the legacy Vuex-based structure to a modern Pinia store. This change replaces the previous multi-file Vuex modules (including state, getters, mutations, and actions) with a single, simplified Pinia store that manages the application title. Users will experience a more streamlined state management approach for global application settings.

src/stores · high confidence

New global typography and Element Plus theme customization

The styles directory now includes a new base typography configuration that applies the 'Source Sans Pro' font family globally. Additionally, Element Plus is customized with a specific set of Tailwind color mappings (primary, success, warning, danger, info) to override the default theme colors. The styles index is updated to import the new base styles, and documentation files have been renamed from readme.md to docs.md across all style subdirectories.

src/styles · high confidence

Updated home route component loading to handle errors

The home page route now wraps the dynamic import of the home view in a Promise that explicitly rejects with an error if the page fails to load, rather than relying on the default behavior of the router's lazy loading.

src/modules/Home · high confidence

Test coverage

Added initial test suite for the Home module

Added a new test file for the Home module, establishing a baseline test suite using Vitest. The file includes a placeholder test to verify the testing environment is correctly configured.

src/modules/Home/tests · high confidence

Dependencies

Upgrade project dependencies and tooling

The project has been upgraded to version 2.1.0 and its dependencies have been significantly updated. Key library upgrades include Vue 3.2.45, Vite 4.0.3, Element Plus 2.2.19, and Pinia. Development tooling has also been modernized with the addition of Vitest for testing, Histoire for storybook-like documentation, and an updated ESLint configuration. The Node.js version has been pinned to 14.19.1 via Volta.

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

Lenses

  • Code Health 74 → 76 (+2.2)
  • Architecture 69 → 69 (+0.0)
  • Maturity 47 → 50 (+2.8)
  • Readiness 45 → 48 (+3.2)
  • Security 56 → 74 (+17.9)
  • Accessibility 43 → 43 (+0.0)

Resolved (62)

  • Change coupling: main.ts ↔ vite.config.ts (src/main.ts)
  • 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)
  • 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)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • …and 42 more

New (78)

  • Coverage not measured — JavaScript/TypeScript suite
  • 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 PARTLY measured — npm pinning read, dependency currency not (the committed lockfile resolved no direct production dependency)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • 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 58 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

logustra/vivu 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 2d6dd0340a2b7ea26c3632a5c2ef5ce02a8381b9 — 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.