Fumadocs
Fumadocs for content, search, and navigation, used without its UI so every component on this site is Bones.
Why Fumadocs
Fumadocs handles search, navigation, and MDX for this site. It's the newest of the popular docs frameworks, it runs on Next.js like the other public sites, and it can be used without its UI.
The alternatives were Starlight (great defaults, but adds Astro to the repo), Docusaurus (proven, but heavy and hard to restyle), and VitePress (Vue).
Headless
Bones installs two packages and none of Fumadocs's components:
fumadocs-mdxcompiles the MDX indocs/content/docsand reads each folder'smeta.json.fumadocs-corebuilds the page tree, the table of contents, the search index, and/llms.txt.
The header, sidebar, search dialog, table of contents, callouts, tabs, and copy buttons are Bones components in docs/components. They're styled from shared-ui/tokens.css, so the docs follow the same design system as the apps.
What's turned off
- Syntax highlighting. Every Shiki theme colors code, and the palette is grayscale.
- npm, pnpm, and Bun tabs. Bones uses Yarn only.
Callouts use remark-directive, so a note is :::note in the MDX.
Static search
Search runs in the reader's browser. The index is built into /search.json with the site, so there's no search service to run or pay for.
Used in
- Docs — what the docs site does.
- Writing docs — adding a page.