Three independent MkDocs sites. Each is its own uv workspace package and has its own mkdocs.yml, pyproject.toml, and docs/ content tree.
| Subproject | Package name | Site name | CI build job | CI deploy workflow |
|---|---|---|---|---|
docs/users/ |
aliencommons-users-docs |
AlienCommons User Guide | docs-users |
(none) |
docs/contributors/ |
aliencommons-contributors-docs |
AlienCommons Docs | docs-contributors |
.github/workflows/contributors-docs-deploy.yml |
docs/alienmark/ |
aliencommons-alienmark-docs |
AlienMark Docs | docs-alienmark |
.github/workflows/alienmark-docs-deploy.yml |
- MkDocs
1.6.1, Material for MkDocs9.7.6,mkdocs-static-i18n1.3.1(exact pins, Python>=3.14). mkdocs-static-i18nconfigured withdocs_structure: suffix, localesen(default,build: true) andzh(build: true).- Theme: Material, default language
en. Each locale can supplynav_translations.
Because docs_structure: suffix is on, every translatable page exists as two files:
docs/<site>/docs/<page>.en.md
docs/<site>/docs/<page>.zh.md
mkdocs.yml nav entries use the bare stem (e.g. index.md, syntax.md, product/roles.md). The plugin resolves the per-locale file at build time.
- Update both
*.en.mdand*.zh.mdtogether. They must be equivalent in meaning; wording need not be literal. - Keep nav in sync. Adding, moving, or removing a page requires updating that site's
mkdocs.ymlnav:block, in both languages ifnav_translationsare present. - Don't invent. No features, commands, or deployment steps that don't exist in the project. Cross-check against source (
apps/,packages/) when documenting behavior. - Match the existing page style: heading depth, tone, terminology.
- Don't commit generated
site/output unless the task is explicitly about it. - Small, focused edits; no broad rewrites.
Run inside the relevant docs/<site>/ directory.
# Live preview
uv run mkdocs serve
# Strict build (matches CI; fails on warnings, missing pages, broken links)
uv run mkdocs build --strictCI runs each docs job from inside docs/<name>/ via uv sync --project ../.. --locked --package aliencommons-<name>-docs then mkdocs build --strict. Run the same --strict build locally before pushing.
- AlienMark syntax docs (
docs/alienmark/docs/syntax.*.md) must stay in sync with the parser's actual supported subset inpackages/alienmark/. When you change supported syntax, update the parser, its tests, and these docs together. - Contributor docs reference the backend/frontend/architecture — keep them consistent with the code in
apps/backend/andapps/frontend/.
# From docs/<site>/ — strict build matches the CI docs-* jobs
uv run mkdocs build --strictIf the build warns, treat it as a failure — CI runs with --strict.