feat: ticker symbol voting for live votes

- Add ticker column to games table with migration
- Bootstrap tickers from tickers.json config on startup
- POST /api/votes/live accepts optional ticker field for direct game
  lookup (bypasses timestamp-interval matching)
- Ticker votes work for any game, not just session games
- Update API docs and add e2e tests for ticker voting
- Version bump to 0.6.5

Made-with: Cursor
This commit is contained in:
cottongin
2026-04-05 04:27:58 -04:00
parent b2bb2989e9
commit ea6e8db90b
9 changed files with 322 additions and 61 deletions

View File

@@ -2,7 +2,7 @@ require('dotenv').config();
const express = require('express');
const http = require('http');
const cors = require('cors');
const { bootstrapGames } = require('./bootstrap');
const { bootstrapGames, bootstrapTickers } = require('./bootstrap');
const { WebSocketManager, setWebSocketManager } = require('./utils/websocket-manager');
const { cleanupAllShards } = require('./utils/ecast-shard-client');
@@ -50,6 +50,7 @@ setWebSocketManager(wsManager);
if (require.main === module) {
bootstrapGames();
bootstrapTickers();
server.listen(PORT, '0.0.0.0', () => {
console.log(`Server is running on port ${PORT}`);
console.log(`WebSocket server available at ws://localhost:${PORT}/api/sessions/live`);