---
title: "Overview"
description: "Fumadocs is a modern, framework-agnostic documentation ecosystem designed for React applications, providing a modular architecture that separates core document processing, source loading, and layou..."
last_updated: "2026-10-12T07:53:59.866213+00:00"
canonical_url: "https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/getting-started/overview"
---

<details>
<summary>Relevant source files</summary>

The following files were used as context for generating this wiki page:

- [packages/core/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json)
- [packages/preview/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/package.json)
- [packages/api-docs/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/api-docs/package.json)
- [packages/content/src/index.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts)
- [packages/python/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/python/package.json)
- [packages/basehub/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/basehub/package.json)
- [packages/openapi/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/openapi/package.json)
- [packages/local-md/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/local-md/package.json)
- [packages/content/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json)
- [packages/mdx/src/runtime/dynamic.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/src/runtime/dynamic.ts)
- [packages/preview/src/pages/...slugs.tsx](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx)
- [packages/base-ui/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json)
- [packages/content/src/runtime.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/runtime.ts)
- [packages/epub/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/epub/package.json)
- [packages/obsidian/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/obsidian/package.json)
- [packages/radix-ui/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json)
- [packages/cli/src/commands/shared.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/commands/shared.ts)
- [packages/typescript/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/typescript/package.json)
- [packages/shared/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/shared/package.json)
- [packages/cli/src/index.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/index.ts)
- [packages/twoslash/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/twoslash/package.json)
- [packages/doc-gen/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/doc-gen/package.json)
- [packages/mdx/src/runtime/server.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/src/runtime/server.ts)
- [packages/asyncapi/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/asyncapi/package.json)
- [packages/create-app/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/create-app/package.json)
- [packages/sanity/registry/index.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/sanity/registry/index.ts)
- [packages/story/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/story/package.json)
- [packages/mdx/package.json](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/package.json)
- [packages/python/pyproject.toml](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/python/pyproject.toml)
- [packages/preview/fumadocs.config.ts](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/fumadocs.config.ts)
</details>

## Overview

Fumadocs is a modern, framework-agnostic documentation ecosystem designed for React applications, providing a modular architecture that separates core document processing, source loading, and layout presentation [packages/core/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L2-L4). It addresses the complexity of building documentation sites by decoupling headless primitives and build-time content compilation from opinionated styling layers and frontend frameworks. The project is organized as a monorepo workspace containing runtime engines, bundler integration plugins, and user interface implementations [[packages/core/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L2-L4), [packages/radix-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L2-L4). Fumadocs integrates closely with tools like [BaseHub Integration](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/basehub-integration) and [MDX Runtime Compilation](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/mdx-pipeline/mdx-runtime-compilation) to support flexible content workflows and dynamic rendering [[packages/basehub/package.json:4-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/basehub/package.json#L4-L4), [packages/mdx/src/runtime/server.ts:1-2](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/src/runtime/server.ts#L1-L2).

## Architecture and Design Philosophy

Fumadocs is architected around a strict separation of concerns, decoupling framework-agnostic document processing, source loading, and state management from concrete UI implementations [packages/core/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L2-L4). The core runtime library (`fumadocs-core`) delivers navigation tree generation, internationalization negotiation, [search server indexing](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/search-server-indexing), [syntax highlighting](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/syntax-highlighting), and remark/rehype markdown AST transformations without depending on a specific frontend framework or bundler [[packages/core/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L2-L4), [packages/core/package.json:42-87](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L42-L87). 

The ecosystem provides explicit [framework routing adapters](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/framework-routing-adapters) and runtime provider packages for Next.js, React Router, TanStack, Waku, and Vite [[packages/core/package.json:29-33](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L29-L33), [packages/radix-ui/package.json:104-108](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L104-L108). This modular layer separation allows documentation content models and source schemas to be compiled independently of presentation components, which are supplied separately through accessible UI packages like `fumadocs-ui` backed by [Radix UI primitives](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/radix-ui-primitives) [[packages/radix-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L2-L4), [packages/radix-ui/package.json:134-143](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L134-L143).

| Layer Category | Primary Package | Export Modules & Target Responsibilities |
| :--- | :--- | :--- |
| Core Engine | `fumadocs-core` | `./source`, `./page-tree`, `./i18n`, `./search`, `./highlight`, `./mdx-plugins` |
| Content Compilation | `fumadocs-mdx` | `./node`, `./vite`, `./next`, `./rolldown`, `./webpack/mdx`, `./runtime/server` |
| UI & Layouts | `fumadocs-ui` | `./layouts/docs`, `./layouts/flux`, `./components/codeblock`, `./components/dialog/search` |
| Content Adapter | `@fumadocs/content` | `.` (index), `./runtime` for standard-schema type-safe document fetching |
| Shared Utilities | `shared` | Internal helper workspace for CLI tooling, translation specs, and glob file scanning |

Sources: [packages/core/package.json:20-88](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L20-L88), [packages/content/package.json:17-21](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L17-L21), [packages/radix-ui/package.json:18-117](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L18-L117), [packages/shared/package.json:4-8](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/shared/package.json#L4-L8), [packages/mdx/package.json:24-44](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/package.json#L24-L44)

> [!NOTE]
> The `@fumadocs/content` adapter depends on `@standard-schema/spec` and `fuma-content` to decouple validation schemas from specific file-system loaders [[packages/content/package.json:32-34](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L32-L34), [packages/content/package.json:43-46](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L43-L46).

Sources: [packages/content/package.json:32-46](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L32-L46)

> [!IMPORTANT]
> Framework integration is completely decoupled via dedicated export entry points in `fumadocs-core` (such as `./framework/next`, `./framework/react-router`, `./framework/tanstack`, and `./framework/waku`), preventing runtime coupling to Next.js [packages/core/package.json:29-33](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L29-L33).

Sources: [packages/core/package.json:29-33](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L29-L33)

## Monorepo Package Structure and Roles

### Core Runtime and Content Compilers

The Fumadocs workspace organizes its source code into specialized packages, separating the framework-agnostic runtime engine from build-time content compilation and UI layers. The core runtime package, `fumadocs-core`, provides foundational services including source file discovery, page tree calculations, internationalization negotiation, search server indexing, syntax highlighting, and unified remark/rehype markdown AST transformations [packages/core/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L2-L4), [packages/core/package.json:42-87](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L42-L87). 

Build-time processing is handled by `fumadocs-mdx`, which exposes integration entry points for bundlers and runtime loaders, including Next.js, Vite, Webpack, Rolldown, and Bun [packages/mdx/package.json:24-44](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/package.json#L24-L44). Content validation and schema mapping across standard schemas are delegated to `@fumadocs/content`, which relies on `fuma-content` and `@standard-schema/spec` [packages/content/package.json:32-46](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L32-L46).

Sources: [packages/core/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L2-L4), [packages/core/package.json:42-87](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/core/package.json#L42-L87), [packages/mdx/package.json:24-44](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/package.json#L24-L44), [packages/content/package.json:32-46](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L32-L46)

> [!IMPORTANT]
> The `fumadocs-mdx` package maintains separate sub-exports for static node compilation (`./node`, `./node/loader`) and client/server runtimes (`./runtime/server`, `./runtime/browser`, `./runtime/dynamic`), preventing server-only modules from leaking into browser bundles [packages/mdx/package.json:24-44](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/package.json#L24-L44).

Sources: [packages/mdx/package.json:24-44](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/package.json#L24-L44)

### UI Implementations and Layouts

Presentation components are factored into distinct UI packages that target specific primitive ecosystems. The two primary UI design implementations are `fumadocs-ui` (backed by Radix UI primitives) and `@fumadocs/base-ui` (built for Base UI) [packages/base-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L2-L4), [packages/radix-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L2-L4), [packages/cli/src/commands/shared.ts:1-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/commands/shared.ts#L1-L4). Both packages provide identical export paths for documentation layouts, navigation slots, code blocks, search dialogs, and interactive UI widgets [packages/base-ui/package.json:18-114](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L18-L114), [packages/radix-ui/package.json:18-117](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L18-L117).

| Package Name | Primary Dependency Stack | Target UI Library & Layout Exports |
| :--- | :--- | :--- |
| `fumadocs-ui` (`radix-ui`) | Radix Primitives (`@radix-ui/react-*`), `motion`, `next-themes` | `./layouts/docs`, `./layouts/flux`, `./layouts/notebook`, `./layouts/home` [packages/radix-ui/package.json:58-90](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L58-L90), [packages/radix-ui/package.json:134-153](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L134-L153) |
| `@fumadocs/base-ui` | Base UI primitives, `motion`, `next-themes` | `./layouts/docs`, `./layouts/flux`, `./layouts/notebook`, `./layouts/home` [packages/base-ui/package.json:58-90](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L58-L90) |
| `@fumadocs/api-docs` | Radix Accordion/Dialog/Select, `@fumari/stf` | `./schema`, `./codegen`, `./components/schema`, `./components/dialog` [packages/api-docs/package.json:18-42](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/api-docs/package.json#L18-L42), [packages/api-docs/package.json:56-67](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/api-docs/package.json#L56-L67) |

Sources: [packages/base-ui/package.json:18-114](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L18-L114), [packages/radix-ui/package.json:18-117](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L18-L117), [packages/api-docs/package.json:18-67](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/api-docs/package.json#L18-L67), [packages/cli/src/commands/shared.ts:1-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/commands/shared.ts#L1-L4)]

> [!NOTE]
> The CLI utility references UI registries via the configuration mapping in `UIRegistries`, associating `'base-ui'` with `fumadocs/base-ui` and `'radix-ui'` with `fumadocs/radix-ui` [packages/cli/src/commands/shared.ts:1-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/commands/shared.ts#L1-L4).

Sources: [packages/cli/src/commands/shared.ts:1-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/commands/shared.ts#L1-L4)

### Tooling, Extensibility, and Preview Packages

Specialized plugins and developer tooling are isolated into independent workspace packages to keep runtime footprints minimal [packages/preview/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/package.json#L2-L4), [packages/typescript/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/typescript/package.json#L2-L4), [packages/twoslash/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/twoslash/package.json#L2-L4), [packages/doc-gen/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/doc-gen/package.json#L2-L4), [packages/create-app/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/create-app/package.json#L2-L4). These include `fumadocs-typescript` for type table extractions via `ts-morph` [packages/typescript/package.json:39-49](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/typescript/package.json#L39-L49), `fumadocs-twoslash` for Shiki-based compiler diagnostics [packages/twoslash/package.json:45-53](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/twoslash/package.json#L45-L53), `fumadocs-docgen` for remark utilities like `remark-ts2js` [packages/doc-gen/package.json:26-30](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/doc-gen/package.json#L26-L30), [packages/doc-gen/package.json:41-50](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/doc-gen/package.json#L41-L50), `fumadocs-preview` for Waku-backed fast content previews with AI search features [packages/preview/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/package.json#L2-L4), [packages/preview/package.json:35-88](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/package.json#L35-L88), and `create-fumadocs-app` for project scaffolding [packages/create-app/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/create-app/package.json#L2-L4), [packages/create-app/package.json:43-52](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/create-app/package.json#L43-L52).

Sources: [packages/preview/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/package.json#L2-L4), [packages/preview/package.json:35-88](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/package.json#L35-L88), [packages/typescript/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/typescript/package.json#L2-L4), [packages/typescript/package.json:39-49](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/typescript/package.json#L39-L49), [packages/twoslash/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/twoslash/package.json#L2-L4), [packages/twoslash/package.json:45-53](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/twoslash/package.json#L45-L53), [packages/doc-gen/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/doc-gen/package.json#L2-L4), [packages/doc-gen/package.json:26-30](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/doc-gen/package.json#L26-L30), [packages/doc-gen/package.json:41-50](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/doc-gen/package.json#L41-L50), [packages/create-app/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/create-app/package.json#L2-L4), [packages/create-app/package.json:43-52](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/create-app/package.json#L43-L52)

## Content Compilation and Source Processing

### Document Schemas and Collection Configuration

Document parsing and type-safe frontmatter validation rely on `@standard-schema/spec` [[packages/content/package.json:32-34](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L32-L34), [packages/mdx/package.json:56-58](https://github.com/blade47/fumadocs/package.json#L56-L58)]. The `@fumadocs/content` package provides helper utilities like `docsMdxCollection` and `docsCollection` to structure directories containing MDX documents and metadata files [packages/content/src/index.ts:16-53](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts#L16-L53). By default, `docsMdxCollection` integrates `mdxPreset` configurations with remark include plugins for content composition [packages/content/src/index.ts:24-32](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts#L24-L32).

Sources: [packages/content/package.json:32-34](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/package.json#L32-L34), [packages/content/src/index.ts:16-53](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts#L16-L53), [packages/mdx/package.json:56-58](https://github.com/blade47/fumadocs/package.json#L56-L58)]

> [!NOTE]
> The `docsMdxCollection` builder automatically falls back to `pageSchema` for frontmatter validation when a custom schema is omitted [packages/content/src/index.ts:16-19](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts#L16-L19).

Sources: [packages/content/src/index.ts:16-19](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts#L16-L19)]

### Runtime and Dynamic MDX Compilation

The `fumadocs-mdx` package supports runtime compilation and dynamic execution of MDX files through its runtime modules [[packages/mdx/package.json:37-40](https://github.com/blade47/fumadocs/package.json#L37-L40)]. The `dynamic` utility resolves collections and compiles raw content entries into hydrated properties [packages/mdx/src/runtime/dynamic.ts:47-95](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/src/runtime/dynamic.ts#L47-L95).

```typescript
async function executeMdx(compiled: string, options: ExecuteOptions = {}) {
  const { opts: scopeOpts, ...scope } = options.scope ?? {};
  const fullScope = {
    opts: {
      ...(scopeOpts as object),
      ...(options.jsxRuntime ?? jsxRuntimeDefault),
      baseUrl: options.baseUrl,
    },
    ...scope,
  };

  const hydrateFn = new AsyncFunction(...Object.keys(fullScope), compiled);
  return await hydrateFn.apply(hydrateFn, Object.values(fullScope));
}
```
Sources: [packages/mdx/src/runtime/dynamic.ts:32-45](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/mdx/src/runtime/dynamic.ts#L32-L45)]

The `DocsCollection` class manages code generation by listening to emission hooks and constructing virtual code modules that link back to stores [packages/content/src/index.ts:55-70](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts#L55-L70). Concurrently, `toFumadocsSource` maps underlying file collection stores into structured static sources containing page and metadata entries [packages/content/src/runtime.ts:12-42](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/runtime.ts#L12-L42).

Sources: [packages/content/src/index.ts:55-70](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/index.ts#L55-L70), [packages/content/src/runtime.ts:12-42](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/content/src/runtime.ts#L12-L42)]

## Presentation Primitives and Layout Systems

### Headless UI Implementations and UI Registries

Fumadocs separates visual styling and component layout architectures into two alternative UI implementations: `@fumadocs/base-ui` and `fumadocs-ui` (backed by Radix UI primitives) [packages/base-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L2-L4), [packages/radix-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L2-L4). These UI variants share identical export paths for foundational primitives, layout slots, and navigation contexts while consuming distinct underlying primitives. The command line utility references these two packages under the identifiers `base-ui` and `radix-ui` [packages/cli/src/commands/shared.ts:1-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/commands/shared.ts#L1-L4).

| UI Package | Package Name | Registry Key | Primary Dependencies |
| :--- | :--- | :--- | :--- |
| Base UI Version | `@fumadocs/base-ui` | `base-ui` | Tailored base primitives and CSS exports |
| Radix UI Version | `fumadocs-ui` | `radix-ui` | `@radix-ui/react-*`, `motion`, `next-themes` |

Sources: [packages/base-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L2-L4), [packages/radix-ui/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L2-L4), [packages/cli/src/commands/shared.ts:1-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/commands/shared.ts#L1-L4), [packages/radix-ui/package.json:131-154](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L131-L154)]

> [!IMPORTANT]
> Both UI packages expose identical module entry points for layouts (`./layouts/docs`, `./layouts/flux`, `./layouts/notebook`, `./layouts/home`), search dialogs, and component slots, enabling seamless switching between Radix and Base UI runtimes without altering layout consumption code [packages/base-ui/package.json:18-114](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L18-L114), [packages/radix-ui/package.json:18-117](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L18-L117).

Sources: [packages/base-ui/package.json:18-114](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/base-ui/package.json#L18-L114), [packages/radix-ui/package.json:18-117](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/radix-ui/package.json#L18-L117)]

### Layout Presets and Markdown Compilation Pipeline

Layout presets determine how documentation pages and structural containers render[packages/preview/src/pages/[...slugs].tsx:80-96](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx#L80-L96). The [preview server](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/preview-server) configuration supports dynamic markdown rendering pipelines incorporating remark and rehype plugins for math, headings, GFM, code tabs, package manager persistence, and Mermaid diagrams[packages/preview/src/pages/[...slugs].tsx:29-46](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx#L29-L46).

```tsx
const compiler = createMarkdownCompiler({
  remarkPlugins: [
    remarkGfm,
    remarkMath,
    remarkMdxMermaid,
    plugin(remarkHeading, { generateToc: false }),
    plugin(remarkNpm, { persist: { id: 'package-manager' } }),
    remarkCodeTab,
  ],
  remarkRehypeOptions: {
    passThrough: ['mdxJsxFlowElement', 'mdxJsxTextElement'],
  },
  rehypePlugins: [
    rehypeKatex,
    plugin(rehypeCode, { lazy: true, fallbackLanguage: 'text' }),
    plugin(rehypeToc, { exportToc: { as: 'data' } }),
  ],
});
```
Sources: [packages/preview/src/pages/...slugs.tsx:29-46](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx#L29-L46)]

The dynamic page renderer inspects the layout preset configuration (`docs` or `flux`) to load corresponding layout modules and page components dynamically[packages/preview/src/pages/[...slugs].tsx:80-96](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx#L80-L96). When rendering documentation containers, AI search widgets are conditionally injected alongside layout slots if AI support is enabled[packages/preview/src/pages/[...slugs].tsx:113-138](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx#L113-L138).

Sources: [packages/preview/src/pages/...slugs.tsx:80-96](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx#L80-L96), [packages/preview/src/pages/...slugs.tsx:113-138](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/preview/src/pages/%5B...slugs%5D.tsx#L113-L138)]

## Tooling and Extensibility Ecosystem

### Specification Generators and Language Integration Plugins

Fumadocs provides specialized packages that ingest specification files and foreign source code, transforming them into documentation structures. The `fumadocs-openapi` package parses OpenAPI v3 and Swagger definitions to generate MDX documentation pages, client request generators, and interactive UI components, with exports for C#, cURL, Go, Java, JavaScript, and Python request generators[packages/openapi/package.json:2-37](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/openapi/package.json#L2-L37). Similarly, `@fumadocs/asyncapi` processes AsyncAPI specifications to generate documentation for asynchronous message-driven architectures with dedicated server and internationalization entry points[packages/asyncapi/package.json:2-25](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/asyncapi/package.json#L2-L25). For Python codebases, `fumadocs-python` and the underlying `fumapy` module inspect source code and docstrings using Griffe and Griffe typing extensions to extract API documentation[packages/python/package.json:2-4](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/python/package.json#L2-L4), [packages/python/pyproject.toml:2-8](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/python/pyproject.toml#L2-L8).

| Tool / Plugin Package | Package Identifier | Primary Purpose | Key Export Endpoints |
| :--- | :--- | :--- | :--- |
| OpenAPI Generator | `fumadocs-openapi` | OpenAPI v3/Swagger MDX doc generation & request building | `.`, `./ui`, `./scalar`, `./requests/generators/*` |
| AsyncAPI Generator | `@fumadocs/asyncapi` | AsyncAPI event-driven messaging documentation | `.`, `./ui`, `./server`, `./i18n` |
| Python Docgen | `fumadocs-python` | Python docstring extraction and component presets | `.`, `./components`, `./preset.css` |
| Story Integration | `@fumadocs/story` | Component prop parsing and interactive playgrounds | `.`, `./next`, `./vite`, `./type-tree` |

Sources: [packages/python/package.json:2-32](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/python/package.json#L2-L32), [packages/openapi/package.json:2-37](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/openapi/package.json#L2-L37), [packages/asyncapi/package.json:2-25](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/asyncapi/package.json#L2-L25), [packages/python/pyproject.toml:2-8](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/python/pyproject.toml#L2-L8), [packages/story/package.json:2-24](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/story/package.json#L2-L24)]

> [!NOTE]
> The `@fumadocs/story` package supports multiple build systems and frameworks, offering dedicated entry points for Next.js (`./next`, `./next/client`), Vite (`./vite`, `./vite/client`), and Webpack (`./webpack/story`) alongside type-tree extraction[packages/story/package.json:14-24](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/story/package.json#L14-L24).

Sources: [packages/story/package.json:14-24](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/story/package.json#L14-L24)]

### Standalone Content Sources and Export Utilities

Additional packages extend content ingestion and distribution capabilities beyond standard Markdown and MDX files. The `@fumadocs/local-md` package parses local Markdown files and executes embedded expressions in Node and browser runtimes, exposing execution targets such as `executor`, `executor-native`, and `executor-virtual`[packages/local-md/package.json:2-30](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/local-md/package.json#L2-L30). For offline reading, `fumadocs-epub` bundles compiled documentation pages, assets, and tables of contents into EPUB ebooks[packages/epub/package.json:2-26](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/epub/package.json#L2-L26). Integration with headless CMS platforms is supported by registry modules like `fumadocs/sanity`, which provides installable component snippets for rendering portable text collections [packages/sanity/registry/index.ts:1-100](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/sanity/registry/index.ts#L1-L100).

Sources: [packages/local-md/package.json:2-30](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/local-md/package.json#L2-L30), [packages/epub/package.json:2-26](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/epub/package.json#L2-L26), [packages/sanity/registry/index.ts:1-100](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/sanity/registry/index.ts#L1-L100)]

### Developer CLI Workflows

The [Fumadocs CLI](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/fumadocs-cli) (`@fumadocs/cli`) and site scaffolding tool (`create-fumadocs-app`) orchestrate project initialization, component management, and export actions[packages/cli/src/index.ts:1-116](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/index.ts#L1-L116), [packages/create-app/package.json:2-31](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/create-app/package.json#L2-L31). The CLI runner initializes configuration files, customizes UI layouts, downloads registry components via local or HTTP connectors, exports documentation to EPUB format, and converts file tree structures into JavaScript or MDX modules[packages/cli/src/index.ts:17-114](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/index.ts#L17-L114).

```typescript
program
  .command('add')
  .description('add a new component to your docs')
  .argument('[components...]', 'components to download')
  .option('--dir <string>', 'the root url or directory to resolve registry')
  .action(async (input: string[], options: { config?: string; dir?: string }) => {
    const config = await createOrLoadConfig(options.config);
    const client = createClientFromDir(options.dir);
    await add(input, client, config);
  });

const exportCmd = program.command('export').description('export documentation to various formats');

exportCmd
  .command('epub')
  .description('export documentation to EPUB format (run after production build)')
  .requiredOption('--framework <name>', 'React framework: next, tanstack-start, react-router, waku')
  .option('--output <path>', 'output file path', 'docs.epub')
  .option('--scaffold-only', 'only scaffold the EPUB route, do not copy')
  .action(async (options: { output?: string; framework: string; scaffoldOnly?: boolean }) => {
    await exportEpub({
      output: options.output,
      framework: options.framework,
      scaffoldOnly: options.scaffoldOnly,
    });
  });
```
Sources: [packages/cli/src/index.ts:44-69](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/index.ts#L44-L69)]

> [!WARNING]
> The EPUB export command (`fumadocs export epub`) must be run after a successful production build, and requires specifying the target React framework via the required `--framework` option[packages/cli/src/index.ts:57-69](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/index.ts#L57-L69).

Sources: [packages/cli/src/index.ts:57-69](https://github.com/blade47/fumadocs/blob/a9f988897e7dc4ef3d62b2865d80da2f5607701e/packages/cli/src/index.ts#L57-L69)]

## Where to go next

| I want to… | Read |
| --- | --- |
| How do you scaffold and run a minimal Fumadocs documentation site from scratch? | [Quick Start](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/getting-started/quick-start) |
| What are the responsibilities and dependencies across the packages in the Fumadocs workspace? | [Project Structure](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/getting-started/project-structure) |
| How does Fumadocs discover, parse, validate, and manage collections of documents and meta files into structured sources? | [Source Loader](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/source-loader) |
| How are hierarchical navigation trees built, transformed, sorted, and decorated with status badges and icons? | [Page Tree Generation](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/page-tree-generation) |
| How are documents scanned, structured, and indexed on the server using Orama, Flexsearch, or Algolia engines? | [Search Server Indexing](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/search-server-indexing) |
| How do client dialogs query search backends including local endpoints, Orama Cloud, Algolia, and Mixedbread? | [Search Client Integrations](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/search-client-integrations) |
| How does Shiki integration format code blocks, manage themes, parse meta attributes, and handle transformer tokens? | [Syntax Highlighting](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/syntax-highlighting) |
| What remark and rehype AST transformations occur for admonitions, headings, steps, LLM exports, and mermaid diagrams? | [Markdown AST Plugins](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/markdown-ast-plugins) |
| How are framework-agnostic navigation, dynamic links, and router abstractions provided for Next.js, Vite, React Router, and Waku? | [Framework Routing Adapters](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/framework-routing-adapters) |
| How does Fumadocs handle locale switching, fallback languages, language negotiation, and translated page trees? | [Internationalization Support](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/internationalization-support) |
| How does fumadocs-mdx compile MDX documents, track file metadata, and integrate with build tools via unified plugins? | [MDX Loader Pipeline](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/mdx-pipeline/mdx-loader-pipeline) |
| How do the Webpack, Next.js, Vite, and Rolldown loader plugins intercept and transform documentation source files? | [Bundler Plugins](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/mdx-pipeline/bundler-plugins) |
| How do plugins generate type-safe schema validation, last-modified git timestamps, and virtual index files for documentation? | [Content Compiler Plugins](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/mdx-pipeline/content-compiler-plugins) |
| How are MDX strings compiled and evaluated dynamically on the server and in the browser for remote content? | [MDX Runtime Compilation](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/mdx-pipeline/mdx-runtime-compilation) |
| What foundational primitive components does fumadocs-ui/base-ui provide for dialogs, navigation, cards, and forms? | [Base UI Components](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/base-ui-components) |
| How does fumadocs-ui/radix-ui implement accessible primitives like popovers, collapsibles, scroll areas, and search dialogs? | [Radix UI Primitives](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/radix-ui-primitives) |
| How do sidebar slots, headers, containers, footers, and page actions compose documentation layouts across frameworks? | [Shared Layout Architecture](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/shared-layout-architecture) |
| How does the Flux layout arrange the modern dual-sidebar, responsive navbar, and article structure? | [Ui Layouts Layout](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/ui-layouts-layout) |
| How are table of contents trees extracted, highlighted dynamically on scroll, and displayed in sidebars or inline components? | [Table of Contents](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/table-of-contents) |
| How do interactive client and server code blocks handle syntax styling, copy actions, dynamic tab groups, and file trees? | [Code Block Components](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/code-block-components) |
| How do CSS presets, Tailwind typography plugins, and theme variations (such as Catppuccin, Shadcn, and Vitepress) apply styling? | [Theme Styles and CSS](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/ui-layouts/theme-styles-and-css) |
| How does the shared fumadocs-api-docs package handle schema dereferencing, mock sampling, and reusable UI widgets? | [API Docs Primitives](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/api-documentation/api-docs-primitives) |
| How are OpenAPI v3 and Swagger specifications parsed, validated, and converted into static MDX documentation pages? | [OpenAPI Document Generation](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/api-documentation/openapi-document-generation) |
| How does the OpenAPI renderer render interactive API endpoint cards, request parameters, response schemas, and curl try-it-out widgets? | [OpenAPI Interactive UI](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/api-documentation/openapi-interactive-ui) |
| How does Fumadocs automatically generate code snippets for cURL, JavaScript, Python, Go, and C# from OpenAPI endpoint schemas? | [Code Sample Generators](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/api-documentation/code-sample-generators) |
| How are AsyncAPI specifications loaded, dereferenced, and converted into asynchronous messaging documentation? | [AsyncAPI Document Processing](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/api-documentation/asyncapi-document-processing) |
| How does Fumadocs render protocol-specific message configurations for Kafka, MQTT, WebSockets, AMQP, and SQS? | [AsyncAPI Protocol Bindings](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/api-documentation/asyncapi-protocol-bindings) |
| How does Fumadocs read Obsidian vaults and convert wikilinks, callouts, block IDs, and comments to standard MDX? | [Obsidian Vault Integration](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/obsidian-vault-integration) |
| How does fumadocs-local-md parse pure markdown and execute embedded expressions with Node and browser clients? | [Local Markdown Runtime](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/local-markdown-runtime) |
| How does Fumadocs integrate with Content Collections for static type-safe document fetching and metadata mapping? | [Content Collections Adapter](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/content-collections-adapter) |
| How does the fumapy Python module inspect docstrings and generate structured documentation data for Fumadocs? | [Python Docstring Extractor](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/python-docstring-extractor) |
| How does Fumadocs ingest structured portable text and document trees from Sanity headless CMS into docs pages? | [Sanity CMS Integration](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/sanity-cms-integration) |
| How does Fumadocs fetch and render documentation collections stored within BaseHub headless CMS? | [BaseHub Integration](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/basehub-integration) |
| How does Fumadocs provide manual and automated installations of documentation components compatible with shadcn/ui? | [shadcn/ui Docs Registry](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/content-sources/shadcn-ui-docs-registry) |
| How do the CLI commands customize components, add registry snippets, export EPUB documents, and inspect file trees? | [Fumadocs CLI](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/fumadocs-cli) |
| How does create-fumadocs-app scaffold projects across frameworks (Next.js, React Router, TanStack Start) and linters? | [Create App Generator](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/create-app-generator) |
| How does the built-in Waku-based preview server provide live hot reloading, AI chat search, and dynamic OG image generation? | [Preview Server](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/preview-server) |
| How does Fumadocs extract TypeScript AST interfaces, type aliases, and JSDoc tags to build interactive type tables? | [TypeScript Type Table Extraction](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/typescript-type-table-extraction) |
| How does fumadocs-twoslash integrate with Shiki to display compiler diagnostics, type hints, and hover popups? | [Twoslash Type Hover](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/twoslash-type-hover) |
| How does the fumadocs-story package parse component props and render live interactive playground controls inside documentation? | [Interactive Component Playground](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/interactive-component-playground) |
| How does STF parse, format, and render structured documentation payloads across server and client boundaries? | [Structured Text Format](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/structured-text-format) |
| How does fumadocs-epub bundle documentation pages, assets, stylesheets, and tables of contents into EPUB ebooks? | [EPUB Book Export](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/epub-book-export) |
| How do fumadocs-vite and vite-data provide HMR and data resolution for non-Next.js build tools? | [Vite Integration Plugins](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/developer-tooling/vite-integration-plugins) |

## Related

- [Quick Start](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/getting-started/quick-start)
- [Project Structure](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/getting-started/project-structure)
- [Source Loader](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/technical/core-architecture/source-loader)


## Sitemap

See the full [sitemap](https://www.doc0.dev/docs/e8872a72-1909-479c-b585-dc74c6e26726/llms.txt) for all pages in this wiki.
