import express from 'express'; import cors from 'cors'; import helmet from 'helmet'; import dotenv from 'dotenv'; dotenv.config(); const app = express(); const PORT = process.env.PORT || 4000; // Middleware app.use(helmet()); app.use(cors({ origin: process.env.FRONTEND_URLS?.split(',') || ['http://localhost:3000'], credentials: true, })); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // Health check app.get('/health', (req, res) => { res.json({ status: 'ok', timestamp: new Date().toISOString() }); }); // API Routes app.get('/api/v1', (req, res) => { res.json({ message: 'AvanzaCast Backend API', version: '1.0.0', endpoints: { auth: '/api/v1/auth', users: '/api/v1/users', broadcasts: '/api/v1/broadcasts', subscriptions: '/api/v1/subscriptions', integrations: '/api/v1/integrations', }, }); }); // 404 handler app.use((req, res) => { res.status(404).json({ error: 'Not found' }); }); // Error handler app.use((err: Error, req: express.Request, res: express.Response, next: express.NextFunction) => { console.error(err.stack); res.status(500).json({ error: 'Internal server error' }); }); app.listen(PORT, () => { console.log(`🚀 Backend API running on http://localhost:${PORT}`); console.log(`📡 Environment: ${process.env.NODE_ENV}`); });