65 lines
1.3 KiB
JavaScript
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}`);
|
|
});
|