-
-
Notifications
You must be signed in to change notification settings - Fork 7
Home
BilgeGates edited this page Jun 28, 2026
·
4 revisions
Documentation for the current stable release of ChessVision.
- Setup — Prerequisites, installation, development workflow, and production build.
- Features — The complete feature set, inventoried from source.
- Maintenance — How to report bugs, request features, and contribute.
ChessVision is a browser-based chess diagram editor. It renders positions from FEN notation and produces high-resolution, print-ready image exports. An optional account enables cloud sync across devices — the app is otherwise fully functional without one.
ChessVision is a single-page React 19 application built with Vite 8.
- React 19 with React Router 7 for client-side routing. All routes are split with
React.lazyand wrapped inSuspense. - Route transitions are animated with Framer Motion (
AnimatePresence).
- FEN parsing and validation live in
src/shared/utils/fenParser.ts. Input is hard-capped atMAX_FEN_LENGTH = 93. - The interactive board editor is built on
@dnd-kitwith both pointer and touch sensors. - Board rendering targets an off-screen
HTMLCanvasElementviasrc/shared/utils/canvasRenderer.ts.
- PNG and JPEG export run through
canvasExporter.ts, with physical-dimension targeting (centimeters to pixels) computed inimageOptimizer.ts. - Heavy raster work runs off the main thread via a Web Worker (
src/shared/workers/). - SVG export is handled by
svgExporter.ts. - Batch export is assembled into a ZIP through
archiveManager.ts. - A shared cancel / pause / resume state machine governs every long-running export.
- Safari canvas memory is protected by an explicit
canvas.width = 0disposal after every blob generation.
- Three React contexts:
FENBatchContext,ModalContext,ThemeSettingsContext. - Persistence:
localStoragefor local data, Supabase for optional cloud sync. - All untrusted-string reads go through
safeJSONParse.
- Email/password authentication with TOTP-based two-factor authentication via Supabase.
- Row-level security: each user can only read and write their own rows.
- 90-day re-verification gate for sensitive operations.
- pnpm 10, Vite 8, Tailwind 4, TypeScript 6 (strict).
- ESLint 9, Prettier, Husky, lint-staged, commitlint, Conventional Commits.
-
semantic-releaseconfigured against themasterbranch. - GitHub Actions: CI, CodeQL, semantic-release, label sync, PR labeler.