logustra/vivu
49.5
Weak · 21 September 2026
1.1k
lines of production code
TypeScript
with JavaScript
4
measurements over time
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.