Skip to content

ADR-0002 Client-Side Diagram Rendering

Accepted

The documentation site requires diagrams to explain architecture and security postures. Installing native binaries (e.g., D2 CLI) in Docker complicates the toolchain and may not be compatible with Cloudflare Pages.

  • Render Mermaid and D2 diagrams client-side using their JavaScript/WASM bundles.
  • Do not introduce build-time diagram generation or Docker-installed binaries.
  • Keeps Docker image minimal and fast to rebuild.
  • Aligns with Cloudflare Pages static hosting capabilities.
  • Simplifies developer onboarding and avoids cross-platform compilation issues.
  • Diagrams rely on client JavaScript; printing and accessibility require periodic review.
  • Runtime rendering adds minor client-side processing time.
  • Build artifacts remain lightweight, but screenshots or PDFs require manual workflow.
  • Server-side rendering or pre-generated SVGs if accessibility requirements demand it.
  • Possible caching strategies if diagram count grows significantly.
  1. Maintain Mermaid and D2 integrations configured in astro.config.mjs.
  2. Store diagrams as MDX pages under apps/docs/src/content/docs/diagrams.
  3. Validate diagrams locally using the Docker environment and the dev server.
  • pnpm build:docs succeeds without requiring native binaries.
  • Deployed docs render diagrams correctly in modern browsers.
  • Accessibility reviews confirm diagrams have appropriate textual context.