Fast Build, Low FCP/LCP Documentation Site Generator | GitHub Action
documaru is a GitHub Action that builds a static documentation site from a plain folder of markdown files. No config file, no build tooling, no dependencies in your repository. Navigation and sidebar are generated from the file tree, page titles come from the first heading.
Put your pages in a docs folder, add this workflow, and you are done.
name: Deploy documentation
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: denshya/documaru@v1
with:
path: docs
- uses: actions/upload-pages-artifact@v3
with:
path: _site
deploy:
needs: build
environment: github-pages
runs-on: ubuntu-latest
steps:
- uses: actions/deploy-pages@v4A copy lives at examples/docs-site.yml.
| Name | Required | Default | Description |
|---|---|---|---|
path |
no | docs |
Folder with the .md/.mdx pages, relative to the repository root. |
| Name | Description |
|---|---|
path |
Built site folder, relative to the repository root. Always _site. |
index.mdis the landing page. It is required.404.mdis the not-found page. It is required, the app throws without it.- Any other
.md/.mdxfile becomes a page at its folder path.docs/learn/deep.mdserves at/learn/deep. - Page title comes from the first
#heading. Navigation labels come from the file name.
Enable Pages at Settings → Pages → Source: GitHub Actions. Nothing else.
bun install --frozen-lockfile
bun run build
bun run build:ssgThe static site lands in build/. Serve it with bun run preview.
- Assets are served from
/. User pages (user.github.io) work out of the box. Project pages (user.github.io/repo) need a base URL, not supported yet. - Site brand text is fixed.