MVC Folder Structure for Express Apps

MVC Folder Structure in Express.js — বিস্তারিত ব্যাখ্যা

বড় বা প্রফেশনাল যেকোনো Express.js অ্যাপে MVC Architecture ব্যবহার করলে কোড অনেক পরিষ্কার, মেইন্টেইনেবল ও স্কেলেবল হয়। MVC মানে — Model, View & Controller, যেখানে প্রতিটি অংশের আলাদা দায়িত্ব থাকে।

🔹 MVC কী?

MVC (Model–View–Controller) হলো একটি আর্কিটেকচারাল প্যাটার্ন যার মূল উদ্দেশ্য হলো অ্যাপ্লিকেশনকে তিন ভাগে ভাগ করে মেইন্টেইন করা সহজ করা:

  • Model: ডেটা, ডাটাবেস ও লজিক সম্পর্কিত কাজ
  • View: UI/Template (EJS, Pug ইত্যাদি)
  • Controller: Request/Response হ্যান্ডেল করে
MVC = Code Clean + Easy to Manage + Scalability + Team Friendly

🔹 Typical MVC Folder Structure

project/
│── server.js
│── config/
│     └── db.js
│── controllers/
│     └── userController.js
│── models/
│     └── userModel.js
│── routes/
│     └── userRoutes.js
│── views/
│     └── index.ejs
│── middlewares/
│     └── authMiddleware.js
│── public/
│     └── css/
│     └── images/
    

এটি হলো একটি স্ট্যান্ডার্ড প্রফেশনাল স্ট্রাকচার, যা Express.js এ MVC ব্যবহার করতে সাহায্য করে।

🔹 প্রতিটি ফোল্ডারের কাজ

1️⃣ config/ → Database & Configuration Setup

এই ফোল্ডারে Database Connection বা প্রয়োজনীয় configuration ফাইল থাকে।

// config/db.js
const mongoose = require('mongoose');

const connectDB = () => {
    mongoose.connect(process.env.MONGO_URL)
        .then(() => console.log('DB Connected'))
        .catch(err => console.log(err));
};

module.exports = connectDB;
    

2️⃣ models/ → Database Schema & Structure

Model ফাইলগুলো ডাটাবেসে কোন ডেটা কীভাবে থাকবে তা নির্ধারণ করে।

// models/userModel.js
const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    name: String,
    email: String
});

module.exports = mongoose.model('User', userSchema);
    

3️⃣ controllers/ → Logic & Request Handling

Controller ফাইলগুলো request & response হ্যান্ডেল করে এবং model এর সাথে কাজ করে।

// controllers/userController.js
const User = require('../models/userModel');

exports.getUsers = async (req, res) => {
    const users = await User.find();
    res.json(users);
};

exports.createUser = async (req, res) => {
    const user = await User.create(req.body);
    res.json(user);
};
    

4️⃣ routes/ → Routing (URL Management)

Router ফাইলগুলো UI/Controller এর সাথে URL connect করে।

// routes/userRoutes.js
const express = require('express');
const router = express.Router();
const { getUsers, createUser } = require('../controllers/userController');

router.get('/', getUsers);
router.post('/create', createUser);

module.exports = router;
    

5️⃣ views/ → UI Templates

যদি EJS বা Pug ব্যবহার করা হয়, তবে template ফাইলগুলো এখানে রাখা হয়।


Welcome to Home Page

6️⃣ middlewares/ → Custom Middleware

// middlewares/authMiddleware.js
module.exports = (req, res, next) => {
    console.log("Auth Checking...");
    next();
};
    

7️⃣ public/ → Static Files

CSS, JS, Images ইত্যাদি static assets public ফোল্ডারে থাকে।

🔹 server.js — Main Application File

const express = require('express');
const app = express();
const connectDB = require('./config/db');

// Middlewares
app.use(express.json());
app.use(express.static('public'));

// View Engine
app.set('view engine', 'ejs');

// Routes
app.use('/users', require('./routes/userRoutes'));

// Database Connect
connectDB();

app.listen(3000, () => {
    console.log("Server running on port 3000");
});
    

📌 Conclusion

Express.js এ MVC structure ব্যবহার করলে Project পরিষ্কার, সহজে maintainable এবং scalable হয়। Professional developers সবসময় MVC আর্কিটেকচার follow করে থাকে।

Tip: বড় অ্যাপ বানাতে চাইলে প্রথম দিন থেকেই MVC Structure ব্যবহার করুন।
👼 Quiz
/

লোড হচ্ছে...