Note
This project was built entirely with Claude Code — the port, the puzzle pipeline, the tests, and the browser verification.
One chess puzzle at a time, in a page that fits any viewport. A web port of chess-puzzles-menuitem, a macOS menu-bar puzzle trainer.
No server, no accounts, no tracking. Static HTML/CSS/JS.
npm install
npm run dev
node test.js # checks the puzzle data is playablepublic/puzzles.json holds ~7,400 puzzles sampled from the
Lichess puzzle database across rating bands
(popularity >= 90, plays >= 1000). It is committed, so deploys don't depend on a
290MB download.
Re-sample it with sh scripts/fetch-puzzles.sh (needs curl and zstd).
Vercel autodetects Vite. Build npm run build, output dist/.
- Puzzles: Lichess puzzle database — CC0
- Board: chessground — GPL-3.0
- Pieces: Cburnett set, via chessground — GPL-2.0-or-later
- Move validation: chess.js — BSD-2-Clause
GPL-3.0-or-later — required by chessground and the Cburnett pieces.