Documentation source for SkyCMS — a multi-tenant ASP.NET Core content management system with four visual editors (WYSIWYG, drag-and-drop page builder, code editor, image editor), multi-cloud storage, pluggable identity providers, and static-site publishing.
Published at: docs.sky-cms.com
The site is organized by audience role so readers find content relevant to their work:
| Folder | Audience | Topics | Description |
|---|---|---|---|
| getting-started/ | Everyone | 3 | What is SkyCMS, key concepts, quick start |
| for-editors/ | Editors, Authors | 30 | Content creation, all four editors, blogging, publishing, collaboration, file management |
| for-site-builders/ | Site Builders | 7 | Layouts, templates, pages, widgets, style guides |
| for-developers/ | Developers | 18 | Architecture, APIs, multi-tenancy, EF Core cross-provider, middleware pipeline |
| installation/ | Administrators | 14 | Setup wizard (6 steps), Azure/AWS/Docker/Cloudflare deployment, local dev |
| configuration/ | Administrators | 7+ | Database, storage, CDN, email providers, multi-tenancy, proxy settings |
| deployment/ | DevOps | 8 | Cloud hosting, CI/CD pipelines, Docker, demo deployment, licensing |
| reference/ | All | 9 | Feature catalog, changelog, FAQ, glossary, troubleshooting, templates |
The Feature Catalog provides a comprehensive inventory of all 56 documented features across 8 categories, with jump-to navigation and cross-reference links to the relevant documentation pages.
- Getting Started — Quick Start
- Installation Overview
- Feature Catalog
- FAQ
- Troubleshooting
- Glossary
- Changelog
For AI assistants, retrieval systems, or prompt grounding, start with AI Context Pack. It summarizes canonical SkyCMS terminology, disambiguation rules, and the most authoritative docs to consult next.
The MkDocs configuration lives in the parent SkyCMS repo at mkdocs.yml, which references this content via docs_dir.
- Python 3.8+
- pip
pip install mkdocs-materialFrom the SkyCMS repo root (not this repo):
cd /path/to/SkyCMS
mkdocs serveThen open http://127.0.0.1:8000 in your browser.
Note: The
mkdocs.ymlnav references a legacyDocs/folder structure. Some paths in the nav may differ from the folder layout in this repo. See Deployment for how the published site is built.
Place new documentation based on the target audience:
| If the reader is a... | Put it in... |
|---|---|
| Content editor or author | for-editors/ |
| Site builder working with layouts/templates | for-site-builders/ |
| Developer extending or integrating SkyCMS | for-developers/ |
| Administrator installing or configuring | installation/ or configuration/ |
| DevOps engineer deploying or managing CI/CD | deployment/ |
Use YAML frontmatter at the top of every new or materially revised documentation file. This gives MkDocs, search, and AI ingestion a stable, parseable metadata block.
Canonical schema reference:
---
canonical_title: Page Builder
description: Visual drag-and-drop composition in SkyCMS using GrapesJS.
doc_type: How-to
product_area: editing
user_intent: build-pages-with-page-builder
audience:
- Content Editors
- Site Builders
difficulty: intermediate
version: current
status: active
owner: docs-platform
last_reviewed: 2026-04-27
entities:
- page-builder
- layers-panel
keywords:
- grapesjs
- drag and drop
- visual editor
---| Field | Purpose |
|---|---|
canonical_title |
Canonical page title used by search and AI context extraction |
description |
One-sentence summary for search snippets and retrieval |
audience |
Intended readers, as a YAML list |
doc_type |
How-to, Explanation, Reference, or Tutorial |
product_area |
Product surface such as editing, deployment, configuration, architecture |
user_intent |
Primary reader goal as a concise slug |
difficulty |
beginner, intermediate, or advanced |
version |
Version scope such as current or a release range |
status |
draft, active, deprecated, or archived |
owner |
Team or individual accountable for page correctness |
last_reviewed |
Review date in yyyy-mm-dd format |
entities |
Canonical SkyCMS concepts covered by the page |
keywords |
Synonyms, aliases, and common search phrases |
Optional fields may be added when helpful, such as source, aliases, related_topics, or tags.
Legacy HTML comments may be retained for internal provenance, but they should not replace YAML frontmatter on new or substantially updated pages.
Before opening or updating a PR, run:
./.tmp-link-check.ps1
./scripts/validate-doc-metadata.ps1CI enforces these checks on changed Markdown files via the Docs Quality Gates workflow.
- Use lowercase with hyphens:
url-management.md,blog-architecture.md - Use
index.mdfor section landing pages - Use
overview.mdfor high-level introductions to a topic area
When adding or updating documentation for a SkyCMS feature, also update the corresponding section in the Feature Catalog and check the Documentation Gaps tracker.
- Be role-focused — Write for the audience specified in the frontmatter. Editors don't need implementation details; developers don't need UI walkthroughs.
- Link, don't duplicate — Reference existing pages rather than repeating content. Use the feature catalog as a cross-reference hub.
- Use tables for structured data — Configuration options, parameters, comparison matrices.
- Include code examples — Use fenced code blocks with language identifiers (
csharp,bash,powershell,yaml,json). - Add "See Also" sections — End pages with links to related documentation.
-
mkdocs.ymluses MkDocs Material/PyMdown custom YAML tags for emoji configuration:!!python/name:material.extensions.emoji.twemoji!!python/name:material.extensions.emoji.to_svg
-
Some generic YAML validators report unresolved-tag warnings for these lines.
-
This is expected and does not indicate a build or runtime issue for MkDocs.
-
Workspace mitigation is configured in
.vscode/settings.jsonusingyaml.customTags.
- Mermaid rendering uses vendored local assets, not a CDN.
- Runtime script path:
assets/javascripts/vendor/mermaid.min.js - Initializer path:
assets/javascripts/mermaid-init.js mkdocs.ymlreferences these local files viaextra_javascript.
- Prefer one primary diagram per page section, with one optional secondary diagram when it explains a materially different flow.
- Use the shared theme init block already established in the docs so diagrams stay visually consistent.
- Prefer
flowchartfor topology, ownership, or decision maps;sequenceDiagramfor request, event, or collaboration timelines;stateDiagram-v2for lifecycle behavior. - Indent Mermaid blocks with spaces, not tabs, to avoid markdownlint
MD010failures. - Add or update entries in for-developers/architecture-diagram-catalog.md when a Mermaid diagram becomes a durable navigation aid.
- Validate changes with diagnostics and
./.tmp-link-check.ps1after editing pages that add new anchors or catalog links.
Example theme preamble:
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#eef6ff","primaryTextColor":"#0f172a","primaryBorderColor":"#2563eb","lineColor":"#334155","secondaryColor":"#f8fafc","tertiaryColor":"#ffffff","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart LR
Start[Author diagram] --> Catalog[Update diagram catalog if needed]
Documentation is automatically deployed when changes are pushed to the Docs/** path in the SkyCMS repo:
- The
deploy-docs-cloudflare.ymlGitHub Actions workflow triggers - MkDocs builds the static site
- Pre-deployment link validation runs
- Built files are uploaded to Cloudflare R2
- Post-deployment link validation confirms the live site
See CI/CD Pipelines for full pipeline documentation.