This is the Plane product documentation site, built with VitePress v1.6.3 and hosted at docs.plane.so. All content lives in the docs/ directory as Markdown files.
| Tool | Version/Notes |
|---|---|
| Framework | VitePress 1.6.3 |
| Package manager | pnpm 10 |
| Node | >=24.0.0 |
| Formatting | oxfmt |
| Styling | Tailwind CSS v4 |
pnpm dev # Start local dev server (http://localhost:5173)
pnpm build # Build static output into docs/.vitepress/dist
pnpm preview # Preview the production build locally
pnpm fix:format # Auto-format all files with oxfmt
pnpm check:format # Check formatting without writingdocs/ # All content and VitePress config
.vitepress/
config.ts # VitePress config — nav, sidebar, search, head tags
theme/ # Custom theme overrides
index.md # Home page (hero layout)
introduction/ # Quickstart, tutorials, core-concepts overview
core-concepts/ # Issues, projects, workspaces, pages, cycles, modules
integrations/ # GitHub, GitLab, Slack, Sentry, draw.io
importers/ # Jira, Asana, Linear, ClickUp, CSV, Notion
authentication/ # SSO, group sync
automations/ # Custom automations
workflows-and-approvals/ # Workflows
workspaces-and-users/ # Billing, seats, licenses, navigation
ai/ # Plane AI features
support/ # Keyboard shortcuts, get help
templates/ # Page, project, work-item templates
CONTRIBUTING.md
README.md
package.json
-
All content files are Markdown (
.md). Use GitHub-flavored Markdown. -
Each file should have a front matter block at minimum with
title:--- title: Page Title description: One-sentence summary (used for SEO meta and og:description) ---
-
Page headings (
#) must match the sidebar label defined indocs/.vitepress/config.ts. When renaming a page, update both the file heading and the sidebar entry. -
Use relative links between docs (e.g.,
[Cycles](/core-concepts/cycles)). Do not use.mdextensions in links. -
Images are hosted externally at
https://media.docs.plane.so/. Do not commit binary assets. Reference them directly in Markdown. -
Use the
tabsplugin (vitepress-plugin-tabs) for multi-tab code blocks where appropriate.
The sidebar and top nav are configured entirely in docs/.vitepress/config.ts. When you add a new page:
- Create the
.mdfile in the appropriatedocs/subdirectory. - Add an entry to the relevant sidebar section in
config.ts. - If it needs a top-nav link, add it to
themeConfig.nav.
Run pnpm fix:format before committing. CI checks formatting via pnpm check:format. Never skip this step.
- Default/main branch:
master - Active development and review happens on the
previewbranch — open PRs targetingpreview, notmaster. - Branch naming: use short descriptive slugs (e.g.,
fix/csv-importer-typo,docs/add-milestones-page). - Commit messages:
<type>: short description— link to an issue where applicable (e.g.,docs: add recurring work items page (#412)).
- Do not commit image or font binaries. Use the external CDN.
- Do not modify
pnpm-lock.yamlmanually — let pnpm manage it. - Do not edit generated files in
docs/.vitepress/dist/. - Do not add analytics keys, API keys, or secrets to any file. Use environment variables (
.envlocally, platform env vars in CI). - Do not rewrite VitePress config structure without understanding the existing sidebar/nav shape — the sidebar is hand-curated and order matters.