/**
* @file Main application file for the Event Registration System.
* @description Sets up the Express server, connects to the database,
* configures middleware, and mounts the application routes.
* @requires express
* @requires dotenv
* @requires cors
* @requires ./config/db
* @requires ./routes/userRoutes
* @requires ./routes/eventRoutes
* @requires ./routes/registrationRoutes
*/
const express = require("express");
const dotenv = require("dotenv");
const cors = require("cors");
const connectDB = require("./config/db");
// Route files
const userRoutes = require("./routes/userRoutes");
const eventRoutes = require("./routes/eventRoutes");
const registrationRoutes = require("./routes/registrationRoutes");
// Load environment variables from .env file
dotenv.config();
// Connect to the database
connectDB();
/**
* The Express application instance.
* @type {Object}
*/
const app = express();
/**
* Middleware to enable Cross-Origin Resource Sharing (CORS).
* Allows requests from different origins.
*/
app.use(cors());
/**
* Middleware to parse incoming JSON request bodies.
*/
app.use(express.json());
/**
* Root API route handler.
* @route GET /
* @description Returns a welcome message for the API.
* @access Public
* @param {Object} req - Express request object.
* @param {Object} res - Express response object.
*/
app.get("/", (req, res) => {
res.send("Event Registration API is running... 🎉");
});
// Mount routers
app.use("/api/users", userRoutes);
app.use("/api/events", eventRoutes);
app.use("/api/registrations", registrationRoutes);
/**
* The port the server will listen on.
* @type {number}
*/
const PORT = process.env.PORT || 5000;
/**
* Start the Express server.
* Logs the server mode and port when it starts.
*/
app.listen(PORT, () =>
console.log(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`)
);