- The
/docssite (this site, atdocs.vibestrap.dev) is on Mintlify. It lives underdocs/anddocs/docs.jsonat the repo root. Setup walkthrough: Deploy docs on Mintlify. - The
/blogand/changelogroutes on the marketing app are on Fumadocs. Their MDX lives undercontent/blog/andcontent/changelog/. This page covers those two.
How the collections are defined
source.config.ts:
dir and a Zod schema for frontmatter. The build
generates .source/server.ts, which exports typed arrays consumed by
src/lib/source.ts.
Add a new blog post
Blog frontmatter has the most fields:content/blog/<slug>.mdx plus <slug>.zh.mdx. The blog
index page reads everything via pickByLocale(blog, locale) and sorts by
date descending — no extra config needed.
Add a changelog entry
Same shape as blog, with a requiredversion field:
content/changelog/. The version field powers the release
title and sort order on /changelog.
The pages collection
content/pages/ is a catch-all for one-off MDX pages that don’t belong in
blog or changelog. Currently holds a placeholder. Use it when you need MDX
rendering without sidebar nav.
Customize MDX components
src/mdx-components.tsx is the central override point for blog + changelog
rendering. It defers styling to Tailwind’s prose plugin. Add custom
shortcodes here:
<Callout>...</Callout> becomes available in any blog / changelog MDX
file. (The Mintlify docs site has its own component library — see
Mintlify Components.)
Verify it works
pnpm build runs fumadocs-mdx automatically — invalid frontmatter fails
the build with a Zod error pointing at the file.
Common pitfalls
- Forgetting to regenerate
.source/— if you add a file and the page 404s in dev, runpnpm exec fumadocs-mdx. - Invalid frontmatter — Zod rejects unknown shapes. Date must parse,
versionis required for changelog,published: falsehides blog posts. - MDX autolinks — writing
<https://example.com>breaks the MDX parser. Use[example.com](https://example.com)or bare URL text. - Wrong collection dir — files outside the configured
dirare silently ignored. Double-check the path matchessource.config.ts. - Don’t put docs here — anything you’d want under
/docsbelongs indocs/at the repo root (Mintlify), notcontent/docs/.
Official docs
- fumadocs.vercel.app — Fumadocs reference
- Fumadocs MDX — collection config
- MDX — Markdown + JSX syntax
- Zod — frontmatter schema syntax