# wizard_website React + TypeScript frontend (Vite). All component styles are CSS modules (`*.module.css`); the design tokens live on the `.app` root in `src/App.module.css`. ```bash npm install npm run dev # http://localhost:5173, proxies /api/* (incl. websocket) to localhost:8000 without the /api prefix npm run build npm run lint ``` The app is built with relative asset paths and connects to `../api/ws` relative to its own URL (`/wizard/website/` → `/wizard/api/ws`). Set `WIZARD_SERVER_URL` to proxy to another server in development, or `VITE_WS_URL` at build time to use an absolute websocket URL instead. ## Structure - `src/api/` — protocol types and the `useWizard` hook (websocket connection, reconnect with a per-tab session token, game state) - `src/components/` — reusable UI (button, playing card, modal, toasts) - `src/screens/HomeScreen` — enter a name, create or join a lobby - `src/screens/LobbyScreen` — lobby code, players, AI players, rule options, start - `src/screens/GameScreen` — the table: seats, trick, hand, bidding, trump choice, scoreboard, round summary, game over