Files
veille-tech-aggregator/app/server.js
T
2026-10-25 20:05:12 +01:00

70 lines
2.1 KiB
JavaScript

require('dotenv').config({ path: require('path').join(__dirname, '..', '.env') });
const express = require('express');
const session = require('express-session');
const helmet = require('helmet');
const compression = require('compression');
const path = require('path');
const fs = require('fs');
const { initDb } = require('./db');
const publicRoutes = require('./routes/public');
const adminRoutes = require('./routes/admin');
const cron = require('node-cron');
const app = express();
const PORT = process.env.PORT || 3000;
// Initialisation BDD
initDb();
// Middlewares
app.use(helmet({
contentSecurityPolicy: false, // simple pour ce projet
}));
app.use(compression());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'static')));
app.use(session({
secret: process.env.SESSION_SECRET || 'dev-secret-change-me',
resave: false,
saveUninitialized: false,
cookie: {
secure: false,
httpOnly: true,
sameSite: 'lax',
maxAge: 24 * 60 * 60 * 1000 // 24h
}
}));
// Vues
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'templates'));
// Routes
app.use('/', publicRoutes);
app.use('/admin', adminRoutes);
// Démarrage du collecteur automatique
if (process.env.NODE_ENV !== 'test') {
const interval = parseInt(process.env.COLLECT_INTERVAL || '60');
// Lancer toutes les X minutes
cron.schedule(`*/${interval} * * * *`, () => {
console.log('[CRON] Lancement de la collecte automatique...');
const { collect } = require('../collector/index');
collect().catch(err => console.error('[CRON] Erreur collecte:', err.message));
});
// Lancer une première collecte au démarrage après 5 secondes
setTimeout(() => {
console.log('[STARTUP] Première collecte...');
const { collect } = require('../collector/index');
collect().catch(err => console.error('[STARTUP] Erreur collecte:', err.message));
}, 5000);
}
app.listen(PORT, () => {
console.log(`Serveur démarré sur http://localhost:${PORT}`);
console.log(`Admin: http://localhost:${PORT}/admin`);
});