Skip to content

feat(docs): migrate the docs site to Fumadocs + shared landing package#13

Merged
enixCode merged 11 commits into
mainfrom
feat/docs-fumadocs
May 30, 2026
Merged

feat(docs): migrate the docs site to Fumadocs + shared landing package#13
enixCode merged 11 commits into
mainfrom
feat/docs-fumadocs

Conversation

@enixCode
Copy link
Copy Markdown
Owner

Migrates the documentation from VitePress to a Fumadocs static-export site, and extracts the bespoke landing into a shared package so the three light-* sites share one design.

What

  • New site under website/ (Next.js 16 + Fumadocs, static export, basePath: /light-runner, Orama search). The 5 guides are ported to MDX; the API reference is auto-generated from src/ by scripts/gen-fumadocs-api.mjs (typedoc-markdown + frontmatter + extensionless link rewrite) and auto-sidebarred.
  • Shared landing: the bespoke landing now lives in the new light-landing-page package and is rendered as <LandingPage data={lightRunnerData} />. Design changes ship to all light-* sites from one source.
  • llms.txt made spec-compliant (project H1, summary, absolute URLs).
  • Theme on the light-process palette (Tailwind blue-600 on neutral gray).
  • Cutover: docs.yml regenerates the API then builds + deploys the Next.js static export (website/out); package.json drops vitepress and rewires docs:api/docs:dev/docs:build; preversion and the pre-commit hook regenerate website/content/docs/api; the old docs/ VitePress tree is removed.

Go-live

Merging deploys the Fumadocs site to GitHub Pages, replacing VitePress.

build with cc

enixCode added 11 commits May 30, 2026 00:38
Foundation for migrating docs from VitePress to a Mintlify-style Fumadocs
site (the look identified across the ecosystem).

- Scaffolded under website/ (Next.js 16 + fumadocs-mdx + Tailwind), static
  template (output: export), Orama static search.
- Configured for GitHub Pages: basePath /light-runner, trailingSlash,
  images.unoptimized, so the export serves under the project sub-path.
- Removed the AI-chat integration the scaffolder forces (openrouter route,
  component, layout wiring, deps): a server route is incompatible with static
  export and unwanted.
- next build produces a clean static export (12/12 pages).

Remaining (not in this commit): port the landing + 5 guides to MDX, wire the
typedoc API reference, theme to the light-process palette, add the Pages
deploy workflow, and remove the old VitePress docs.

build with cc
- Convert docs/guides/*.md (quickstart, extract, detached, security,
  gvisor-kata) into website/content/docs/*.mdx, deriving the frontmatter
  title from each H1.
- Replace the scaffold placeholder index.mdx with a real light-runner intro,
  drop the default test.mdx.
- Add content/docs/meta.json to order the sidebar.
- next build renders all 6 docs pages as a clean static export.

build with cc
- Set the primary accent to Tailwind blue-600 (light) / blue-400 (dark) on the
  neutral gray scale, matching the light-process docs palette.
- Generate the typedoc-markdown API reference into content/docs/api and rewrite
  it for Fumadocs (frontmatter titles + header stripped) via
  scripts/gen-fumadocs-api.mjs; Fumadocs auto-builds the API sidebar.
- Order the api group into the docs nav.
- Enrich the intro example (real fields entrypoint/dir/input/extract, with
  detached/networks as commented options).
- next build renders 93 static pages (guides + full API reference).

build with cc
typedoc-plugin-markdown emits relative `.md` cross-links (e.g.
`../interfaces/RunRequest.md`); Fumadocs routes have no `.md`, so clicking
them 404s. gen-fumadocs-api.mjs now rewrites internal `.md` links to absolute
Fumadocs routes (`/docs/api/interfaces/RunRequest`), preserving anchors and
leaving external https links untouched. Rebuild stays green (93 pages).

build with cc
typedoc cleans its output dir on every run, deleting the hand-written
content/docs/api/meta.json. gen-fumadocs-api.mjs now rewrites it after
generation, so the API-reference group title and ordering survive a regen.

build with cc
- Replace the scaffold placeholder home with a real landing (hero, primitives,
  quick start, security model, ecosystem, footer) on the blue/gray theme.
- Set appName to light-runner and gitConfig to enixCode/light-runner (was the
  scaffold default My App / fuma-nama-fumadocs).
- Add root metadata (title, description, metadataBase), which also clears the
  build metadataBase warning.

build with cc
The default Fumadocs llms.txt emits `# Docs` with root-relative links. Per
the llmstxt.org spec, set the H1 to the project name, add a blockquote
summary, and rewrite links to absolute deployed URLs (domain + basePath) so
they are followable.

build with cc
Port the original VitePress landing to the Fumadocs home: the dark bespoke
design (hero + banner, primitives, code window, security grid, ecosystem,
footer) with the Fraunces / JetBrains Mono type, live GitHub version badges,
and the copy button.

- landing.css: the original bespoke stylesheet, with the three global
  selectors (code/pre, footer, focus rings) scoped to .bespoke-landing so it
  cannot leak into the docs pages; Google Fonts imported.
- page.tsx: HTML ported to JSX as a client component; the script (GitHub
  release fetch + copy) ported to a useEffect; the code sample uses
  dangerouslySetInnerHTML to keep the syntax spans verbatim.
- The home route drops Fumadocs HomeLayout chrome to render full-bleed.
- Copy banner.webp into website/public.

build with cc
The home now renders LandingPage data={lightRunnerData} from the shared
light-landing-page package (git dependency) instead of an in-repo copy. The
bespoke design, CSS and logic live in the package; only lightRunnerData (brand,
hero, primitives, security, ecosystem, links) is local. The local landing.css
is dropped. A design change now ships to every light-* site from one source.

build with cc
- Replace the VitePress docs with the Fumadocs static site under website/.
- docs.yml now regenerates the API (docs:api), builds the Next.js static
  export and deploys website/out to Pages (was: VitePress build + dist).
- package.json: drop vitepress and the vitepress docs scripts. docs:api,
  docs:dev and docs:build now drive the Fumadocs site; preversion and the
  pre-commit hook regenerate website/content/docs/api.
- Remove the docs/ VitePress tree (landing, guides, api, .vitepress, public);
  all of it now lives in website/.
- Update CLAUDE.md docs references.

build with cc
@enixCode enixCode merged commit cda1b6a into main May 30, 2026
4 checks passed
@enixCode enixCode deleted the feat/docs-fumadocs branch May 30, 2026 07:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant