Technical documentation for VergeOS hyperconverged infrastructure (HCI) platform.
Live site: https://docs.verge.io
- Framework: MkDocs with Material theme (mkdocs-material)
- Language: Markdown
- Plugins: mkdocs-glightbox (image lightbox), blog plugin
- Deployment: GitHub Pages via GitHub Actions
docs/ # All documentation content
├── index.md # Homepage
├── implementation-guide/ # Installation and setup guides
├── product-guide/ # Feature documentation by category
│ ├── auth/ # Authentication (Azure AD, Google, MFA)
│ ├── backup-dr/ # Snapshots, syncs, disaster recovery
│ ├── nas/ # Network-attached storage
│ ├── networks/ # Networking configuration
│ ├── private-ai/ # AI features
│ ├── storage/ # vSAN, tiers, Fibre Channel
│ ├── system/ # System config, nodes, clusters
│ ├── tenants/ # Multi-tenancy
│ ├── virtual-machines/ # VM management
│ └── vpn/ # IPSec, WireGuard
├── knowledge-base/ # Blog-style articles and how-tos
│ └── posts/ # Individual KB articles
├── reference-architecture/ # Deployment patterns
├── release-notes/ # Version history
├── assets/ # Images, logos, SVGs
├── stylesheets/ # Custom CSS
├── javascripts/ # Custom JS
└── overrides/ # MkDocs theme overrides
mkdocs.yml # Site configuration and navigation
# Setup
python -m venv venv
source venv/bin/activate # macOS/Linux
pip install -r requirements.txt
# Development
mkdocs serve # Local dev server at http://127.0.0.1:8000
# Build
mkdocs build --site-dir ./_site- Product Guide: Feature documentation organized by category
- Knowledge Base: Step-by-step articles in
docs/knowledge-base/posts/ - Implementation Guide: Installation and deployment procedures
All documentation files require YAML frontmatter. CI enforces this on every PR.
At minimum, title and description are required:
---
title: "Page Title"
description: "Brief description of the page content."
semantic_keywords:
- "natural language search phrase"
use_cases:
- use_case_identifier
tags:
- tag1
- tag2
categories:
- Category Name
---semantic_keywords— natural-language phrases for AI/vector searchuse_cases— machine-readable identifiers for intent matchingtags/categories— topic filtering and discovery
KB articles in docs/knowledge-base/posts/ have additional required fields (slug, date, tags, categories):
---
title: [Article Title]
slug: [url-friendly-title]
description: [Brief description]
author: [Author Name]
draft: false
date: YYYY-MM-DD
tags: [tag1, tag2, tag3]
categories:
- [Category]
editor: markdown
dateCreated: YYYY-MM-DD
---- Use friendly, collaborative tone ("we" not "I")
- Keep guides focused on single topics (15-30 min read time)
- Each step should show tangible progress
- Avoid external links mid-guide (only in first/last sections)
- Separate commands from their output in code blocks
MkDocs Material admonitions are available:
!!! note "Title"
Content here
!!! tip "Pro Tip"
Helpful advice
!!! warning "Caution"
Important warnings
??? note "Collapsible"
Hidden by defaultSupported types: note, abstract, info, tip, success, question, warning, failure, danger, example, bug, quote
- Store in
docs/assets/ - Use relative paths:
 - Glightbox plugin enables click-to-zoom
Site navigation is defined in mkdocs.yml under nav:. The structure mirrors the documentation categories.
- Trigger: Push to
mainbranch - Build:
mkdocs buildwith Material Insiders theme - Deploy: GitHub Pages via
deploy-pagesaction - PR Checks: Frontmatter validation, widget link validation, internal link checking
- MkDocs Material Documentation
- Style guide:
docs/how-to-write-a-verge-guide.md - KB template:
docs/knowledge-base/template.md