This project now uses authenticated Supabase storage so all user data is saved in one Supabase database and scoped to each logged-in user.
- Lichess board UI:
@lichess-org/chessground - Lichess-compatible chess logic:
chessops - Lichess media assets from the
lilarepository (2D + 3D pieces, boards, sounds) - Supabase Auth + Postgres + Realtime
login.htmlandsignup.html: creative auth pagesauth.css,auth.js: auth UX and flowssupabase-client.js: shared Supabase config/session clientindex.html,styles.css,app.js: main chess app (auth-gated)supabase.sql: schema, triggers, RLS, and realtime setup
- Open your Supabase SQL editor.
- Run
supabase.sql. - Serve this folder over HTTP (not
file://):
python -m http.server 8080- Open
http://localhost:8080/login.html. - Enter Supabase URL + anon key in the auth page settings.
- Sign up or login.
profiles: username + display name per useruser_settings: board/piece/sound/sync preferences per userchess_games: user-owned games (moves, captures, status, realtime updates)
All reads/writes are restricted by RLS to auth.uid() ownership.
- Promotion is auto-queen by default.
- If your Supabase project requires email confirmation, signup may require confirming email before login.
- Chess user data (profile, settings, games) is persisted in Supabase tables; only Supabase project URL/key are cached locally to simplify reconnecting.
- Chessground/chessops are GPL-licensed. If you deploy this app publicly, comply with GPL requirements.