Add a documentation page
Create Markdown in the content folder, register it in meta.json, and match every locale
Create .md or .mdx under apps/web/content/docs/. Keep related pages in the existing topic folders; a filename becomes its slug, and index represents the folder root.
Frontmatter and navigation
Every page needs title; subtitle is the text rendered below the title and used by this route's metadata. The schema in apps/web/modules/docs/source.ts extends Fumadocs pageSchema with this field.
---
title: Billing webhooks
subtitle: How signed events update a team subscription
---Add the slug to pages in the nearest meta.json to control sidebar order. Update meta.de.json as well. Keep root groups in apps/web/content/docs/meta.json aligned with their localized counterpart.
Translation coverage
English uses unsuffixed files, and German uses dot suffixes such as overview.de.mdx. Both are maintained documentation languages. Other configured UI locales currently use the default-language fallback. Translate new English pages into German and preserve the same examples, commands, links and warnings. Do not create untranslated copies for other locale codes.
The route reads NEXT_LOCALE; public page URLs remain flat. See Adding Locales before expanding language coverage.
Components and checks
Use components provided by apps/web/modules/docs/mdx-components.tsx, including Callout, Cards, Steps and Step. Add any new custom component there before referencing it in content.
bun run agent:i18n --strict
bun run buildPreview with bun run dev and open /docs. Check the page, localized navigation and fallback behavior. See the official Fumadocs documentation for framework-specific authoring features.