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.
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 baseyour 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.