Публікація документації
DocPlatform може подавати вашу документацію як публічний вебсайт — із бічною навігацією, підсвічуванням синтаксису та SEO метаданими. Окремий генератор статичних сайтів не потрібен.
Як працює публікація
Опублікована документація подається за адресою /p/{workspace-slug}/{page-path}:
http://localhost:3000/p/my-docs/ → docs/index.md
http://localhost:3000/p/my-docs/quickstart → docs/quickstart.md
http://localhost:3000/p/my-docs/api/auth → docs/api/auth.md
Сторінки рендеряться з Markdown в HTML при запиті за допомогою goldmark (сумісний із CommonMark) з підсвічуванням синтаксису Chroma для блоків коду.
Життєвий цикл статусу сторінки
Сторінки мають поле status, що контролює їх видимість:
| Статус | У редакторі | На опублікованому сайті | У пошуку |
|---|---|---|---|
draft (за замовчуванням) |
Видимий | Прихований | Видимий лише для учасників |
published |
Видимий | Видимий | Видимий відповідно до правил доступу |
archived |
Видимий (затемнений) | Прихований | Прихований |
Встановіть статус у frontmatter:
---
title: My Page
status: published # draft, published, or archived
publish: true # shorthand — equivalent to status: published
---
Скорочення publish: true та status: published еквівалентні. Використовуйте те, що вам більше подобається.
Увімкнення публікації
Для окремої сторінки
Встановіть published: true у frontmatter сторінки:
---
title: API Authentication
description: How to authenticate with the API.
published: true
---
Або перемкніть перемикач Published у формі frontmatter веб-редактора.
За замовчуванням на рівні робочого простору
Встановіть значення за замовчуванням на рівні робочого простору, щоб нові сторінки публікувалися автоматично:
# .docplatform/config.yaml
publishing:
default_published: true
require_explicit_unpublish: false
Функції опублікованого сайту
Навігація
Опублікований сайт генерує бічну навігацію з вашої ієрархії сторінок. Порядок відповідає бічній панелі у веб-редакторі.
Щоб налаштувати порядок навігації, змініть секцію navigation у конфігурації робочого простору:
# .docplatform/config.yaml
navigation:
- title: "Getting Started"
path: "getting-started/index.md"
children:
- title: "Installation"
path: "getting-started/installation.md"
- title: "Quickstart"
path: "getting-started/quickstart.md"
Підсвічування синтаксису
Блоки коду підсвічуються за допомогою Chroma (goldmark-highlighting, тема Dracula). Підтримується понад 200 мов.
Вкажіть мову після відкриваючих потрійних зворотних лапок:
```python
def hello(name: str) -> str:
return f"Hello, {name}!"
```
SEO
DocPlatform автоматично генерує SEO метадані з frontmatter сторінки:
| Тег | Джерело |
|---|---|
<title> |
Frontmatter title |
<meta name="description"> |
Frontmatter description |
<meta property="og:title"> |
Frontmatter title |
<meta property="og:description"> |
Frontmatter description |
<link rel="canonical"> |
Генерується зі шляху сторінки |
sitemap.xml |
Автоматично генерується з усіх опублікованих сторінок |
robots.txt |
Автоматично генерується |
Контроль доступу
За замовчуванням опублікована документація є публічною — вхід не потрібен. Будь-хто з URL може переглядати її.
Щоб обмежити весь опублікований сайт лише для учасників робочого простору, встановіть PUBLISH_REQUIRE_AUTH:
# .env
PUBLISH_REQUIRE_AUTH=true
Коли увімкнено:
- Відвідувачі, що не увійшли, перенаправляються на
/#/login?next=<url> - Після входу вони повертаються на запитану сторінку
- Будь-який учасник робочого простору (будь-яка роль) може переглядати — навіть Viewer
- Неучасники, що входять, все одно перенаправляються
Перезапустіть сервер, щоб ця зміна набула чинності. Перебудова не потрібна.
Контроль доступу на рівні сторінки (обмеження окремих сторінок для конкретних ролей) заплановано для майбутнього релізу. У v0.5 контроль доступу працює за принципом все-або-нічого на рівні сайту через
PUBLISH_REQUIRE_AUTH.
Вбудовані компоненти
Опублікована документація підтримує 7 користувацьких компонентів, які відображаються як багаті інтерактивні елементи:
Callout
:::callout{type="info"}
This is an informational callout.
:::
:::callout{type="warning"}
Be careful with this operation.
:::
:::callout{type="danger"}
This action is irreversible.
:::
:::callout{type="tip"}
Pro tip: use keyboard shortcuts for faster editing.
:::
Типи: info, warning, danger, tip, note
Tabs
:::tabs
::tab{label="npm"}
npm install docplatform
::
::tab{label="yarn"}
yarn add docplatform
::
::tab{label="pnpm"}
pnpm add docplatform
::
:::
Accordion
:::accordion{title="How does sync work?"}
DocPlatform uses a hybrid git engine that combines go-git for small repositories
with native git CLI for large ones. Changes are synced via polling or webhooks.
:::
Cards
:::cards
::card{title="Getting Started" link="/getting-started"}
Install and configure DocPlatform in under 10 minutes.
::
::card{title="User Guide" link="/guides/editor"}
Learn the web editor, git sync, and publishing features.
::
:::
Steps
:::steps
::step{title="Install"}
Download the binary or pull the Docker image.
::
::step{title="Initialize"}
Run `docplatform init` to create your workspace.
::
::step{title="Start"}
Run `docplatform serve` and open the browser.
::
:::
API Block
:::api{method="GET" path="/api/v1/pages/{id}"}
Retrieve a single page by ID.
**Parameters:**
- `id` (path, required) — Page ULID
**Response:** `200 OK`
```json
{
"id": "01HJKL...",
"title": "Getting Started",
"content": "..."
}
:::
## Власний домен
Для подачі опублікованої документації на власному домені:
1. Встановіть змінну середовища `BASE_DOMAIN`:
```bash
export BASE_DOMAIN=docs.yourcompany.com
- Налаштуйте DNS, щоб ваш домен вказував на сервер DocPlatform
- Налаштуйте зворотний проксі (nginx, Caddy або хмарний балансувальник навантаження) із TLS термінацією
Приклад конфігурації Caddy:
docs.yourcompany.com {
reverse_proxy localhost:3000
}
Caddy автоматично отримує та оновлює TLS сертифікати через Let’s Encrypt.
Кешування
Опубліковані сторінки кешуються для продуктивності:
| Заголовок | Значення | Опис |
|---|---|---|
Cache-Control |
public, max-age=300 |
Браузери та CDN кешують на 5 хвилин |
ETag |
Хеш контенту | Дозволяє умовні запити (304 Not Modified) |
Ключ кешу базується на хеші контенту сторінки. Коли контент змінюється, ETag автоматично змінюється та кешовані версії інвалідуються.
Перезапис URL ресурсів
У веб-редакторі ресурси використовують відносні шляхи (assets/screenshot.png). В опублікованій документації вони автоматично переписуються на абсолютні шляхи (/p/{slug}/assets/screenshot.png), щоб зображення та файли завантажувалися правильно на будь-якій глибині URL.
Попередній перегляд перед публікацією
Перед тим як зробити сторінку публічною, перегляньте її за опублікованою URL. Сторінки з published: false все ще доступні автентифікованим учасникам робочого простору за шляхом /p/ — вони просто виключені з публічної навігації та sitemap.