Static sites
Voxx doesn't require Next.js — or any framework. voxx build renders your
whole collection to plain HTML and CSS:
npx @prudentbird/voxx init # choose "static site" when asked
npx @prudentbird/voxx build # -> dist/
The output depends on your content type:
- Blog — an index page plus one page per post
- Docs — every page with the sidebar, pager, and TOC baked in; if there's
no root
index.md, Voxx emits a landing page so the base path isn't a 404 - Changelog — the release timeline on a single page
Alongside the pages you get rss.xml, sitemap.xml, robots.txt,
llms.txt, and llms-full.txt, following the same
feature flags as everything
else, plus the Voxx stylesheet under dist/_voxx/. Images and other
non-markdown files in your content folder are copied through, and relative
references like  are resolved to where they
land. Multi-collection configs build every collection in one pass.
npx @prudentbird/voxx build --out public # somewhere other than ./dist
npx @prudentbird/voxx build --drafts # include draft pages
Preview locally with the built-in dev server — it rebuilds on change and includes drafts by default:
npx @prudentbird/voxx dev # http://localhost:4321
Or serve the built folder with anything that can serve files:
npx serve dist
Bring your own framework
The static builder and the Next.js scaffolding are both thin layers over
@prudentbird/voxx-core, whose public API is plain async
functions:
import { getPosts, buildSeo, renderRss } from "@prudentbird/voxx-core";
const posts = await getPosts(); // reads voxx.json, returns Post[]
If you're on Astro, Remix, SvelteKit, or a hand-rolled build script, call
the engine directly — every Post carries rendered HTML, a TOC, SEO-ready
fields, and its final URL.