Fumadocs setup

Application pending. Commands below are grounded in inspected upstream sources, not deployment evidence. Return to index.

flowchart LR
  A[Pinned source] --> B[Install and adapt]
  B --> C[Static output]
  C --> D[Browser and access proof]

Source and prerequisites

The pinned Datalumina repository is public and supplies 18 department handbook pages plus the index, ten employee JSON profiles, and avatars. Preserve those complete inputs, attribution, ownership links, homepage, and department navigation. It is educational content, not SiteKits policy. GitHub reports no detected license: public access must not be relabeled as an MIT grant.

The example requires Node >=22.12. Its password gate, search, and chat are server-side, and its README explicitly says static export is unsupported. Copying the repository and running its build is therefore not the static deployment solution. Its Fumadocs 16.11.3, Next 16.3.5, and React 19.2.8 are example dependency versions, not the newly verified Fumadocs pins.

Prepare the official static starter

The following source-derived commands are for the application phase, not an executed installation record. Run from the project apps directory once it exists; do not overwrite a populated destination.

nice -n 10 npx --yes create-fumadocs-app@16.2.9 fuma --template +next+fuma-docs-mdx+static --search orama --pm npm --no-git --yes --install
cd fuma
nice -n 10 npm install --save-exact fumadocs-core@16.15.14 fumadocs-ui@16.15.14 fumadocs-mdx@15.4.5

Adapt the complete example content into this starter before release. Keep the official Fumadocs structure and appearance so the comparison remains meaningful. The exact adaptation is pending; these scaffold commands do not claim to perform it.

Static search and output contract

The official static example at the inspected commit provides the relevant contract:

  • next.config.mjs wraps output: 'export' with createMDX().
  • app/api/search/route.ts uses revalidate = false and createFromSource(source, {language: 'english'}).staticGET as GET.
  • The custom search dialog uses useDocsSearch and staticClient from fumadocs-core/search/client/orama-static.
  • The provider supplies that dialog to RootProvider.

The dev commit is a reference snapshot, not a released package version. Retaining an ordinary request-time search handler is not sufficient for static search. Use the published API identifiers even where prose documentation names a different search engine.

nice -n 10 npm run build

Expected static output: apps/fuma/out. No Next server is part of the static hosting contract. Authelia replaces the example’s browser password gate; the separate OMP integration replaces optional paid-key chat, not the complete content.

Acceptance still required

Confirm every handbook department, all ten profiles and avatars, homepage links, and ownership links survive. Serve the output without a Next server and exercise a real keyword search, navigate a result, and reload a deep link. Check responsive layouts at 390 and 1280 pixels with no console errors. Independently verify that the application and its search assets redirect anonymous visitors to Authelia. Shared chat remains pending and must prove a genuine cited OMP answer separately.