Integrate MkDocs Material to provide enhanced sidebar navigation for documentation at https://skupper.io/docs/ while preserving the existing Transom-based site structure.
- Problem: Transom and MkDocs both want to process files in
input/docs/ - Conflict:
input/docs/index.md(MkDocs) vsinput/docs/index.html.in(Transom) - Transom limitation:
ignored_file_patternsonly matches filenames, not directory paths
skupper-website/
├── doc-input/ # RENAMED: Transom source (main site)
│ ├── index.md
│ ├── main.css
│ ├── commands/
│ ├── concepts/
│ ├── community/
│ ├── examples/
│ ├── releases/
│ ├── resources/
│ ├── start/
│ └── v1/ # V1 docs (preserved)
│ └── docs/
├── input/ # REPURPOSED: MkDocs source directory
│ └── docs/ # MkDocs content (already here!)
│ ├── index.md
│ ├── overview/
│ ├── install/
│ ├── kube-cli/
│ ├── kube-yaml/
│ ├── system-cli/
│ ├── system-yaml/
│ ├── console/
│ ├── troubleshooting/
│ └── api-docs/
├── output/ # Build output
│ ├── index.html # From Transom
│ ├── v1/ # From Transom (preserved)
│ └── docs/ # From MkDocs (overwrites)
└── mkdocs.yml
✅ Minimal changes: MkDocs already expects input/docs/ structure
✅ Clear naming: doc-input = Transom source, input = MkDocs source
✅ No config changes: mkdocs.yml stays as docs_dir: input/docs
✅ V1 preserved: Moves with doc-input/v1/
-
Stage 1 - Transom:
./plano render- Processes
doc-input/→output/ - Generates entire site including placeholder for
/docs/ - V1 docs remain untouched
- Processes
-
Stage 2 - MkDocs:
mkdocs build- Processes
input/docs/→output/docs/ - Overwrites only the
/docs/directory - Adds Material theme with sidebar navigation
- Processes
-
Combined:
./plano render_all- Runs both stages in sequence
- Final output has Transom site + MkDocs docs
# Update input_dir reference
input_dir = "doc-input" # Changed from "input"
@command
def render():
"""Render the site using Transom"""
run(f"transom render {input_dir} output")
@command
def render_docs():
"""Render documentation using MkDocs"""
run("mkdocs build")
@command
def render_all():
"""Render entire site (Transom + MkDocs)"""
render() # Transom first
render_docs() # MkDocs second (overwrites /docs/)# Update any hardcoded "input" references if needed
# Most likely no changes needed as Transom gets input_dir from command# NO CHANGES NEEDED!
docs_dir: input/docs
site_dir: output/docs
use_directory_urls: false-
Rename Transom input directory:
git mv input doc-input
-
Move MkDocs files back to input/docs:
mkdir -p input/docs mv doc-input/docs/* input/docs/ # Remove now-empty doc-input/docs/ rmdir doc-input/docs
-
Update .plano.py:
- Change
input_dirreferences todoc-input - Update
render()command
- Change
-
Update any other references:
- Check
config/transom.pyfor hardcoded paths - Check
.gitignoreif it referencesinput/ - Check GitHub Actions workflow
- Check Netlify config
- Check
-
Test build:
./plano render_all
-
Verify:
- Main site works:
output/index.html - V1 docs preserved:
output/v1/docs/ - V2 docs with sidebar:
output/docs/index.html
- Main site works:
✅ Clean separation: Transom uses doc-input/, MkDocs uses input/
✅ Minimal config changes: mkdocs.yml unchanged
✅ Clear ownership: Each tool has its own source directory
✅ V1 preservation: V1 docs move with Transom content
✅ Sidebar navigation: MkDocs Material provides rich navigation
✅ Brand consistency: Custom theme reuses Skupper header/footer/CSS
✅ Intuitive naming: doc-input clearly indicates Transom source
Move MkDocs to docs/: Would require changing mkdocs.yml and is less intuitive since MkDocs conventionally uses docs/ as the output directory name, not source.
Proceed with renaming input/ → doc-input/ and repurposing input/ for MkDocs. This is the cleanest solution that:
- Minimizes configuration changes
- Clearly separates concerns
- Follows each tool's conventions
- Preserves all existing content
- ✅ Get approval for this plan
- Execute migration (rename directories, update configs)
- Test build locally
- Update CI/CD (GitHub Actions, Netlify)
- Deploy and verify
Status: Awaiting approval
Date: 2026-02-23
Approach: Rename input/ → doc-input/, repurpose input/ for MkDocs