Universal documentation site for every Phuzle app and package — one home page listing all of them, each with its own standalone documentation area.
Stack: Bun + TypeScript + Next.js + Fumadocs + shadcn/ui.
bun install
bun run devOpen http://localhost:3000.
- Create
content/docs/<slug>/meta.json:{ "title": "Your App Name", "root": true, "description": "One-line tagline", "pages": ["index", "..."] }"root": trueis what makes this folder its own standalone doc tree (own sidebar, own nav), rather than nesting under another app's docs. Fumadocs auto-detects every root folder and lets users switch between them via the dropdown at the top of the sidebar. - Add
content/docs/<slug>/index.mdx(and any other pages) as normal MDX withtitle/descriptionfrontmatter. - Add an entry to
src/lib/apps.ts— this is what makes the app show up as a card on the home page (/). Nothing else needs to change.
Each app's docs are then reachable directly at /<slug>/... — e.g. /messages,
/messages/privacy — no /docs prefix. See src/lib/shared.ts (docsRoute = '') and
src/app/[...slug]/ for how that routing is wired.
| Path | What |
|---|---|
src/app/(home)/ |
The / landing page listing every app (reads src/lib/apps.ts). |
src/app/[...slug]/ |
Catch-all route rendering any doc page from any app's root folder. |
content/docs/<app>/ |
One folder per app, each a Fumadocs "root folder". |
src/lib/source.ts |
Fumadocs content loader (baseUrl is empty — see above). |
src/lib/apps.ts |
The registry the home page renders cards from. |
src/components/ui/ |
shadcn/ui components, used by the home page (not the docs pages — |
| those use Fumadocs UI's own components). |
src/app/layout.tsx— setNEXT_PUBLIC_SITE_URL(or update the fallback) oncedocs.phuzle.comis live, so Open Graph/social images resolve correctly.- No favicon is set yet.