brackt/app/routes/leagues
Claude f36480c828
Phase 1: Replace per-second timer tick with event-driven scheduler
Eliminates the setInterval(1s) + per-second DB write by storing picksExpiresAt
in draft_timers and using a targeted setTimeout per pick. Clients count down
locally from the expiresAt timestamp, removing server-pushed timer-update events.

Key changes:
- database/schema.ts: add picksExpiresAt and picksStartedAt to draft_timers
- server/timer.ts: full rewrite — schedulePickForSeason, rescheduleTimer,
  30s recovery interval instead of 1s tick, overnight-pause resume scheduling
- server/socket.ts: new timer-pick-started / timer-overnight-paused events,
  updated draft-state-sync to include expiresAt for reconnect recovery
- draft.make-pick / draft.force-manual-pick: compute actual remaining from
  picksExpiresAt at pick time; call rescheduleTimer after the autodraft chain
- useDraftSocketEvents: handle new timer events, restore countdown on reconnect
- $leagueId.draft.$seasonId: client-side countdown useEffect from expiresAt
- plans/zero-downtime-scaling.md: full 4-phase scaling plan for future reference

Resolves 2351 unit tests (all passing).

https://claude.ai/code/session_019k5J6Ty7uP5HxSx6CsbiBK
2026-06-03 03:04:46 +00:00
..
__tests__ Add Discord draft pick announcements (#460) 2026-05-20 19:55:48 -07:00
$leagueId.audit-log.tsx Migrate auth from Clerk to BetterAuth (#354) 2026-04-29 10:03:50 -07:00
$leagueId.draft-board.$seasonId.tsx Fix mobile spacing for draft board and dashboard layout (#13, #329) (#404) 2026-05-10 19:51:34 -07:00
$leagueId.draft-queue.$seasonId.tsx Rename queue page to Set Pre-Draft Queue, remove VORP, fix re-add race condition (#436) 2026-05-15 18:47:36 -07:00
$leagueId.draft.$seasonId.tsx Phase 1: Replace per-second timer tick with event-driven scheduler 2026-06-03 03:04:46 +00:00
$leagueId.server.ts Fix invite link showing http and show draft board card during live draft 2026-05-22 22:31:52 -07:00
$leagueId.settings.server.ts Enforce unique team names within a season 2026-05-23 16:55:08 -07:00
$leagueId.settings.tsx Add Discord draft pick announcements (#460) 2026-05-20 19:55:48 -07:00
$leagueId.sports-seasons.$sportsSeasonId.server.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
$leagueId.sports-seasons.$sportsSeasonId.tsx Fix World Cup group stage display and upcoming events (#55) 2026-05-27 05:43:08 +00:00
$leagueId.standings.$seasonId.teams.$teamId.tsx Fix draft order initialization for teams added mid-season (#449) 2026-05-19 18:22:47 -07:00
$leagueId.standings.$seasonId.tsx Fix standings page team icons to use selected team avatar (#388) 2026-05-06 18:08:46 -07:00
$leagueId.tsx Fix invite link showing http and show draft board card during live draft 2026-05-22 22:31:52 -07:00
$leagueId.upcoming-events.tsx Migrate authentication from Clerk to BetterAuth (#324) 2026-04-24 22:00:49 -07:00
creating.tsx Extract reusable league wizard components; wire settings page (#350) 2026-04-28 22:24:13 -07:00
new.tsx Add auto-start draft at scheduled time (#437) (#438) 2026-05-16 23:37:29 -07:00