Skip to content

Phase 6: Architecture Documentation Publishing Platform

Platform Recommendation: Material for MkDocs

Why Material for MkDocs

Material for MkDocs is the most respected and widely adopted open-source framework for publishing markdown documentation as rich, searchable, professional websites. It is purpose-built for exactly this use case: markdown files in git → comprehensive online documentation.

Adoption Evidence

Metric Material for MkDocs
GitHub Stars 21,000+
PyPI Downloads 2M+ per month
Used By Google Cloud, Microsoft, AWS CDK, FastAPI, Pydantic, Kubernetes, Netflix, Stripe, Cloudflare, HashiCorp, Mozilla, CNCF projects
License MIT (core)
Maintainer Martin Donath (squidfunk) — full-time dedicated maintainer
First Release 2016
Plugin Ecosystem 150+ community plugins

Why Not the Alternatives

Framework Stars Why Not
Docusaurus (Meta) 57K General-purpose (docs + blog + landing page). React dependency. Overkill for pure documentation. Better for product marketing sites.
Hugo 77K General static site generator, not documentation-specific. Requires theme hunting + configuration. Documentation themes lack the polish of Material.
VitePress (Vue) 13K Smaller ecosystem. Vue dependency. Less mature for large documentation sites.
Starlight (Astro) 5K Too young. Limited plugin ecosystem. Unproven at enterprise scale.
GitBook N/A Commercial, not fully open source. Vendor lock-in.
Docsify 27K No static build — requires JavaScript runtime. SEO limitations.

Architecture Documentation Fit

Material for MkDocs is specifically exceptional for architecture documentation:

Feature Architecture Use Case
Admonitions ADR status badges, warning callouts, notes on decisions
Content Tabs Compare service impacts side-by-side, show before/after
Mermaid Diagrams Render C4, sequence, and component diagrams inline from markdown
PlantUML Plugin Render existing .puml files directly in documentation pages
Code Annotations Annotate Java/YAML code samples with inline explanations
Navigation Tabs Map directly to arc42 sections (Introduction, Constraints, Context, etc.)
Built-in Search Full-text search across all ADRs, solution designs, and investigations
Tags Categorize documents by service, ticket, complexity, status
Git Integration Last-updated dates from git history, contributors, revision links
Social Cards Auto-generated link preview cards for sharing docs in Teams/Slack
Versioning mike plugin provides version-selector dropdown for documentation releases
Offline Support Download as PDF or offline HTML bundle

Deployment Target: Azure Static Web Apps

Why Azure Static Web Apps

Feature Value
Cost Free tier available (sufficient for architecture practice docs)
CI/CD Built-in GitHub Actions integration — deploy on push to main
Custom Domain Supported with free SSL/TLS certificates
Authentication Azure AD integration for private documentation (if needed)
Global CDN Automatic global distribution for fast load times
Staging Environments Preview PRs with ephemeral staging URLs
Zero Infrastructure No VMs, containers, or web servers to manage

Architecture

┌──────────────┐     ┌──────────────────┐     ┌───────────────────────┐
│  Git Push    │────>│  GitHub Actions   │────>│  Azure Static Web     │
│  (main)      │     │  - mkdocs build   │     │  Apps                 │
│              │     │  - deploy         │     │  - Global CDN         │
└──────────────┘     └──────────────────┘     │  - Custom Domain      │
                                               │  - Azure AD Auth      │
┌──────────────┐     ┌──────────────────┐     │  - Free SSL           │
│  Git Push    │────>│  GitHub Actions   │     └───────────────────────┘
│  (PR branch) │     │  - mkdocs build   │────>  Staging Preview URL
└──────────────┘     └──────────────────┘

Implementation Plan

Phase 6A: Foundation (Week 1)

Goal: Working local MkDocs site rendering the existing workspace markdown.

# Task Effort Output
1 Install MkDocs + Material theme (pip install mkdocs-material) 15 min Working local toolchain
2 Create mkdocs.yml configuration at repo root 1 hour Site configuration with navigation, theme, and plugins
3 Structure nav: to map repo folders to documentation hierarchy 2 hours Logical navigation reflecting arc42 structure
4 Configure PlantUML plugin for .puml rendering 30 min Diagrams render inline in docs
5 Configure Mermaid for inline diagram support 15 min Mermaid fenced code blocks render as diagrams
6 Add admonition styling for ADR status badges 30 min !!! accepted, !!! proposed, !!! deprecated callouts
7 mkdocs serve — verify all pages render correctly 1 hour Local preview at http://localhost:8000
8 Fix any markdown rendering issues (link paths, image refs) 2 hours All cross-references resolve correctly

Deliverable: mkdocs serve produces a fully navigable local site.

Phase 6B: Azure Deployment (Week 2)

Goal: Automated CI/CD pipeline publishing docs to Azure on every push.

# Task Effort Output
1 Create Azure Static Web App resource (Azure Portal or az cli) 30 min Azure resource provisioned
2 Create .github/workflows/docs-deploy.yml GitHub Actions workflow 1 hour CI/CD pipeline definition
3 Configure deployment token as GitHub secret 15 min AZURE_STATIC_WEB_APPS_API_TOKEN
4 Test push-to-main deployment 30 min Live site accessible at Azure URL
5 Configure custom domain (optional: docs.{domain}) 30 min Custom domain with SSL
6 Configure Azure AD authentication (if private docs) 1 hour Only authenticated users can access
7 Test PR preview environment 30 min PR creates ephemeral staging site

Deliverable: Push to main automatically publishes updated docs to https://{app-name}.azurestaticapps.net.

Phase 6C: Content Enhancement (Week 3)

Goal: Optimize the documentation site for architecture practice consumption.

# Task Effort Output
1 Create landing page (docs/index.md) with project overview 1 hour Professional home page
2 Add tags to all documents (service, ticket, status) 2 hours Filterable tag-based navigation
3 Create architecture decision log page (auto-generated ADR index) 1 hour Sortable ADR list
4 Add git-revision-date-localized plugin for auto "last updated" dates 30 min Every page shows last modified date
5 Add git-committers plugin for author attribution 30 min Contributor avatars on each page
6 Configure social cards for link previews in Teams/Slack 30 min Rich link previews when sharing
7 Add PDF export capability via mkdocs-with-pdf plugin 1 hour Download entire site as PDF
8 Create .pages files for custom folder ordering 1 hour Logical page ordering

Deliverable: Polished, professional documentation site with full-text search, tags, attribution, and PDF export.

Phase 6D: Integration with Architecture Workflow (Week 4)

Goal: Integrate documentation publishing into the continuous architecture workflow.

# Task Effort Output
1 Add MkDocs build validation to PR checks 1 hour PRs that break docs cannot merge
2 Add link-check plugin to CI 30 min Broken cross-references caught automatically
3 Create doc templates for new tickets/ADRs with front matter 1 hour Consistent metadata for tags + search
4 Add CONFLUENCE-PUBLISH marker handling (existing comments in solution designs) 2 hours Automated Confluence sync if needed
5 Document the publishing workflow in the playbooks 1 hour Team knows how to publish
6 Add versioning with mike for documentation releases 2 hours Version selector (e.g., v1.0, v2.0, latest)

Deliverable: Documentation publishing is a seamless part of the architecture workflow — commit markdown, push, site updates automatically.


Configuration Skeleton

mkdocs.yml

site_name: Continuous Architecture Platform
site_url: https://{app-name}.azurestaticapps.net
site_description: Architecture Practice — Solution Designs, ADRs, and Architecture Documentation
repo_url: https://github.com/christopherblaisdell/continuous-architecture-platform-poc
repo_name: continuous-architecture-platform-poc
edit_uri: edit/main/

theme:
  name: material
  palette:
    - scheme: default
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-7
        name: Switch to dark mode
    - scheme: slate
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-4
        name: Switch to light mode
  features:
    - navigation.tabs
    - navigation.tabs.sticky
    - navigation.sections
    - navigation.expand
    - navigation.path
    - navigation.indexes
    - navigation.top
    - search.suggest
    - search.highlight
    - search.share
    - content.code.copy
    - content.code.annotate
    - content.tabs.link
    - toc.follow
  icon:
    repo: fontawesome/brands/github

plugins:
  - search
  - tags
  - git-revision-date-localized:
      enable_creation_date: true
  - git-committers:
      repository: christopherblaisdell/continuous-architecture-platform-poc
      branch: main
  - plantuml:
      puml_url: https://www.plantuml.com/plantuml/
  - minify:
      minify_html: true

markdown_extensions:
  - admonition
  - pymdownx.details
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: !!python/name:pymdownx.superfences.fence_code_format
  - pymdownx.tabbed:
      alternate_style: true
  - pymdownx.highlight:
      anchor_linenums: true
  - pymdownx.inlinehilite
  - pymdownx.snippets
  - pymdownx.critic
  - pymdownx.caret
  - pymdownx.keys
  - pymdownx.mark
  - pymdownx.tilde
  - attr_list
  - md_in_html
  - tables
  - toc:
      permalink: true

nav:
  - Home: index.md
  - Project:
    - README.md
    - Roadmap: roadmap/ROADMAP.md
    - Decisions:
      - ADR-001 AI Toolchain Selection: decisions/ADR-001-ai-toolchain-selection.md
  - Phase 1 - AI Tool Comparison:
    - Overview: phase-1-ai-tool-cost-comparison/AI-TOOL-COST-COMPARISON-PLAN.md
    - Results: phase-1-ai-tool-cost-comparison/outputs/README.md
    - Playbooks:
      - SC-01 Ticket Triage: phase-1-ai-tool-cost-comparison/workspace/playbooks/scenario-01-new-ticket-triage.md
      - SC-02 Solution Design: phase-1-ai-tool-cost-comparison/workspace/playbooks/scenario-02-solution-design.md
      - SC-03 Investigation: phase-1-ai-tool-cost-comparison/workspace/playbooks/scenario-03-investigation-analysis.md
      - SC-04 Architecture Update: phase-1-ai-tool-cost-comparison/workspace/playbooks/scenario-04-architecture-update.md
      - SC-05 Cross-Service: phase-1-ai-tool-cost-comparison/workspace/playbooks/scenario-05-complex-cross-service.md
      - Measurement Protocol: phase-1-ai-tool-cost-comparison/workspace/playbooks/measurement-protocol.md
  - Architecture Standards:
    - arc42: phase-1-ai-tool-cost-comparison/workspace/architecture-standards/arc42/README.md
    - C4 Model: phase-1-ai-tool-cost-comparison/workspace/architecture-standards/c4-model/README.md
    - MADR: phase-1-ai-tool-cost-comparison/workspace/architecture-standards/madr/README.md
    - Quality Model: phase-1-ai-tool-cost-comparison/workspace/architecture-standards/quality-model/README.md
  - NovaTrek Workspace:
    - Tickets:
      - NTK-10001 Elevation Data: phase-1-ai-tool-cost-comparison/workspace/work-items/tickets/_NTK-10001-add-elevation-to-trail-response/NTK-10001-solution-design.md
      - NTK-10002 Category Classification: phase-1-ai-tool-cost-comparison/workspace/work-items/tickets/_NTK-10002-adventure-category-classification/NTK-10002-solution-design.md
      - NTK-10004 Schedule Overwrite Bug: phase-1-ai-tool-cost-comparison/workspace/work-items/tickets/_NTK-10004-guide-schedule-overwrite-bug/NTK-10004-solution-design.md
      - NTK-10005 Wristband RFID: phase-1-ai-tool-cost-comparison/workspace/work-items/tickets/_NTK-10005-wristband-rfid-field/NTK-10005-solution-design.md
  - Research:
    - Context Window Analysis: research/CONTEXT-WINDOW-UTILIZATION-ANALYSIS.md

.github/workflows/docs-deploy.yml

name: Deploy Documentation

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    name: Build and Deploy Docs
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0  # Required for git-revision-date-localized plugin

      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Install dependencies
        run: |
          pip install mkdocs-material \
                      mkdocs-git-revision-date-localized-plugin \
                      mkdocs-git-committers-plugin-2 \
                      mkdocs-minify-plugin \
                      mkdocs-plantuml-plugin \
                      mkdocs-material[imaging]

      - name: Build MkDocs site
        run: mkdocs build --strict

      - name: Deploy to Azure Static Web Apps
        if: github.event_name == 'push'
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          action: upload
          app_location: site
          skip_app_build: true

Cost Estimate

Component Monthly Cost
Azure Static Web Apps (Free tier) $0
Custom Domain SSL $0 (included)
GitHub Actions CI/CD $0 (included in GitHub plan)
Material for MkDocs (MIT core) $0
Material for MkDocs Insiders (optional sponsor) $15/month
Total $0 - $15/month

The Insiders sponsorship ($15/month) unlocks premium features like social cards, privacy plugin, optimized search, and blog support. Not required but recommended for a professional practice site.


Success Criteria

Criterion Target
All existing markdown renders correctly 100% of pages
Diagrams (PlantUML/Mermaid) render inline All diagrams visible
Full-text search works across all documents < 200ms search response
Push-to-main deploys in under 5 minutes < 5 min CI/CD pipeline
PR preview environments work Ephemeral staging URLs generated
Mobile-responsive design Readable on phone/tablet
Lighthouse performance score > 90

Timeline

Week Phase Milestone
Week 1 6A: Foundation Local MkDocs site rendering all markdown
Week 2 6B: Azure Deployment Live site auto-deploying on push
Week 3 6C: Content Enhancement Tags, search, PDF export, attribution
Week 4 6D: Workflow Integration CI validation, versioning, team onboarding

Total effort: ~25-30 hours across 4 weeks (parallelizable with other phases).