Files
hanzo-dev 0a67ea90e5 kms: finish the web-UI API surface — 16 swarm-built areas on ZapDB + e2e
CTO swarm implemented the remaining ~80 SPA API groups across 16 areas, each a
cmd/kms/api_<area>.go on ZapDB (no Postgres/Redis/Node/Infisical), wired into
main.go (19 register funcs total):
  identities, org-members/roles/billing, groups/scim, api-keys/service-tokens,
  secret-meta (tags/imports/snapshots/reminders), dynamic-secrets/rotations,
  secret-syncs/app-connections/integrations, PKI (CA/certs/templates), SSH,
  PAM, AI-MCP, KMS-CMEK/KMIP, approvals, audit/scanning/webhooks, auth-config
  (sso/oidc/ldap/mfa/totp), misc (gateways/relays/rate-limit/templates/...).
Real CRUD where simple; graceful empty-list responses + persisted configs for
deep-semantic surfaces (PKI issuance, SSH signing, KMIP, dynamic leasing) —
noted for follow-up crypto wiring.

Integrate: fixed two Go 1.22 ServeMux conflict panics (groups dup; org-identity
literal-vs-wildcard moved to /v1/org-identities) + aligned 3 SPA hook files;
added TestAllRegisterNoDuplicateRoutes regression (registers all 19 on one mux).

Verified: go build (CGO/sqlcipher) + vet + go test green (Core/Project/Secrets/
Identity flows + no-dup-routes). Playwright e2e (frontend/e2e) green: API
bootstrap+auth+secrets round-trip, SPA renders, auth surface, browser first-run
signup → authenticated. cmd/kms/web embed is build output (gitignored).
2026-06-28 01:05:47 -07:00
..

React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

  • Configure the top-level parserOptions property like this:
export default tseslint.config({
  languageOptions: {
    // other options...
    parserOptions: {
      project: ['./tsconfig.node.json', './tsconfig.app.json'],
      tsconfigRootDir: import.meta.dirname,
    },
  },
})
  • Replace tseslint.configs.recommended to tseslint.configs.recommendedTypeChecked or tseslint.configs.strictTypeChecked
  • Optionally add ...tseslint.configs.stylisticTypeChecked
  • Install eslint-plugin-react and update the config:
// eslint.config.js
import react from 'eslint-plugin-react'

export default tseslint.config({
  // Set the react version
  settings: { react: { version: '18.3' } },
  plugins: {
    // Add the react plugin
    react,
  },
  rules: {
    // other rules...
    // Enable its recommended rules
    ...react.configs.recommended.rules,
    ...react.configs['jsx-runtime'].rules,
  },
})