Skip to content

docs: migrate the documentation site to Fumadocs - #137

Draft
leoafarias wants to merge 47 commits into
mainfrom
docs/fumadocs-migration
Draft

docs: migrate the documentation site to Fumadocs#137
leoafarias wants to merge 47 commits into
mainfrom
docs/fumadocs-migration

Conversation

@leoafarias

@leoafarias leoafarias commented Sep 2, 2026

Copy link
Copy Markdown
Member

Summary

Migrate Ack's existing published documentation to a static Fumadocs application using the shared Concepta theme. Keep docs/ as the canonical source and preserve existing page paths, navigation order, and Dart documentation tests.

This PR does not rewrite Ack's schema/model implementation or automatically import root/package READMEs. The app lives in docs-site/; its ignored content mirror is copied byte-for-byte from docs/.

Audit repairs

  • Remove the disconnected second theme, /docs route tree, root redirect, broad content importer, and duplicate workflow.
  • Retain one root-route application and one local @conceptadev/docs-theme snapshot under docs-site/packages/docs-theme.
  • Use the same API as the shared theme: Status status, imageUrl, and createSourceUrl.
  • Preserve /ack in canonical URLs, sitemap entries, social images, search fetches, and Markdown downloads. Next.js Link receives application-relative paths without double-prefixing.
  • Share a UI-free status enum through @conceptadev/docs-theme/status for MDX build-time schema evaluation.
  • Keep optional front-matter metadata typed. Editorial review dates are labeled "Last reviewed" and are not used as sitemap modification timestamps.
  • Resolve the same Base UI implementation and React instance in the app and local theme, verified by tests.
  • Pin core/Base UI 16.15.8, MDX 15.4.0, and Next.js 16.3.4 with a generated lockfile.
  • Apply pnpm 11 policies in pnpm-workspace.yaml, approve only esbuild lifecycle scripts, and retain release-age checks with two exact reviewed Fumadocs release exceptions.
  • Pin workflow actions by commit hash. Repair the npm/pnpm install policy test without disabling the security checks; test both named and inline YAML steps.
  • Replace the invalid static-site next start command with a local static preview.
  • Fix an existing Common recipes link found by the exported-site link checker.
  • Correct the README and deployment guide to describe the actual implementation and hosting responsibilities.

Temporary lockfile-generation automation has been removed. No credentials are required to install another private repository during public Ack builds.

Included behavior

Native Fumadocs navigation, table of contents, dark mode, local static search, GitHub repository/source actions, Projects menu, pub.dev/Concepta links, canonical/social metadata, per-page Open Graph images, sitemap, robots output, and Markdown/LLM exports. No custom plugin runtime, forked layout, hosted search service, or AI/CMS integration.

Validation

The Documentation workflow validates:

  • Frozen dependency installation and supply-chain policies.
  • Six URL/dependency-identity/single-implementation regression tests.
  • Route type generation, TypeScript checks, and positive/negative public API type tests.
  • Exact canonical content mirror.
  • Production builds at both / and /ack.
  • All 18 documentation pages, internal links/fragments, metadata, sitemap, assets, and static endpoints.
  • Chromium desktop and mobile-viewport browser tests for search navigation, rendering, system theme switching, Markdown/PNG endpoints, and 404 responses.
  • Runtime dependency audit at high severity and migration invariants.

All documentation checks passed in run 34131795617 at d86a208e5c561d552ec018a78855a6021cf5f854. The subsequent commit 548a866ed5c9eddc6631d6823702828af649fe74 only adds inline-YAML coverage to the dependency-policy test; fresh Documentation, CI, and Release preflight runs are tracked on the current head. Do not treat an earlier successful run as approval of a later commit.

The shared theme's CI, including an isolated packed-package consumer build, passes at 117abf35b821603fa63869db2d45f365284ef1ee in conceptadev/docs-theme#2.

Merge and hosting gate

Keep this PR draft until the hosting cutover is ready and the current head's required checks pass.

Removing docs.json ends the old docs.page configuration. Serve docs-site/out at https://concepta.dev/ack, retain directory indexes and real 404s, and verify the actual host before cutover. The origin's /robots.txt must reference the Ack sitemap; a subpath robots file does not control the entire origin. Older /documentation/ack redirects belong to the host.

The shared theme remains private and unpublished. Replace the documented local snapshot only after a reviewed package release is available and the same checks pass.

No merge, deployment, DNS change, or package publication is performed by this PR.

leoafarias and others added 30 commits September 2, 2026 13:06

Copy link
Copy Markdown
Member Author

Audit repair validation — September 7, 2026

Current head: 548a866ed5c9eddc6631d6823702828af649fe74.

Documentation workflow passed on this exact commit: https://github.com/conceptadev/ack/actions/runs/34132137290

This includes frozen installation, helper/API/dependency checks, production builds and exported-page/link/metadata validation for both / and /ack, desktop/mobile-viewport Chromium tests, the high-severity runtime dependency audit, and single-implementation migration checks. The search regression test selects Fumadocs' native result buttons and verifies the resulting documentation URL.

The shared theme also passes its current CI, including an isolated consumer installed from its packed tarball: https://github.com/conceptadev/docs-theme/actions/runs/34130882577 (commit 117abf35b821603fa63869db2d45f365284ef1ee).

The repository-wide Dart CI run 34132137301 and Release preflight run 34132137326 are still in progress at this check. Their results must be reviewed before merge; the documentation result does not replace those required checks.

The PR remains draft and unmerged. Hosting cutover and the shared package's eventual registry release remain explicit follow-up gates. No production deployment or package publication was performed.

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