Local development

Prerequisites

  • Node.js 22+ (package.json engines)

  • pnpm 9 (CI uses pnpm/action-setup@v4 with version 9)

Quick start

git clone https://github.com/dev-centr/devcentr.org.git
cd devcentr.org
pnpm install
pnpm dev

predev runs scripts/build-news.mjs, which needs news posts under content/news/ (always present in the repo).

Open the URL printed by Vinxi (typically http://localhost:3000).

Full fidelity (changelog + advisor + templates)

For /changelog, /toolchain-advisor, and /skills with live sibling data, clone checkouts beside this repo:

cd ..
git clone https://github.com/dev-centr/toolchain-advisor.git
git clone https://github.com/dev-centr/agent-rules.git
git clone https://github.com/dev-centr/devcentr.git
git clone https://github.com/dev-centr/general-knowledge.git
git clone https://github.com/dev-centr/docs.git
cd devcentr.org
pnpm news:build
pnpm sync-advisor
pnpm sync-bootstrap-profiles
pnpm dev

Without siblings, news still builds; changelog ingest logs changelog skip (missing) for absent repos; advisor and bootstrap-profile sync warn and exit cleanly if no SDL is found.

Common scripts

Command Purpose

pnpm dev

Dev server (predev rebuilds news)

pnpm build

Production static build to .output/public

pnpm news:build

Regenerate news JSON, changelog JSON, RSS, and Atom

pnpm sync-advisor

Copy and compile toolchain-advisor SDL → public/catalog/

pnpm sync-bootstrap-profiles

Compile bootstrap-org SDL → public/catalog/bootstrap-profiles.json (gitignored)

pnpm brand:raster

Rasterize SVG logos to PNG sizes under public/brand/

Editor setup

Committed .vscode/settings.json and .vscode/extensions.json enable dprint format-on-save and recommend the SolidJS extension. See VS Code & CI walkthrough for rationale.

Troubleshooting

  • Stale news or changelog — run pnpm news:build after editing content/news/ or after pulling sibling changelog files.

  • Advisor page empty — run pnpm sync-advisor with toolchain-advisor checked out; verify public/catalog/advisor.json exists.

  • Skills / bootstrap selector empty — run pnpm sync-bootstrap-profiles with agent-rules checked out; verify public/catalog/bootstrap-profiles.json exists (gitignored, not committed).

  • CI fails skills/index.html — Vinxi does not emit a directory index for client-only routes; scripts/spa-fallback.mjs must copy the SPA shell into .output/public/skills/.

  • Build fails on CI but works locally — CI uses pnpm install --no-frozen-lockfile; ensure lockfile is committed after dependency changes.