# Request / Response Flow This chart shows how a browser request moves through the MindVisionCode framework and how a response is built and returned. ```mermaid flowchart TD A[Browser Request] --> B[public/index.php] B --> C[autoload.php / vendor autoload] B --> D[ensureSessionStarted()] B --> E[Create App + Router] B --> F[Load routes/web.php] B --> G[Request::capture()] G --> H[Dispatcher::dispatch()] H --> I{Route matched?} I -- No --> J[Response::notFound()] I -- Yes --> K[Route::dispatch()] K --> L[App::call()] L --> M{Handler type} M -- Controller method --> N[Controller action] M -- Closure --> O[Route closure] N --> P[Repository / ViewModel / Service calls] P --> Q[Database::query() / execute()] N --> R[view() / json() / redirect()] O --> R R --> S[Response object] J --> S H --> T[normalizeResponse()] T --> S S --> U[Response::send()] U --> V[Browser receives HTML / JSON / redirect] ``` ## Response building paths ### View response ```text Controller -> view() -> View::render() -> template -> layout -> Response ``` ### JSON response ```text Controller -> json() -> Response::json() -> Response::send() ``` ### Redirect response ```text Controller -> redirect() -> Response::redirect() -> Response::send() ``` ## Key classes - `public/index.php` bootstraps the app - `Core\Dispatcher` matches routes and handles errors - `Core\Route` extracts route parameters - `Core\App` invokes controller methods or closures - `Core\Controller` gives actions helper methods - `Core\View` renders templates into a layout - `Core\Response` sends the final output