const express = require('express'); const cors = require('cors'); const helmet = require('helmet'); const { Pool } = require('pg'); const app = express(); const PORT = process.env.PORT || 3001; // Middleware app.use(helmet()); app.use(cors({ origin: process.env.CORS_ORIGIN || '*' })); app.use(express.json()); // Database pool const pool = new Pool({ connectionString: process.env.DATABASE_URL }); // Health check app.get('/health', async (req, res) => { try { await pool.query('SELECT 1'); res.json({ status: 'ok', timestamp: new Date().toISOString() }); } catch (err) { res.status(500).json({ status: 'error', message: err.message }); } }); // Routes app.use('/api/ambitos', require('./routes/ambitos')(pool)); app.use('/api/nodos', require('./routes/nodos')(pool)); app.use('/api/bitacoras', require('./routes/bitacoras')(pool)); app.use('/api/entradas', require('./routes/entradas')(pool)); app.use('/api/proyectos', require('./routes/proyectos')(pool)); app.use('/api/gestion', require('./routes/gestion')(pool)); app.use('/api/resumen', require('./routes/resumen')(pool)); app.use('/api/docs', require('./routes/docs')()); // Error handler app.use((err, req, res, next) => { console.error('Error:', err.message); res.status(500).json({ error: err.message }); }); app.listen(PORT, () => { console.log(`🔐 dtic-BITACORAs API corriendo en puerto ${PORT}`); });