Doqs adds Markdown documentation to the Angular and Analog.js application you already have: server-rendered, statically generated and searchable, with real Angular components living between the paragraphs. Your layout, routes and theme stay yours.
Let readers change a real Angular component's inputs, watch its outputs and copy usage code.
RenderedMarkdown
fade-up
Preview shows the fade-up animation.
## Register
Register the component once, then place it:
::demo[enter-animation]
## Place
The text after a demo is still ordinary,
searchable Markdown.
A page from the Doqs documentation: real navigation, a real Angular component. Open the full page
What Doqs adds
Documentation that is made of your app, not wrapped around it
Angular components inside Markdown
Register a standalone component once and place it between paragraphs with one line. It renders on the server and hydrates in the browser. Register it as a playground and readers can change its inputs, watch its outputs and copy usage code. Doqs is not MDX: a directive only names a component your application registered.
doq-api reads your library’s public TypeScript API, with signal inputs, outputs, models and JSDoc, and writes ordinary Markdown pages that share the sidebar, search and theme. A check command fails CI when they are stale.
Pull a named region or line range straight from a file in your repository. The page is generated, committed and checked, so a code sample always matches the code it documents.
// Doqs configuration next to Analog's providers
import { provideContent, withMarkdownRenderer } from '@analogjs/content';
import { provideFileRouter, withExtraRoutes } from '@analogjs/router';
import { defineDoqConfig, doqRoutes, provideDoq } from '@doqs/analog';
import { doqPaths } from '../doq.paths';
const doqConfig = defineDoqConfig({ ...doqPaths, sidebar: 'left', showTableOfContents: true });
export const appConfig: ApplicationConfig = {
providers: [
provideFileRouter(withExtraRoutes(doqRoutes(doqConfig))),
provideContent(withMarkdownRenderer()),
provideDoq(doqConfig),
],
};
package.json
// optional: reference pages generated from your public TypeScript API
"scripts": {
"api": "doq-api generate --entry src/public-api.ts",
"api:check": "doq-api check --entry src/public-api.ts"
}
src/app/app.config.ts
// one registry for inline and frontmatter demos
const doqConfig = defineDoqConfig({
...doqPaths,
demos: {
'install-command': InstallCommandComponent,
'enter-animation': EnterAnimationDemoComponent,
},
});
Import @doqs/analog/styles.css once in your global stylesheet, then run pnpm exec doq init to scaffold the files. The complete walkthrough is the getting started guide.
In use
Built with Doqs, checked against real sites
You are looking at it
The documentation of this site is a Doqs consumer: Markdown files, the Doqs sidebar, table of contents and Pagefind search, Angular demos and playgrounds, generated API pages, all prerendered and loaded as a lazy route.
The repository’s adoption checks migrate disposable copies of the Angular Movement and Volt UI documentation sites onto Doqs, keep their URLs, build them from the packed tarball and run them in a browser. Each capability is classified as replaced, host-owned or blocked.