/** * IRIS Backend API Service * Handles authentication, credential proxy, and multi-tenant data access */ import express from 'express'; import cors from 'cors'; import helmet from 'helmet'; import dotenv from 'dotenv'; import { authRouter } from './routes/auth.js'; import { proxyRouter } from './routes/proxy.js'; import { errorHandler } from './middleware/error-handler.js'; import { rateLimiter } from './middleware/rate-limiter.js'; dotenv.config(); const app = express(); const PORT = process.env.PORT || 3000; // Security middleware app.use(helmet()); app.use(cors({ origin: process.env.ALLOWED_ORIGINS?.split(',') || '*', credentials: true, })); // Rate limiting app.use(rateLimiter); // Body parsing 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(), version: '1.0.0', }); }); // Routes app.use('/auth', authRouter); app.use('/api', proxyRouter); // Error handling app.use(errorHandler); // 404 handler app.use((req, res) => { res.status(404).json({ success: false, error: 'Not found', }); }); app.listen(PORT, () => { console.log(`🚀 IRIS API Server running on port ${PORT}`); console.log(`📊 Health check: http://localhost:${PORT}/health`); });