import { buildApp } from './app.js'; import { config } from './config.js'; import { startTokenRefreshScheduler, stopTokenRefreshScheduler } from './services/token-refresh.service.js'; async function main() { const app = await buildApp(); try { await app.listen({ port: config.port, host: config.host }); app.log.info(`Server listening on ${config.host}:${config.port}`); // Start background token refresh startTokenRefreshScheduler(app.prisma, app.log); // Graceful shutdown for (const signal of ['SIGINT', 'SIGTERM'] as const) { process.on(signal, async () => { app.log.info(`Received ${signal}, shutting down...`); stopTokenRefreshScheduler(); (app as any).signalingManager?.cleanup(); await app.close(); process.exit(0); }); } } catch (err) { app.log.error(err); process.exit(1); } } main();