On this page ▾
Introduction
A modern docs starter for Angular: markdown content collections, authoring components that work inline in prose, build-time link guards, and a site frame that stays out of your way.
How it works
NgMd uses a two-layer authoring model that separates content from chrome.
.md files under src/content/. The path becomes the URL. Frontmatter handles metadata, marked handles rendering, Shiki handles code highlighting.
src/app/. Tailwind v4 throughout, signals and ARIA wired by hand. Edit Tailwind classes directly and ship.
Get started
pnpm create ngmd@latest my-docsnpm create ngmd@latest my-docsyarn create ngmd my-docsbun create ngmd my-docscd my-docs
pnpm install
pnpm run dev
Open http://localhost:5173. You're running.
What's in the box
ngmd.config.ts, breadcrumb, scroll-spy TOC, Cmd+K palette over pages plus headings plus body snippets, prev/next footer, and top-right edit + view-source actions per route.
NgmdUi in src/app/ui/. Sixteen render inline in markdown via Custom Elements; code-block uses fenced ``` blocks instead.
file="src/foo.ts#L5-L20" imports kept in sync with source, group="install" tabs that pre-render through Shiki, {1,3-5} line highlighting, and *Keyword inline auto-linking from ngmd.config.ts.
target="_blank", internal anchors must resolve to real headings. Sitemap.xml and robots.txt auto-emitted. Custom title strategy formats every page as NgMd | <title>.
ngmd-new-site and ngmd-authoring ship in skills/ for Claude Code, Gemini CLI, Antigravity, and other agentic tools.
ngmd.config.ts > versions, and a status-aware banner above content nudges visitors on a next / rc / deprecated deployment back to the current stable.
ngmd.api.ts scope file at the repo root. The api-gen Vite plugin walks your TypeScript through ts-morph, emits a virtual symbol index, and serves it at /api with per-symbol pages at /api/<group>/<name>. Cmd+K palette indexes symbols alongside content pages.
FAQ
src/content/, get a routed and branded documentation site with the site frame and features above.
src/content/ and is edited as plain text. Authoring components wrap prose with structure (callout, alert, card, tabs, accordion, hero, ...) and live in src/app/ui/, edited as TypeScript. They compose in .page.ts or drop inline directly in markdown.