//server.js const nodemailer = require('nodemailer'); const express = require('express'); const path = require('path'); const { Pool } = require('pg'); const rateLimit = require('express-rate-limit'); require('dotenv').config(); const app = express(); const port = process.env.SERVER_PORT || 3000; app.use((req, res, next) => { console.log(`Incoming request: ${req.method} ${req.url}`); next(); }); app.set('trust proxy', 1); app.use(express.json()); const STATIC_DIR = process.env.STATIC_DIR || 'public' app.use(express.static(path.join(__dirname, STATIC_DIR))); // Setup database connection pool using environment variables const pool = new Pool({ user: process.env.DB_USER, host: process.env.DB_HOST, database: process.env.DB_DATABASE, password: process.env.DB_PASSWORD, port: process.env.DB_PORT, }); // Configure Nodemailer for sending emails via Brevo relay const transporter = nodemailer.createTransport({ host: process.env.EMAIL_HOST, port: 2525, secure: false, requireTLS: true, auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS, }, }); const contactController = require('./controllers/contactController')(pool, transporter); const securityMw = require('./middleware/securityMw'); const contactRoutes = require('./routes/contactRoutes')(contactController, securityMw); app.use('/api', contactRoutes); app.listen(port, () => { console.log(`Server listening at http://localhost:${port}`); });