pnpm monorepo with three workspaces: - @sbt/shared: zod ScoreboardState + WebSocket protocol (single source of truth) - @sbt/server: Fastify REST + raw ws WebSocket + Drizzle/Postgres, run via tsx - @sbt/web: React + Vite + Tailwind installable PWA Real-time core: the WebSocket server holds authoritative per-board state in memory, broadcasts to all clients (editors + OBS overlays) instantly, and debounces Postgres saves (~750ms). One useScoreboardSync hook powers the editor, the no-login co-edit control page, and the read-only OBS overlay. Includes email+password auth (JWT cookie), scoreboard CRUD, logo upload, customizable scorebug (characters/stocks/score/subtitles/callout/side-swap/theme), Docker Compose + Caddy/nginx deploy configs, and docs/PLAN.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
20 lines
493 B
JSON
20 lines
493 B
JSON
{
|
|
"name": "scoreboardtools",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"packageManager": "pnpm@9.7.0",
|
|
"scripts": {
|
|
"dev": "pnpm --parallel -r dev",
|
|
"dev:web": "pnpm --filter @sbt/web dev",
|
|
"dev:server": "pnpm --filter @sbt/server dev",
|
|
"build": "pnpm --filter @sbt/web build",
|
|
"start": "pnpm --filter @sbt/server start",
|
|
"test": "pnpm -r test",
|
|
"typecheck": "pnpm -r typecheck"
|
|
},
|
|
"devDependencies": {
|
|
"typescript": "^5.5.4"
|
|
}
|
|
}
|