Skip to content

chessviewer-org/chess-viewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,944 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ChessViewer

License: AGPL-3.0 PRs Welcome

ChessViewer is a browser-based chess diagram editor. Set up any position, choose how the board looks, and export a sharp image at the resolution you need — for print, a blog post, or a video thumbnail. No installation, no account required.

chessvision.org · Report a bug · Request a feature


ChessViewer screenshot


Getting started

Requirements: Node.js 22 or later, pnpm 10 or later.

git clone https://github.com/chessviewer-org/chess-viewer.git
cd chess-viewer
pnpm install
pnpm dev

Open http://localhost:3000.

pnpm build      # production build → dist/
pnpm validate   # typecheck, lint, format check, tests

Docker

# Production
docker compose up --build -d web       # http://localhost:3000

# Development with HMR
docker compose --profile dev up --build dev   # http://localhost:5173

What it does

  • Board editor — drag pieces onto any square, flip the board, toggle coordinates and border frame
  • FEN input — paste any FEN string with real-time validation; batch input supports up to 10 positions at once
  • Export — PNG, JPEG, or SVG at four quality presets (300–1200 DPI); batch export downloads a ZIP; DPI metadata is embedded in the file
  • Board customisation — 20 piece sets, 20 preset themes, custom colour picker, up to 48 saved presets
  • Position history — saved locally with favourites, pinning, freshness indicators, and full-text search
  • Database search — look up positions directly from Lichess, PDB, and YACPDB
  • Optional account — sign in to sync your history and settings across devices via Supabase; data is encrypted at rest and owner-scoped by row-level security

Contributing

See CONTRIBUTING.md for the full guide. The short version:

git checkout -b fix/your-fix
pnpm validate
git commit -m "fix: brief description"
git push origin fix/your-fix
# open a pull request against master

Every PR must reference an open issue (Closes #N) and pass CI before it can be merged.


Security and privacy

Board rendering and export run entirely client-side — positions never leave your device. There are no analytics or tracking cookies.

Optional cloud sync stores data in Supabase with row-level security: only the authenticated user can read or write their own rows.

To report a vulnerability, see SECURITY.md.


Tech stack

Preact 10, TypeScript 6, Vite 8, Tailwind CSS 4, wouter, fflate, vite-plugin-pwa.

Supabase is used for auth and cloud sync via a custom hand-written client (src/auth/Supabase.ts) — the @supabase/supabase-js SDK is not installed. Icons are Lucide SVG paths embedded directly in src/assets/icons/ (ISC License) — lucide-react is not installed. Page transition animations are CSS-based — framer-motion is not installed.


License

AGPL-3.0. © 2026 Khatai Huseynzada.

About

Free, no-signup chess diagram generator. Paste a FEN, customize the board, and export high-resolution PNG, JPEG, or SVG — runs entirely in your browser, privacy-first. Open source.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Sponsor this project

Used by

Contributors

Languages