3D multiplayer chess — SvelteKit + Threlte (Three.js), Lucia auth over Postgres/Prisma, and an in-process WebSocket pub/sub for rooms/matches (same origin as the app; the former external Rust relay lives in ws-server/, deprecated).
Full analysis, architecture and roadmap: docs/.
localhost-5173.1.webm
# 1. database (host port 5433)
docker compose up -d db
# 2. env + deps + schema
cp .env.example .env
pnpm install
npx prisma migrate deploy && npx prisma generate
# 3. run
pnpm dev # http://localhost:5173 (ws served on the same origin)docker compose up --build # app on :3000 (self-migrating), db on :5433- ✅ Auth (signup/login/logout), rooms lobby broadcast over
/ws/<clientId> - 🚧 Match move sync + server-side move validation — next up (docs/05, Tier 1)
- Piece replacement instability from the original prototype still applies
pnpm dev/pnpm build/pnpm preview— vite; preview also serves the ws endpointpnpm check/pnpm lint— svelte-check / prettier+eslintpnpm model-pipeline:run— GLB → Threlte components