Files
pnoker 372d75b0c9 refactor(core): rename find/query/fetch methods to get per crud law
sweep every module to satisfy the new method-name rule, renaming
about 40 methods together with their interface, implementation, test
and cli call sites: store find() lookups become get(), analytics
queryLatest/queryHistory become getLatest/getHistory, sql helper
query() becomes spec()/sql(), jwks fetch() becomes load(), and the
cursor record component queryDigest becomes requestDigest

no behavior changes; full unit suite (5278 tests) and both quality
gates stay green
2026-09-18 09:53:51 +08:00
..

DC3 Web

dc3-web is the Vue and TypeScript management frontend for IoT DC3. It communicates with the backend exclusively through dc3-gateway.

Prerequisites

  • Node.js 22 or newer, as declared by engines in package.json.
  • Corepack enabled.
  • The pnpm version declared by packageManager in package.json.
corepack enable
pnpm install

Use pnpm only. Do not generate npm or Yarn lockfiles. When changing the package-manager version, keep package.json and the Dockerfile toolchain pin aligned.

Develop

pnpm dev

The development server uses the port and API proxy configured by vite.config.ts and src/config/env/. Its defaults are http://localhost:8080 for the UI and http://localhost:8000 for the gateway. The UI can start without the backend, but login and data requests require a running gateway and center services.

Build and verify

pnpm check
pnpm lint:check
pnpm test:guard
pnpm test:ci
pnpm build

Run focused suites with pnpm test:unit, pnpm test:api, pnpm test:component, or pnpm test:views. Browser workflows use pnpm test:e2e; see tests/README.md for the test layers and fixture policy.

Project conventions

  • Vite environment files live under src/config/env/ and use the APP_ prefix.
  • Java 64-bit IDs are represented as strings. The backend emits identifiers as JSON strings on the HTTP contract, so standard JSON parsing is sufficient.
  • Type-only imports must use import type because verbatimModuleSyntax is enabled.
  • API wrapper names mirror backend cardinality: getXxx for one result and listXxx for collections/pages/maps.
  • Every router-guard branch must settle navigation.

Repository-wide architecture, commit, and verification rules are in ../AGENTS.md.