Releases: nkrebs13/Squares
Releases · nkrebs13/Squares
v1.0.0 — Super Bowl Sunday 2026
First production release
Football Squares ran live on Super Bowl Sunday 2026 with ~50 concurrent players. Zero downtime. Zero support requests.
What's in this release
Real-time grid
- Sub-100ms cross-client updates via dual Supabase Realtime channels (broadcast for speed, postgres_changes for correctness)
- Optimistic claims with automatic rollback on failure — taps feel instant, failures self-heal
- Multi-player drag selection for claiming rectangular regions in one gesture
Game management
- Host PIN–protected party creation, grid lock, score entry, and party deletion
- Four payout structures: Rising (10/20/30/40), Equal, Big Finish, Custom
- Scores entered at quarter-end; winners computed and announced automatically
PWA + sharing
- Installable on iOS and Android via Web App Manifest
- Push notifications for game events (quarter winner announcements)
- QR code generation, native share sheet integration, copy-to-clipboard fallback
- ESPN live score auto-detect — links to the active NFL game without manual setup
Observability
- Sentry integration with Web Vitals (CLS, INP, LCP, FCP, TTFB) — optional, no-op without DSN
- Production runbook in GAME-DAY.md
Testing
- 668 tests across unit (Vitest + Testing Library), integration (real local Supabase), and E2E (Playwright — Chromium + Mobile Chrome)
- Coverage thresholds enforced in CI: ≥93% lines, ≥93% functions, ≥81% branches
- 5-job GitHub Actions pipeline gating every PR
Deployment
- Single source ships to Cloudflare Pages, Vercel, Netlify, or self-hosted Node via
@sveltejs/adapter-auto - Fully rebrandable via
PUBLIC_*env vars — no code changes needed to fork for any sport
Architecture decisions
Three key design choices are documented as ADRs:
- ADR-0001: Why Svelte 5 runes in components but legacy stores in shared state
- ADR-0002: Why
.then()instead ofawaitin the optimistic update chain - ADR-0003: Why both broadcast AND postgres_changes channels
Quick start
git clone https://github.com/nkrebs13/Squares.git && cd Squares
npm install && cp .env.example .env.local
# set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY
supabase db push && npm run devSee docs/DEPLOY.md for full deployment instructions.