Dorcs

Dorcs Logo

Dorcs is a single-binary static documentation server for Markdown files. It is a simple and easy to use documentation server that allows you to create and host your documentation site in minutes.

Get Started

Ready to get started? Check out the Getting Started guide to have your documentation site running in under 5 minutes.

Or if you ready to get started now, download the latest release for your platform:

Documentation

Features

  • Single binary โ€“ no runtime dependencies, statically linkable
  • Extensionless URLs โ€“ /guide/getting-started serves docs/guide/getting-started.md
  • External Content Sources โ€“ serve markdown files directly from GitHub repositories with automatic caching
  • Multi-lingual support โ€“ serve documentation in multiple languages with automatic language switching
  • YAML front matter โ€“ metadata support (title, description, date, tags, draft)
  • Table of Contents โ€“ auto-generated from headings with scrollspy
  • Navigation sidebar โ€“ built automatically from your folder structure
  • Responsive design โ€“ mobile-friendly with collapsible sidebar
  • Dark mode โ€“ automatic based on system preference
  • Live reload โ€“ watch mode for development with smart content updates
  • Multiple themes โ€“ choose from 20+ built-in themes
  • Search โ€“ built-in search functionality
  • Edit Mode โ€“ online editing with authentication (create, edit, delete files directly in the browser)

How It Works

URL Routing

dorcs uses extensionless URLs that map directly to your file structure:

File Path URL
docs/index.md /
docs/getting-started.md /getting-started
docs/guide/index.md /guide
docs/guide/installation.md /guide/installation

Multi-lingual URLs:

When multiple languages are configured, non-default languages use a language prefix:

File Path URL
docs/en/index.md / or /en/
docs/de/index.md /de/
docs/de/getting-started.md /de/getting-started
docs/fr/guide/installation.md /fr/guide/installation

The default language is served at the root URL (no prefix), while other languages use /{lang}/ prefixes.

Versioned URLs:

When versioning is configured, non-default versions use a version prefix:

File Path URL
docs/v1/index.md /v1/
docs/v1/getting-started.md /v1/getting-started
docs/en/v1/getting-started.md /en/v1/getting-started

Combined (Languages + Versions):

When both are configured, URLs use language-first structure:

File Path URL
docs/en/v1/getting-started.md /en/v1/getting-started
docs/de/v1/getting-started.md /de/v1/getting-started

See File Structure & Organization for complete details.

It will also automatically build navigation from your structure and generate a sidebar and a table of contents for each page.