The marketing landing page and documentation for DVM, published at dvm.eshlox.net. Built with Astro + Starlight.
/— custom landing page (src/pages/index.astro)/docs/**— Starlight documentation (src/content/docs/docs/**)
The docs are the single source of truth: the repo README links here rather than duplicating content.
This project uses pnpm (see packageManager in
package.json). Enable it with corepack enable or npm i -g pnpm.
cd site
pnpm install
pnpm dev # http://localhost:4321pnpm build # static output in site/dist/
pnpm preview # serve the built output locallyDependency policy follows eshlox.net/npm-supply-chain-security:
pnpm-workspace.yaml—minimumReleaseAge(only versions ≥7 days old),strictDepBuilds(lifecycle scripts blocked unless allowlisted inallowBuilds), and a commentedtrustPolicy(see the file for why it's off)..npmrc—save-exact/ emptysave-prefix, so deps are pinned exactly.- Dependencies in
package.jsonare pinned to exact versions; updates come through reviewed Dependabot PRs. - CI installs with
pnpm install --frozen-lockfile.
src/
pages/index.astro landing page (own layout, not Starlight)
content/docs/docs/ Starlight docs (URLs are /docs/*)
getting-started/ install, quickstart
reference/ commands, config, lima
guides/ security, troubleshooting
examples/ setup-script snippets (autogenerated sidebar)
styles/theme.css Starlight accent overrides
styles/landing.css landing-page styles
assets/logo.svg header logo
public/favicon.svg
astro.config.mjs title, sidebar, social, edit links
Sidebar order and labels are defined in astro.config.mjs. Examples are
autogenerated from the examples/ directory, so adding a file there (with
title/description frontmatter) is enough to list it.
The site is static; any static host works. For Cloudflare Pages:
- Build command:
pnpm install --frozen-lockfile && pnpm build - Build output directory:
dist - Root directory:
site - Node version: 20+ (
NODE_VERSION=22recommended)
Cloudflare Pages detects pnpm from pnpm-lock.yaml and the packageManager
field automatically.
Add dvm as a custom domain (CNAME dvm → the Pages project) and Cloudflare
manages TLS. Deploys run automatically on push to main.