Design gen

design-gen — KDS site generator

  • *rea:*Developer Tools
  • *ath:*tools/design-gen
  • *ind:*Go + templ + HTMX static-site generator behind kds.koder.dev

Role in the stack

design-gen is the canonical sourcetosite pipeline for the *oder Design System (KDS)* It walks the Stack-level specspoliciesRFCs plus locale strings and emits the multi-locale kds.koder.dev site, machinereadable APIs (JSON catalog + tokens), and languagebound token exports consumed by every Koder UI surface (Flutter koder_kit, web koder_web_kit, Rust UI [planned], Kotlin/Swift mobile bindings).

The site is the *ead*half of KDS; the specs in meta/docs/stack/specs/ are the *rite*half. design-gen has no state of its own — it's a pure function from specs+presets to rendered output.

What it generates

Artifact Path in dist/ Consumed by
Localized HTML pages <locale>/<facet>/<slug>/index.html Browser visitors via kds.koder.dev
Catalog index api/v1/index.json LSP, Figma sync, AI agents, internal tools
Token manifest api/v1/tokens.json koderdesignlsp (live, 24h TTL)
Search index api/v1/search.json Site client-side search
Token bindings tokens/tokens.{css,scss,json,dart,d.ts,kt,swift} koderkit, koderweb_kit, mobile, generic
OG images <locale>/<facet>/<slug>/og-image.png Social previews (chromedp-rendered)
Sitemaps sitemap.xml, robots.txt Crawlers (env-aware noindex per policies/environments.kmd)
AI discovery llms.txt, llms-full.txt Claude, Copilot, Gemini (llmstxt.org standard)
Feeds feed.xml RSS readers, change-watchers
PWA sw.js, manifest.json Service worker for offline reads
Embed manifest embeds/manifest.json Flutter Web widget bundles

Pipeline

  meta/docs/stack/specs*.kmd       i18n/{en-US,pt-BR,es-ES}.json
                |                                   |
                +-------> design-gen ---------------+
                                |
                                v
  internal/spec/walk.go      classify by frontmatter `kind:`
                                |
                                v
  internal/kinds/<kind>.go   per-kind renderer (component, pattern, theme, ...)
                                |
                                v
  internal/render/render.go  dispatch + parallel render
                                |
                                v
  dist/<locale>/<facet>/<slug>/index.html  +  dist/api/v1
*.kmd` — normative contracts (components,
  patterns, themes, app-layout, motion, voice, fonts, accessibility,
  i18n, ai-ui, errors, signing, ...)
- `meta/docs/stack/policies*.kmd` — behavioral policies
- `meta/docs/stack/rfcs*.kmd` — ratified RFCs (design-RFC-001…008)
- `tools/design-gen/i18n/{en-US,pt-BR,es-ES}.json` — locale strings
  (~1.5K keys per locale)
- `tools/design-gen/assets/css/{base.css,presets.css}` — visual
  baseline + 44 ratified Verge/UI-style presets
- `tools/design-gen/assets/fonts/` — self-hosted Inter + JetBrains
  Mono WOFF2 (per `specs/fonts/typography.kmd`)

## Outputs

See "What it generates" table above.

## Deploy

- **Production:** `kds.koder.dev` (HTTP/3 + QUIC, no auth)
  on Koder Jet vhost at s.khost1 (`/var/www/kds-prd`)
- **Staging:** `stg.kds.koder.dev` (auth-gated, noindex per
  `policies/environments.kmd`)
- **Legacy redirect:** `design.koder.dev` → 301 to `kds.koder.dev`
  (post-rename per `projects/koder-stack#127`)
- **Trigger:** Manual via `deploy/deploy.sh PRD_CONFIRMED=1`; CI auto
  via `.gitea/workflows/design-*` workflows; spec-change webhook
  planned (#116)

## Primary couplings

| Consumer | Relationship |
|---|---|
| `engines/sdk/koder_kit` | Vendors `dist/tokens/tokens.dart` into `lib/src/motion/motion_tokens.dart`; deep-links from widget docstrings (#064) |
| `engines/sdk/koder_web_kit` | Vendors `dist/tokens/tokens.css` into `assets/css/` |
| `engines/sdk/koder-design-lsp` | Fetches live `kds.koder.dev/api/v1/tokens.json` with 24h TTL cache for editor hover + autocomplete |
| Figma sync (project tracker) | Pulls `dist/tokens/tokens.json` snapshot per deploy |
| AI agents (Claude/Copilot/Gemini) | Consume `kds.koder.dev/llms.txt` + `/llms-full.txt` for context; MCP server planned (#117) |
| `infra/net/jet` | Serves the vhost; vhost config in `tools/design-gen/deploy

Source: ../home/koder/dev/koder/meta/docs/stack/modules/design-gen.md