anvaka/city-roads
35.6
Weak · 2 October 2026
3.9k
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is a web-based mapping application built on Vue 3 and Vite, designed for visualizing geospatial data through a multi-layer rendering engine. It allows users to customize individual map layers with granular color controls, manage draggable labels, and export views as vector or raster images. The platform supports flexible data querying with custom projections and bounding box searches, optimized for mobile interaction and efficient data caching.
Behavioural changes
Major refactoring of the rendering engine and data loading architecture
The core library has been significantly restructured to support a multi-layer rendering system and more flexible data queries. The previous single-layer scene model is replaced by a GridLayer system that allows multiple independent layers, each with its own color and line width settings, and the ability to hide layers without removing them. Data loading is now handled by a new LoadOptions and Query architecture that supports custom projections, bounding box searches, and raw query templates. The scene API exposes methods to manage these layers, set global colors, and export scenes to SVG or PNG, while internal modules like Grid and Progress have been updated to support these new capabilities.
src/lib · high confidence
Migrate to Vue 3 and enable per-layer color customization with SVG export
The application has been upgraded from Vue 2 to Vue 3, updating the initialization logic in main.js and component imports. This release introduces granular color controls, allowing users to customize the colors of individual map layers via the settings panel rather than applying a single global color. Additionally, users can now export the current view as a vector image (.svg) alongside the existing raster (.png) option. The app also features draggable labels and overlays, improved touch handling for mobile devices, and a switch to Cloudfront for data caching.
src · high confidence
Migrated components to Vue 3 composition and directive APIs
The components in this directory have been updated to be compatible with Vue 3. This includes replacing the Vue 2 \value\ prop and \input\ event with the Vue 3 \modelValue\ prop and \update:modelValue\ event (seen in \ColorPicker.vue\ and \EditableLabel.vue\), swapping the \beforeDestroy\ lifecycle hook for \beforeUnmount\ (\FindPlace.vue\), and updating the \v-click-outside\ directive to use the new \created\, \updated\, and \unmounted\ hooks instead of the deprecated \bind\, \update\, and \unbind\ hooks (\clickOutside.js\). Additionally, \ColorPicker.vue\ now imports a local \Sketch.vue\ component from the new \vue3-color\ directory rather than the external \vue-color\ package.
src/components · high confidence
Migrated to Vue 3 and Vite build tooling
The application has been upgraded from Vue 2 to Vue 3, accompanied by a migration from the legacy Vue CLI build system to Vite. This change is evidenced by the removal of older configuration files (\.babelrc\, \.eslintrc.js\, \.postcssrc.js\) and the introduction of \vite.config.js\ and a Vue 3-specific ESLint configuration. Additionally, the HTML entry point was updated to use Vite's module-based script loading (\type="module"\) and the root DOM container was renamed from \\#app\ to \\#host\ to align with the new framework setup.
(repo-wide) · high confidence
Removal of legacy Webpack 1.x configuration files
The project has removed the legacy configuration files \config/dev.env.js\, \config/index.js\, and \config/prod.env.js\. These files previously managed development and production environment variables and Webpack 1.x-specific settings such as the dev server port, proxy table, and source map options. Their deletion indicates a migration away from the older Webpack template structure, likely requiring users to rely on environment variables or a new configuration system for build and development settings.
config · high confidence
Removed legacy Webpack 3 build configuration
The project's Webpack 3 build scripts have been removed, including the production and development configuration files (webpack.prod.conf.js, webpack.dev.conf.js), base configuration, and utility modules. This change eliminates the manual build orchestration and legacy loader setup previously handled by these files.
build · 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 35 → 36 (+1.1)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 59 → 59 (+0.1)
- Architecture 100 → 100 (+0.1)
- Maturity 44 → 44 (+0.0)
- Readiness 18 → 20 (+2.1)
- Security 80 → 82 (+1.9)
- Accessibility 39 → 39 (+0.0)
Resolved (3)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (6)
- Outdated (npm): d3-geo
- Outdated (npm): ngraph.events
- Outdated (npm): pbf
- Outdated (npm): tinycolor2
- Outdated (npm): vue
- Outdated (npm): w-gl
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
anvaka/city-roads 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 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0d89417bb942b34fa87775897cc8cf8437d17b79 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.