06 Project Structure
Jab project bada hota hai, to sab code ek server.js file me rakhna paagalpan hai! ๐คฏ
Humein ek Standard Folder Structure chahiye. Industry me sabse common pattern hai MVC (Model-View-Controller).
The Production-Ready Structure ๐๏ธ
Aapka project kuch aisa dikhna chahiye:
my-node-app/โโโโ node_modules/ (Dependencies - Don't touch)โโโ src/โ โโโ config/ (Database connect, Passport strategies)โ โ โโโ db.jsโ โโ โโโ controllers/ (Logic yahan likhein - Request/Response handle)โ โ โโโ userController.jsโ โโ โโโ models/ (Database Schemas - Mongoose Models)โ โ โโโ User.jsโ โโ โโโ routes/ (API endpoints definition)โ โ โโโ userRoutes.jsโ โโ โโโ middlewares/ (Auth check, Error handlers)โ โ โโโ authMiddleware.jsโ โโ โโโ utils/ (Helper functions like 'sendEmail')โ โโโ emailSender.jsโโโโ .env (Secret keys, Port, DB_URL)โโโ .gitignore (node_modules aur .env ko ignore karein)โโโ package.json (Project details aur scripts)โโโ server.js (Entry point - Sirf server start karega)Folder by Folder Breakdown
1. config/ (Settings)
Database connection ya third-party services (AWS, Nodemailer) ki settings yahan rakhein.
Example: db.js
// Database connection logicconst mongoose = require('mongoose');const connectDB = async () => { ... };module.exports = connectDB;2. models/ (Data Shape)
Aapka data kaisa dikhega? Ye Mongoose schemas hain.
Example: User.js
const userSchema = new mongoose.Schema({ name: String, email: String });module.exports = mongoose.model('User', userSchema);3. routes/ (Raaste)
Sirf endpoints define karein, logic nahi.
Example: userRoutes.js
const express = require('express');const router = express.Router();const { registerUser } = require('../controllers/userController');
router.post('/register', registerUser); // Logic controller me hai
module.exports = router;4. controllers/ (The Brain ๐ง )
Asli logic yahan hota hai. Request aati hai, process hoti hai, aur response jata hai.
Example: userController.js
const User = require('../models/User');
exports.registerUser = async (req, res) => { // 1. Data validate karo // 2. User create karo // 3. Response bhejo res.status(201).json({ message: "User created" });};5. middlewares/ (Guardians ๐ก๏ธ)
Routes ko protect karne ke liye.
Example: authMiddleware.js
const protect = (req, res, next) => { // Token check karo if (!token) return res.status(401).send("Not Authorized"); next();};Server.js (Entry Point)
Ye file ab clean honi chahiye!
require('dotenv').config();const express = require('express');const connectDB = require('./src/config/db');const userRoutes = require('./src/routes/userRoutes');
const app = express();
// Database ConnectconnectDB();
// Middlewaresapp.use(express.json());
// Routesapp.use('/api/users', userRoutes);
const PORT = process.env.PORT || 5000;app.listen(PORT, () => console.log(`Server running on port ${PORT}`));Summary
Organization is key to scalability.
- MVC Pattern use karein.
- Logic ko
controllersme rakhein. - Routes ko
routesfolder me. - Configs aur Models alag rakhein.
Is tarah aapka code clean, readable, aur maintainable rahega! ๐งนโจ