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 হ্যান্ডেল করে
🔹 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 করে থাকে।