Skip to main content

Deploy

Monorepo

Keep your docs in a subfolder of a larger repository. Point NookDocs at the directory that holds nookdocs.config.json and everything resolves under it.

If your docs don't live at the root of their repository — for example a monorepo where the app, packages, and docs share one repo — tell NookDocs which subfolder holds your docs project.

The monorepo base path is a project setting, NOT a key in nookdocs.config.json — NookDocs needs it to locate the config file itself. Set it to the folder that contains nookdocs.config.json (e.g. docs or apps/docs, no leading/trailing slash) when connecting the repo or later under Settings → Git → Monorepo. Only that subtree is synced and ingested; the rest of the repo (app code, packages) is never read. Paths inside the config (contentRoot, api.openapi) stay relative to this base, page URLs strip the base (and contentRoot), and repo-meta files (README.md, CONTRIBUTING.md, AGENTS.md, LICENSE, CHANGELOG.md) at the base are never published as docs pages.

How it works

NookDocs treats one directory as your docs base: the folder that contains nookdocs.config.json. Everything resolves relative to it:

  • nookdocs.config.json — at the base

  • your content — under the base (flat, or under contentRoot)

  • api.openapi — relative to the base

So a repo like this just works:

my-monorepo/
├─ apps/
│  └─ web/            ← your app
├─ packages/
└─ docs/              ← docs base (point NookDocs here)
   ├─ nookdocs.config.json
   ├─ openapi.json
   ├─ index.mdx
   └─ guides/...

Set it up

When you connect the repository, pick the repo and flip Set up as monorepo, then enter the path to the folder that contains nookdocs.config.json (e.g. docs or apps/docs, no leading/trailing slash). You can also change it later under Settings → Git → Monorepo.

Only your docs folder is read

NookDocs syncs (and the editor's Files tab shows) only the base path — the rest of the repo is never ingested. So pointing us at docs/ in a repo that also holds your app keeps the app code out of NookDocs entirely.

GitHub Apps grant access at the repository level (you choose which repos during install), so the base path is how NookDocs narrows that down to just your docs subtree. It's a project setting, not a key inside nookdocs.config.json — we need it to find the config. Paths inside the config (contentRoot, api.openapi) stay relative to the base.

Content layout

Inside the base, content can be flat (Markdown files directly under the base, like the starter template) or nested under a contentRoot folder. Page URLs are the file path with the base (and contentRoot, if set) stripped — so moving a docs project into a monorepo subfolder doesn't change any URLs.

Repo-meta files at the base (README.md, CONTRIBUTING.md, AGENTS.md, LICENSE, CHANGELOG.md) are never ingested as docs pages.

Was this page helpful?

Last updated August 7, 2026