mirror of
https://github.com/tiennm99/loto.git
synced 2026-10-13 10:15:54 +00:00
839afd92014aea70dc3836ef5f754d75caf723c8
Adds a gear button + modal on /, /master with a native color picker and 8 preset swatches for the empty-cell background. The selected color repaints both the player card AND the master tracking grid via the --empty-cell-bg CSS variable. Default brown matches the physical Minh Tân paper card. settings-store.svelte.js: Svelte 5 rune-based reactive store, state hydrated on layout mount, persisted to localStorage key loto_settings. Validates hex (#rrggbb regex) before applying — keeps the CSS sink safe and ignores corrupt or shorthand-3-digit payloads. SettingsButton.svelte: gear icon, modal with picker + presets + reset + close, escape-to-close via window keydown listener (the trigger button retains focus on open, so a dialog-scoped handler would miss). eslint.config.mjs: declares Svelte 5 rune globals so .svelte.js stores lint clean. Docs synced: PDR, codebase-summary, system-architecture, roadmap.
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).
Description
Lô Tô (Vietnamese lottery bingo) number board — Next.js web app
Readme
4.1 MiB
0 Stars
1 Watchers
0 Forks
Languages
TypeScript
89.9%
CSS
8%
JavaScript
2.1%