docs/app/layout.tsx
rabbitblood 7cdc0bc9b4 init: scaffold doc.moleculesai.app with Fumadocs + Next.js 15
Customer-facing documentation site for Molecule AI. Built with Fumadocs
(open-source MIT, Next.js 15 App Router native, Tailwind v4, MDX) so we
own the deployment and aesthetic and can grow into custom doc components
for our agent-canvas flows.

## Why Fumadocs (over Mintlify, Nextra, Docusaurus)
- Open source, no vendor lock-in (vs Mintlify SaaS subscription)
- Built on Next.js 15 App Router — matches our existing canvas stack
- Less opinionated than Nextra; can grow into custom doc components
- React/Tailwind first; team already on this stack
- Ships search, dark mode, Shiki highlighting, MDX out of the box

## Initial structure
- app/                 — Next.js App Router (home + docs + search route)
- content/docs/        — MDX source (3 hand-written + 9 stub pages)
- lib/source.ts        — Fumadocs loader bound to the MDX content
- mdx-components.tsx   — default + future custom MDX renderers
- source.config.ts     — MDX compile config

## Hand-written launch content
- index.mdx     — landing / what you can build / how it works
- quickstart.mdx — clone repo → docker compose → import template → talk to PM
- concepts.mdx  — the five primitives: workspaces / plugins / channels / schedules / canvas

## Stub pages (Documentation Specialist agent fills these in on cron)
- org-template, plugins, channels, schedules
- architecture, api-reference, self-hosting
- observability, troubleshooting

## Ownership
The Documentation Specialist agent in the molecule-dev org template will
own this repo end-to-end:
- Watches PRs landing in the platform monorepo
- Auto-opens docs PRs when public APIs / templates / plugins / channels change
- Runs daily cron to backfill stubs and refresh stale pages

Manual edits welcome. Agent picks up on next cron tick.
2026-04-14 21:01:17 -07:00

29 lines
843 B
TypeScript

import './global.css';
import { RootProvider } from 'fumadocs-ui/provider';
import { Inter } from 'next/font/google';
import type { ReactNode } from 'react';
const inter = Inter({
subsets: ['latin'],
});
export const metadata = {
title: {
default: 'Molecule AI Documentation',
template: '%s | Molecule AI Docs',
},
description:
'Build and run multi-agent organisations on the Molecule AI platform. Templates, plugins, channels, and the runtime that ties them together.',
metadataBase: new URL('https://doc.moleculesai.app'),
};
export default function Layout({ children }: { children: ReactNode }) {
return (
<html lang="en" className={inter.className} suppressHydrationWarning>
<body className="flex flex-col min-h-screen">
<RootProvider>{children}</RootProvider>
</body>
</html>
);
}