import express from 'express'; import expressMongoDb from './middleware/mongo.js'; import users from './routes/user.js'; import vehicles from './routes/vehicles.js'; import events from './routes/events.js'; import notes from './routes/notes.js'; import bearerToken from 'express-bearer-token'; import jwt from './middleware/jwt.js'; import { createServer } from 'https'; import { readFileSync } from 'fs'; import compression from 'compression'; import { config } from 'dotenv'; import dotenvExpand from 'dotenv-expand'; import responseTime from 'response-time'; const app = express(); let dotenvConf = config(); dotenvExpand(dotenvConf); app.use(responseTime(function (req, res, time) { console.log(`${req.method} ${req.originalUrl} - [${time} ms]`); })); app.use(compression()); app.use(express.json({ limit: '5Mb' })); app.use(expressMongoDb(process.env.MONGO_CONNECTION_STRING)); app.use(bearerToken()); app.use(jwt({ secret: process.env.JWT_SECRET_AUTH, exclude: ['/user/signup', '/user/login', '/vehicles/shared_report'] })); app.use('/user', users); app.use('/vehicles', vehicles); app.use('/events', events); app.use('/notes', notes); // 404 for all unknown routes app.use((req, res) => { res.status(404).send({ success: false, error: 'Route not found' }); }); if(process.env.NODE_ENV == 'production') { const httpsServer = createServer({ key: readFileSync(process.env.PRIVATE_KEY_PATH), cert: readFileSync(process.env.CERT_PATH) }, app); httpsServer.listen(process.env.LISTEN_PORT); } else { app.listen(3000); }