const express = require('express'); const cors = require('cors'); const helmet = require('helmet'); const rateLimit = require('express-rate-limit'); const path = require('path'); require('dotenv').config(); const app = express(); const PORT = process.env.PORT || 3000; app.use(helmet()); app.use(cors({ origin: process.env.FRONTEND_URL || '*', credentials: true })); app.use(rateLimit({ windowMs: 15 * 60 * 1000, max: 100 })); app.use(express.json({ limit: '10mb' })); app.use(express.urlencoded({ extended: true, limit: '10mb' })); app.use('/uploads', express.static(path.join(__dirname, 'uploads'))); app.use('/api/auth', require('./routes/auth')); app.use('/api/users', require('./routes/users')); app.use('/api/tasks', require('./routes/tasks')); app.use('/api/rocks', require('./routes/rocks')); app.use('/api/okrs', require('./routes/okrs')); app.use('/api/scorecard', require('./routes/scorecard')); app.use('/api/dashboard', require('./routes/dashboard')); app.get('/api/health', (req, res) => { res.json({ status: 'OK', timestamp: new Date().toISOString() }); }); if (process.env.NODE_ENV === 'production') { app.use(express.static(path.join(__dirname, 'public'))); app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'public/index.html')); }); } app.use((err, req, res, next) => { console.error(err.stack); res.status(500).json({ error: 'Something went wrong!' }); }); app.listen(PORT, () => { console.log(`PES System running on port ${PORT}`); }); module.exports = app;