Chess Nerd
Chess Nerd is a static Astro site of chess reference tools, data browsers, PGN downloads, and lightweight analysis utilities published at https://chessnerd.net/.
The Jupiter redesign adds a cross-collection archive search homepage, direct ZIP downloads, player lookup, and persistent task navigation. See the interface and migration record and the data/workflow dependency map.
Stack
- Astro for static
.htmloutput - TypeScript for site metadata and build-time checks
- Vanilla browser JavaScript for tool runtimes
- Static JSON, text manifests, CSV/TSV, and PGN files for data
- GitHub Actions for build and GitHub Pages deploy
Repo Layout
chessnerd/
├── src/ # Astro source
│ ├── components/ # Reusable UI components
│ ├── data/ # Tool metadata
│ ├── layouts/ # Shared page shell
│ ├── pages/ # Public routes, built as .html files
│ ├── scripts/ # Bundled TypeScript for rebuilt tools
│ └── styles/ # Shared CSS source
├── data/ # Canonical generated data not served directly
├── public/ # Static assets copied to dist
├── scripts/ # Maintenance and data-refresh scripts
├── tests/ # Playwright browser checks
└── docs/ # Tool explainers and maintenance notes
Local Development
Use Node 24.13.0 (.nvmrc).
npm ci
npm run dev
Build
npm run build
Astro uses build.format: 'file', so src/pages/titled-players.astro builds to dist/titled-players.html.
Checks
npm test # unit tests (Vitest)
npm run audit # npm audit, reports high-severity advisories
npm run build # astro check, then build
npm run test:browser # Playwright against the built site
Deployment runs all four; the audit is report-only there and does not block a deploy.
Maintenance Notes
- To file new Chess.com tournament PGNs, put them in
workspace/and double-clickworkspace/File PGNs.bat. See workspace instructions. - Merida chess pieces are in
public/img/meridaand mapped from shared CSS. - Every data source, scheduled job and manual refresh is listed in
docs/tools/data-refresh.md. - GitHub Pages should use
Settings > Pages > Build and deployment > Source: GitHub Actions. docs/rebuild-roadmap.mdis the historical Astro rebuild plan; every tool in it has been rebuilt.- Tool explainers live in
docs/tools/. - CCC Archive uses
npm run sync:cccto refresh published archive metadata; deployment runs it automatically. Seedocs/tools/ccc-archive.mdfor the two-repository workflow. - Titled Tuesday Archive follows the same pattern with
npm run sync:tt. Seedocs/tools/titled-tuesday-archive.mdto add missing events later. - Bullet Brawl Archive uses
npm run sync:bb. Seedocs/tools/bullet-brawl-archive.mdfor its archive and update workflow. - 3-0 Thursday Archive uses
npm run sync:t30. Seedocs/tools/3-0-thursday-archive.md. - The Events tab on Chess.com Tournaments uses
npm run sync:eventsto mirror the manifest published byianrastall/cc-events-archive. - Deployment runs all five syncs (
sync:ccc,sync:tt,sync:bb,sync:t30,sync:events) before tests and the build; the checked-in snapshots underpublic/data/only serve local and offline builds. - Tournament Archive entries are generated one event at a time from canonical CTML with
python scripts/build_tournament_archive_zip.py D:\dev\proj\ctml\tours\<tournament>.ctml; this writes a ZIP containing the exact CTML, a PGN compatibility export, andREADME.md, then upserts the site manifest.