docs/app/api/search/route.ts
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

5 lines
153 B
TypeScript

import { source } from '@/lib/source';
import { createFromSource } from 'fumadocs-core/search/server';
export const { GET } = createFromSource(source);