51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
//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}`);
|
|
}); |