fcsc_ipi_backend/server.js

65 lines
1.3 KiB
JavaScript

const express = require("express");
const cors = require("cors");
const helmet = require("helmet");
const morgan = require("morgan");
const swaggerUi = require("swagger-ui-express");
const swaggerJsdoc = require("swagger-jsdoc");
const routes = require("./app/routes/routes");
const db = require("./app/models");
require("dotenv").config();
const app = express();
app.use(express.json());
app.use(cors());
app.use(helmet());
app.use(morgan("dev"));
// Swagger setup
const swaggerOptions = {
definition: {
openapi: "3.0.0",
info: {
title: "FCSC IPI Survey",
version: "1.0.0",
description: "User management + Auth API using Sequelize and Swagger",
},
components: {
securitySchemes: {
bearerAuth: {
type: "http",
scheme: "bearer",
bearerFormat: "JWT",
},
},
},
security: [
{
bearerAuth: [],
},
],
},
apis: ["./app/routes/*.js"],
};
const swaggerDocs = swaggerJsdoc(swaggerOptions);
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocs));
// Routes
app.use("/api", routes);
// Sync DB
db.sequelize.sync({ alter: true }).then(() => {
console.log("✅ Database connected & synced.");
});
// Start server
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`🚀 Server running on port ${PORT}`);
});