Mono is a monospace-first, brutalist documentation theme built on
@inkform/framework. Terminal-dark with a hot red-orange accent,
JetBrains Mono for every text surface (prose, headings, and code alike), and
zero-radius sharp edges throughout. It supports Guides + API Reference tabs out
of the box.
npm install
npm run dev
# → http://localhost:3000If this is a fresh clone, copy the env file first:
cp .env.example .env.local
# Edit NEXT_PUBLIC_SITE_URL if needed, then:
npm run devAll content lives in content/docs/.
docs.json controls the site name, logo, tabs, and page hierarchy:
slugis the URL path (empty string = the index/).fileis the MDX file path relative tocontent/docs/.- The
openapifield on a tab points to a JSON/YAML spec file incontent/docs/.
Add .mdx files under content/docs/ and register them in docs.json. Mono
supports all built-in blocks: <Note>, <Tip>, <Warning>, <Card>,
<CardGroup>, <Steps>, <Step>, <Tabs>, <Tab>, <CodeGroup>,
<Accordion>, <ParamField>, <Frame>, and more.
Replace content/docs/openapi.json with your own OpenAPI 3.x spec (JSON or
YAML). The site auto-generates a sidebar and per-operation pages. No extra
configuration needed — just point the openapi tab field at your spec file.
When a page's URL changes, record the old → new slug mapping in
content/docs/slug-history.json to issue a 301 redirect:
{
"old-page-slug": "new-page-slug",
"essentials/old-name": "essentials/new-name"
}The Ask AI button is built in but disabled by default. Enable it by setting
NEXT_PUBLIC_DOCS_AI_ENABLED=true in .env.local. Wire up a real LLM provider
in app/api/ask/route.ts (see the TODO comment there; currently returns a stub).
- Push this directory (or the whole monorepo) to a GitHub repository.
- In the Vercel dashboard, click Add New → Project and import the repo.
- Framework preset: Next.js.
- Root directory: set to the path of this folder if deploying as a
standalone (e.g.
oss/templates/mono), or leave blank if deploying the directory itself. - Add the environment variable
NEXT_PUBLIC_SITE_URL(your production URL, e.g.https://docs.example.com). - Click Deploy.
For a custom domain, go to Settings → Domains in your Vercel project and add your domain. Vercel handles SSL automatically.
- Connect the repo in the Amplify console.
- Set the Build settings manually if auto-detection picks the wrong preset:
- Build command:
npm ci && npm run build - Output directory:
.next - Framework: Next.js (SSR)
- Build command:
- Add the
NEXT_PUBLIC_SITE_URLenvironment variable under Environment variables. - Deploy. Amplify Hosting supports Next.js SSR/ISR natively since Gen 2.
The <AskAi /> widget in the top bar is built in. To activate it:
- Set
NEXT_PUBLIC_DOCS_AI_ENABLED=true. - Implement the LLM call in
app/api/ask/route.ts. - Add
ANTHROPIC_API_KEY(or your provider key) as a server-side env var.
The widget renders in both enabled and disabled states — it just shows an informational notice when disabled.
{ "name": "Your Docs", "tabs": [ { "tab": "Guides", "navigation": [ { "group": "Get Started", "pages": [ { "title": "Introduction", "slug": "", "file": "index.mdx" }, { "title": "Quickstart", "slug": "quickstart", "file": "quickstart.mdx" } ] } ] }, { "tab": "API Reference", "openapi": "openapi.json" } ] }