Source: app.js

/**
 * @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}`)
);