Docs

Proa Docs

A docs framework for Proa sites, compiled at build time.

Open Markdown

Proa Docs is a docs framework for Proa sites, largely inspired by fumadocs and nextra from JavaScript-land.

Write Markdown, get a documentation site: file-routed pages, a generated sidebar, syntax highlighting, search, a table of contents, and thirteen authoring components.

Everything happens at build time

This is the difference that matters. Markdown is parsed, highlighted, and lowered to escaped static HTML during build.rs, then emitted as a static Rust registry your binary includes.

No parser ships to the reader. No syntax highlighter, no math renderer, no client-side router. A docs page is bytes that were computed once.

The practical consequences:

Two crates, two jobs

CrateRunsOwns
proa_docs_buildbuild.rsParsing, frontmatter schemas, the Markdown pipeline, components, search index, link validation
proa_docsrequest timeThe static data model, render primitives, and the default theme

proa_docs is deliberately small. It holds the compiled registry and renders a shell around generated article HTML. It also ships the CSS and JavaScript that make the components work, so a site that links DocsAssets from its head is styled on a fresh install.

You can also ignore the default theme entirely and write your own against the styling contract. That is the headless path, and it is a supported one.

How it compares

Proa DocsFumadocsNextramdBook
LanguageRustTypeScriptTypeScriptRust
Runtime costNone — static HTMLReact hydrationReact hydrationNone
Components13, build-timeLarge, ReactMDXLimited
Theming15 CSS propertiesCSS variables + presetsThemesHandlebars
Agent outputPer-page Markdownllms.txt, per-page .md——

Choose Fumadocs or Nextra if your site is already React and you want the largest component library and ecosystem.

Choose mdBook if you want a book, not a site, and no framework at all.

Choose Proa Docs if your site is Proa, or if shipping zero JavaScript for content pages is worth writing Rust.

Next

Search

Type at least 2 characters