AutoCatBackend/index.js

51 lines
1.5 KiB
JavaScript

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());
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);
}