Rendering and metadata
When you publish a document, OpenDocs stores both the raw Markdown and a rendered HTML representation.
Markdown features
The current rendering pipeline supports:
- GitHub Flavored Markdown
- tables
- task lists
- code fences with syntax highlighting
- heading anchors
- table of contents extraction
Title behavior
OpenDocs resolves the title in this order:
- frontmatter
title - first
# Heading - a fallback untitled state
The CLI also separately detects the first # Heading so it can show a sensible
display title locally before the API response comes back.
Summary behavior
OpenDocs derives a summary from the first non-empty line after the main heading. That summary is used in list views and metadata contexts.
Tags
- Tags are sent as an array in the API.
- The CLI accepts them as a comma-separated string.
- Stored tags are normalized to lowercase.
Private blocks
OpenDocs strips fenced private blocks before rendering:
```private
Do not publish this section.
```
That lets you keep internal notes in the source file while omitting them from the published page.
Safe rendering
Rendered output is sanitized before it is served. OpenDocs is intentionally focused on a calm reading experience rather than arbitrary embedded behavior.
Reader experience
The current reader emphasizes:
- clean typography
- mobile-friendly layout
- heading anchors
- stable URLs
That matches the core product promise: write anywhere, publish once, read comfortably anywhere.