mirror of
https://github.com/tiennm99/loto.git
synced 2026-09-01 04:20:00 +00:00
Render the 9x9 player card as 3 stacked 3x9 mini-cards mirroring a physical Minh Tân paper sheet, with traditional separator labels: "Minh Tân", "Loại đặc biệt", "Tấn tài tấn lộc". Pure visual change — underlying 9x9 data, generator, click handlers, win detection all unchanged. Sectioned render uses absolute row index (startRow + r) so crossed-state and rowCompleteness lookups stay correct. Adds .section-divider (cross-hatch repeating gradient) and .section-label styles to app.css. Defines --empty-cell-bg CSS variable with a brown default matching the paper card; the runtime override lands with the settings feature in a follow-up commit.
Lô tô
Bàn số của trò chơi "Lô tô" — SvelteKit app.
Two routes: / for players, /master for the host (quản trò) — calls
numbers, shows a tracking board, and has its own player card to play along.
See docs/ for architecture, code standards, and deployment.
Development
npm install
npm run dev
Inside code-server (reverse proxy)
cp .env.example .env.local
# edit .env.local: set CODESERVER_HOST and CODESERVER_PORT
npm run dev:codeserver
Open https://<CODESERVER_HOST>/absproxy/<CODESERVER_PORT>/.
Use /absproxy/{port}/, not /proxy/{port}/ — the latter strips the
path prefix and breaks the SvelteKit base path.
Build
npm run build # default — root basePath, for Cloudflare Pages
npm run build:gh # /loto basePath, for tiennm99.github.io/loto manual export
Static export to build/. Deployed to Cloudflare Pages from main
(set up via the CF dashboard — see docs/deployment-guide.md).