Server Entry Point
Detailed breakdown of server.js — the main Express application entry point.
Server Entry Point — server.js
The file server.js is the primary entry point for the SLMS backend. It initializes the Express application, registers all middleware, connects to MongoDB, mounts all API route modules, and starts the HTTP server.
File Location
backend/server.jsComplete Breakdown
1. Dependency Imports
const express = require('express');
const cors = require('cors');
const helmet = require('helmet');
const morgan = require('morgan');
require('dotenv').config();
const connectDB = require('./utils/db');| Import | Purpose |
|---|---|
express | Core web framework |
cors | Cross-Origin Resource Sharing — allows frontend on :3000 to call API on :5000 |
helmet | Sets secure HTTP headers automatically |
morgan | Logs every HTTP request in dev format |
dotenv | Loads .env variables into process.env |
connectDB | Custom utility to establish MongoDB connection |
2. Middleware Registration Order
app.use(express.json()); // Parse JSON bodies
app.use(cors()); // Allow cross-origin requests
app.use(helmet()); // Security headers
app.use(morgan('dev')); // Request loggingOrder matters.
express.json()must come before route handlers soreq.bodyis populated.cors()andhelmet()should precede routes for security.
3. Database Connection
connectDB();Called once at startup. See Backend Utilities → Database Connection for implementation details.
4. Route Mounting
app.use('/api/v1/auth', authRoutes);
app.use('/api/v1/users', userRoutes);
app.use('/api/v1/books', bookRoutes);
app.use('/api/v1/circulation', circulationRoutes);
app.use('/api/v1/fines', fineRoutes);
app.use('/api/v1/dashboard', dashboardRoutes);All routes are namespaced under /api/v1/ for API versioning.
5. Health Check
app.get('/health', (req, res) => {
res.status(200).json({ status: 'ok', message: 'SLMS API is running' });
});A simple endpoint for infrastructure monitoring — returns 200 OK when the server is responsive.
6. Error Handlers
// 404 — No route matched
app.use((req, res) => {
res.status(404).json({ error: 'Endpoint not found' });
});
// 500 — Unhandled errors
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: 'Internal Server Error' });
});7. Server Start
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`SLMS API running on port ${PORT}`);
});npm Scripts
| Script | Command | Purpose |
|---|---|---|
npm start | node server.js | Production start |
npm run dev | nodemon server.js | Development with auto-reload |