Server Project
Description
This is a Node.js server application using Express and MongoDB. It includes authentication, logging, email handling, and security features.
Prerequisites
Ensure you have the following installed before running the project:
-
Node.js (v16 or later recommended)
-
MongoDB (Make sure MongoDB is running locally or provide a connection string)
Installation
$3
cd server
npm install
$3
PORT=8000
NODE_ENV=development
MONGO_URI=mongodb://localhost:27017/Boiler
JWT_SECRET=secert@97397hh83y4h
REFRESH_TOKEN_EXPIRY=7d
ENCRYPTION_SECRET=12345678901234567890123456789012
EMAIL_USER=your@example.com
EMAIL_PASSWORD=kbay rnnm owtl uwzx
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
$3
npm start
Project Structure
server/
│── src/
│ ├── config/ # Configuration files
│ ├── middleware/ # Express middleware
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── services/ # Business logic and services
│ ├── utils/ # Utility functions
│ ├── validation/ # Request validation schemas
│── app.js # Application entry point
│── server.js # Server setup
│── package.json # Project dependencies and scripts
│── README.md # Project documentation
Dependencies
The following dependencies are used in this project:
bcrypt → Secure password hashing
cors → Enable Cross-Origin Resource Sharing (CORS)
crypto-js → Encryption and decryption utilities
dotenv → Load environment variables from .env files
express → Web framework for Node.js
express-session → Session management
helmet → Security headers for Express applications
http-status-codes → Standardized HTTP response status codes
joi → Request validation
jsonwebtoken → JWT-based authentication
mongodb & mongoose → MongoDB ORM for managing data
morgan → HTTP request logging
nodemailer → Sending emails
winston & winston-daily-rotate-file → Logging management
Development Dependencies
nodemon → Automatically restarts the server when code changes