Modern Angular foundations and an opinionated assembly. Every layer is replaceable, but the defaults work together out of the box.
Stack Overview
NgMd is built on Angular, AnalogJS, Vite, Tailwind, and Shiki. Three architectural decisions on top of those: a single catch-all route, Custom Elements that compile inside markdown, and build-time link guards.
How it's structured
Three decisions worth surfacing because they're what make NgMd feel different from "yet another docs starter."
One src/app/pages/[...slug].page.ts serves every prose route. Drop a .md at any path under src/content/ and it shows up at the matching URL. Same shape adev uses.
Sixteen NgmdUi components are registered via @angular/elements, so they upgrade inside <analog-markdown [innerHTML]>. Drop <ngmd-callout> straight into prose and it renders. Code-block is the exception (fenced ``` covers that).
Broken internal anchors fail the build instead of reaching production. External raw-HTML anchors without target="_blank" also fail. Catches what runtime tests don't.
What you get
Sticky header, sidebar accordion, breadcrumb, scroll-spy TOC, Cmd+K palette over pages + headings + body, prev/next + edit/source actions per route.
CSS-variable tokens, light / dark / auto with no-flash boot script, fuchsia accent throughout. Native View Transitions API for crossfades.
Callout, alert, card, card-grid, tabs, pill-row, workflow, hero, code-block, accordion, badge, video, image, plus 4 children (pill, step, tab, accordion-item). Sixteen of them render inline in .md via Custom Elements; code-block uses fenced ```.
ngmd-new-site and ngmd-authoring ship for Claude Code, Gemini CLI, Antigravity. Format mirrors angular/skills.
Why this stack
The framework. Standalone components, signals, control flow, function-based DI. Every authoring component is a regular Angular standalone unit you can drop into any Angular app.
Angular's Nuxt / Next equivalent. Vite-based, SSR-capable, file-router-first. Markdown content collections, the build pipeline, and the entire routing model all come from here.
Dev server fast enough that the file router stays fun. Build is rollup-driven, SSR via Nitro under the hood.
Utility CSS that doesn't impose a design system. Theme tokens live as CSS variables; the rest is regular Tailwind. @variant dark powers class-based dark mode.
VS Code-quality syntax highlighting. Held at 1.x because newer 4.x conflicts with @analogjs/platform 2.7's peer dep. Dual-theme HTML output: github-light-default + github-dark-default in one pass.
Where to next