graph LR
    A[Request] -->|1| B[Middleware]
    B --> C{Router}
    C -->|2a| D[Controller]
    C -->|2b| E[Model]
    D -->|3a| F[View]
    E -->|3b| D
    D -->|4| G[Response]
    F -->|5| G

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#fcf,stroke:#333,stroke-width:2px
    style C fill:#ccf,stroke:#333,stroke-width:2px
    style D fill:#cff,stroke:#333,stroke-width:2px
    style E fill:#cfc,stroke:#333,stroke-width:2px
    style F fill:#ffc,stroke:#333,stroke-width:2px
    style G fill:#f9f,stroke:#333,stroke-width:2px
Request
La solicitud HTTP entra en la aplicación.
Middleware
Procesa la solicitud inicial, realizando tareas como autenticación, registro, etc.
Router
Determina a qué controlador se debe enviar la solicitud.
Controller
Recibe la solicitud del router, maneja la lógica de la aplicación y envía la respuesta de vuelta al usuario
Model
Representa la estructura de datos de la aplicación y lógica de negocio relacionada.
View
Genera la salida visual que será mostrada al usuario.
Response
La respuesta puede ser una vista renderizada, datos JSON, etc.