MVC Architecture

  • MVC architecture separates application logic into Model, View, and Controller for better organization and scalability.
  • What is MVC?

    MVC stands for Model, View, and Controller.
    It divides an application into three interconnected components, each handling a specific responsibility.

    This separation allows developers to work on logic, UI, and data independently.


    Why MVC is Important

    • Clear separation of concerns

    • Cleaner and organized codebase

    • Easier debugging and testing

    • Supports team-based development

    • Industry-standard architecture

    Real-World Analogy

    Think of a restaurant:

    • View → Menu & food presentation

    • Controller → Waiter taking orders

    • Model → Kitchen & ingredients (data)


    MVC Flow

User Request
   ↓
Controller
   ↓
Model
   ↓
Controller
   ↓
View (Response)
  • Role of Model, View, Controller

    🔹 Model

    Role:
    The Model manages application data and business rules.
    It directly interacts with the database.


    Responsibilities

    • Define data structure (schemas)

    • Perform database operations

    • Apply business rules

    Example (Node + MongoDB)

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

module.exports = mongoose.model("User", userSchema);
  • 🔹 View

    Role:
    The View is responsible for presenting data to the user.

    In backend-focused applications, the view is usually:

    • JSON responses

    • API output

    Responsibilities

    • Display data

    • Format response

    • No business logic

    Example

{
  "name": "Amit",
  "email": "amit@gmail.com"
}
  • 🔹 Controller

    Role:
    The Controller acts as a bridge between Model and View.
    It receives requests, processes logic, and returns responses.


    Responsibilities

    • Handle incoming requests

    • Call model methods

    • Send appropriate response

    Example

const User = require("../models/User");

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

module.exports = { getUsers };
  • MVC in Express.js

    Typical MVC Folder Structure

src/
 ├── models/
 ├── controllers/
 ├── routes/
 └── views/
  • Request Flow in MVC

Client
  ↓
Route
  ↓
Controller
  ↓
Model
  ↓
Controller
  ↓
Response (View)
  • Advantages of MVC
    • Easy to scale applications

    • Clear code ownership

    • Improved testability

    • Faster development in teams


    MVC Architecture Summary

    • MVC separates data, logic, and presentation

    • Model handles data

    • Controller handles logic

    • View handles response

    • Common pattern in Express & MERN apps