# Human-Facing Documentation UX Specification ## 1. Information Architecture (Directory Structure) The documentation should follow the Diataxis framework but be organized in a way that aligns with a developer's mental model, starting from a high-level overview and allowing for deep dives into specific domains. ```text docs/ ├── index.md # Landing page (High-level architecture & entry points) ├── architecture/ # Progressive Disclosure: High-level concepts │ ├── index.md │ ├── system-context.md # C4 Context / System overview │ └── data-flow.md # Mermaid diagrams of data movement ├── tutorials/ # Learning-oriented (Step-by-step guides for onboarding) │ ├── index.md │ └── local-setup.md ├── how-to/ # Problem-oriented (Recipes for specific tasks) │ ├── index.md │ ├── deploy-new-service.md │ └── debug-helm-chart.md ├── explanation/ # Understanding-oriented (Why things are the way they are) │ ├── index.md │ └── decisions/ # ADRs (Architecture Decision Records) └── reference/ # Information-oriented (Auto-generated deep dives) ├── index.md ├── helm-charts/ # Helm value schemas and usage └── terraform/ # Module inputs/outputs and resources ``` ## 2. Visual Hierarchy To prevent the documentation from feeling like a dense text dump, we must use visual elements to create a clear hierarchy and break up the content. * **Headers:** Use `H1` (`#`) strictly for the document title. Use `H2` (`##`) for major sections and `H3` (`###`) for subsections. Do not go deeper than `H4`. * **Mermaid Diagrams:** Use diagrams early in `architecture` and `explanation` documents. Visuals should precede dense text to set the context. * **Callouts/Admonitions:** Use blockquotes or specialized markdown extensions (like GitHub's alert syntax) for critical information to draw the eye. * `> [!NOTE]` for general tips. * `> [!WARNING]` for destructive actions or important caveats. * `> [!TIP]` for best practices. * **Tables:** Use tables strictly for structured data, such as environment variables, API parameters, or Helm chart values. Do not use tables for layout. * **Code Blocks:** Always specify the language for syntax highlighting (e.g., `bash`, `yaml`, `hcl`). Keep code blocks concise; link to the actual source file if the snippet exceeds 30 lines. ## 3. Navigation Navigation must be explicit and prevent the user from hitting "dead ends." * **Breadcrumbs:** Every page (except the root `index.md`) should begin with a breadcrumb trail back to the root and its parent category. * *Example:* `[Home](../index.md) > [Reference](./index.md) > Helm Charts` * **Table of Contents (TOC):** Any document longer than two screens of text must include a generated TOC immediately following the title. * **Next Steps/See Also:** Every document must end with a "Related Links" or "Next Steps" section. For example, a "How-To" on deploying a service should link to the "Reference" for the specific Helm chart used. * **Index Pages:** Every directory must contain an `index.md` that lists and briefly describes all documents within that directory. It serves as the local "table of contents." ## 4. Progressive Disclosure The documentation must cater to both the new hire needing a high-level overview and the senior engineer debugging a specific Terraform state. 1. **Level 1: The Landing Page (`docs/index.md`)** * Goal: Orient the user. * Content: A brief summary of the monorepo's purpose, a high-level Mermaid C4 Context diagram, and prominent links to the four Diataxis quadrants. 2. **Level 2: The Domain Overview (`architecture/index.md`)** * Goal: Explain how the pieces fit together. * Content: System architecture diagrams, data flow descriptions, and links to the underlying infrastructure components. 3. **Level 3: Component Deep Dive (e.g., `reference/helm-charts/my-service.md`)** * Goal: Provide exhaustive detail for implementation. * Content: Auto-generated tables of values, specific configurations, and links to the actual source code. **The Golden Rule:** Never show Level 3 information on a Level 1 or 2 page. Provide summaries and clear links to drill down into the specifics.