Docs that quietly go stale
Your docs live in an external CMS with no link to the code. You rename a feature, ship it, and the public docs describe the old one for months. Here, docs live in the repo and change in the same pull request.
A polished docs site for your product, with search, no CMS to run.
Your product gets a real docs site on day one: search, sidebar, reading progress, next-page links. Pages live in your repo as typed content, so docs ship and review like code. Tests catch a page that fell out of the menu.
The mechanism end to end, as implemented in the repository.
Write the page as typed content
Add or edit a page in one content file with its title, slug, and sections. No markdown pipeline, no file-system magic.
Place it in the menu once
Each page slug appears exactly once in the category list. That one placement sets its group and reading order.
Everything else derives
The index, sidebar, Cmd+K search, page metadata, and next/previous links are all computed from that list at build time.
Tests guard the structure
If a page is missing from the menu or listed twice, the build fails. Structure and content can't fall out of sync.
Interactive example
This walkthrough demonstrates the implemented backend contract without using an account, credentials, or provider calls.
Interactive example
Deterministic sample data only. No account, provider, or network connection is used by the interaction.
Without a shared foundation, every team rebuilds these edge cases — differently.
Your docs live in an external CMS with no link to the code. You rename a feature, ship it, and the public docs describe the old one for months. Here, docs live in the repo and change in the same pull request.
You just wanted product docs. Now you're managing CMS credentials, webhooks, and an editorial pipeline before page one is live. Here, there's nothing to host: docs compile with the app.
Each page hand-lists its neighbors. Someone adds a page, forgets the links, and now the sidebar and the next buttons disagree. Here, one list drives all of it, and tests fail when it's wrong.
Highlights
Pages and their order live in one typed file. The sidebar, search, and next/previous links all derive from it automatically.
Cmd+K search, a table of contents, reading progress, mobile navigation, and feedback ship working, not as a to-do list.
Tests fail the build if a page is missing from navigation or listed twice, so the docs structure never quietly drifts.
Engineering guarantees
This is a docs site in your repo, not a hosted CMS (the disabled Sanity scaffold stays disabled). Your canonical engineering rules stay in repository docs; public pages summarize and link back.
The boundary above is code, not a claim. These files carry the contract:
src/modules/docs/content.tssrc/modules/docs/DocsSearch.tsxsrc/routes/_public/docsThese capabilities share contracts and boundaries with this one.
The docs describe the same contracts this page demonstrates.