# fauzan1892/php-mvc-codekop architecture

> Architecture diagram of the GitHub repository fauzan1892/php-mvc-codekop, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fauzan1892/php-mvc-codekop
- Repository: https://github.com/fauzan1892/php-mvc-codekop

## Overview

Codekop PHP MVC is a lightweight PHP web/API framework. Its documented request path is browser or API client → front controller → configuration and routes → dispatcher/middleware → controller → view or JSON response, with optional database/model work. A separate queue capability dispatches jobs through configurable file or database drivers and supports CLI workers, retries, and backoff. The README supplies the high-level flow; source excerpts clarify dispatch, routing, sessions, and queue ownership. Some capabilities are documented but their implementation was not sampled, so those links are omitted or marked unverified.

Main entry points: [`system/Core/App.php`](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/App.php) (Dispatcher), [`system/Core/Controller.php`](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Controller.php) (Base controller), [`index.php`](https://github.com/fauzan1892/php-mvc-codekop/blob/main/index.php) (Front controller), [`system/Queue/QueueManager.php`](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/QueueManager.php) (Queue manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_http["HTTP entry"]
  node_front["Front controller<br/>[index.php]"]
  node_appconfig["App configuration<br/>[Config.php]"]
  node_routeconfig["Route aggregator<br/>[Routes.php]"]
  node_webroutes["Web routes<br/>[web.php]"]
  node_apiroutes["API routes<br/>[api.php]"]
end

subgraph group_runtime["Request runtime"]
  node_dispatcher["Dispatcher<br/>[App.php]"]
  node_router["HTTP router<br/>[Route.php]"]
  node_middleware["Middleware resolution<br/>[Route.php]"]
  node_request["Request parsing<br/>[Request.php]"]
  node_response["HTTP responses<br/>[Response.php]"]
  node_controllerbase["Base controller<br/>[Controller.php]"]
  node_session["Session manager<br/>[Session.php]"]
  node_csrf["CSRF security<br/>[Security.php]"]
  node_views["View loader<br/>[Views.php]"]
  node_database[("PDO database<br/>[Database.php]")]
end

subgraph group_app["Application features"]
  node_home["Home controller<br/>[Home.php]"]
  node_api["API controller<br/>[Api.php]"]
  node_viewtemplates["PHP views"]
  node_models["Models / CRUD<br/>[Models.php]"]
  node_jwt["JWT middleware<br/>[JwtMiddleware.php]"]
end

subgraph group_queue["Background jobs"]
  node_queueapi["Queue API<br/>[Queue.php]"]
  node_queuemanager["Queue manager<br/>[QueueManager.php]"]
  node_job["Application jobs"]
  node_filedriver["File queue driver"]
  node_dbdriver["Database queue driver"]
  node_queuecontract["Queue driver contract<br/>[QueueDriver.php]"]
  node_queuedata[("Queue storage")]
  node_worker["CLI worker<br/>[console.php]"]
end

node_browser(("Browser / API client"))

node_browser -->|"sends request"| node_front
node_front -->|"loads configuration"| node_appconfig
node_front -->|"loads routes"| node_routeconfig
node_routeconfig -->|"requires routes"| node_webroutes
node_routeconfig -->|"requires routes"| node_apiroutes
node_front -->|"starts runtime"| node_dispatcher
node_dispatcher -->|"reads request"| node_request
node_dispatcher -->|"matches route"| node_router
node_dispatcher -->|"checks access"| node_middleware
node_router -->|"resolves middleware"| node_middleware
node_dispatcher -->|"dispatches controller"| node_home
node_dispatcher -->|"dispatches controller"| node_api
node_dispatcher -->|"sends result"| node_response
node_home -->|"extends"| node_controllerbase
node_api -->|"extends"| node_controllerbase
node_controllerbase -->|"starts session"| node_session
node_controllerbase -->|"opens connection"| node_database
node_controllerbase -->|"creates loader"| node_views
node_views -->|"loads templates"| node_viewtemplates
node_home -->|"renders view"| node_views
node_controllerbase -->|"loads models"| node_models
node_models -.->|"uses PDO"| node_database
node_controllerbase -->|"provides security"| node_csrf
node_middleware -->|"resolves class"| node_jwt
node_queueapi -->|"dispatches work"| node_queuemanager
node_worker -->|"runs worker"| node_queueapi
node_queuemanager -.->|"hydrates and runs"| node_job
node_queuemanager -->|"selects driver"| node_filedriver
node_queuemanager -->|"selects driver"| node_dbdriver
node_filedriver -->|"implements"| node_queuecontract
node_dbdriver -->|"implements"| node_queuecontract
node_filedriver -.->|"stores payloads"| node_queuedata
node_dbdriver -->|"uses PDO"| node_database

click node_front "https://github.com/fauzan1892/php-mvc-codekop/blob/main/index.php"
click node_appconfig "https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Config/Config.php"
click node_routeconfig "https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Config/Routes.php"
click node_webroutes "https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Routes/web.php"
click node_apiroutes "https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Routes/api.php"
click node_dispatcher "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/App.php"
click node_router "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Route.php"
click node_middleware "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Route.php"
click node_request "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Request.php"
click node_response "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Response.php"
click node_controllerbase "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Controller.php"
click node_session "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Session.php"
click node_csrf "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Security.php"
click node_home "https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Controllers/Home.php"
click node_api "https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Controllers/Api.php"
click node_views "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Views.php"
click node_viewtemplates "https://github.com/fauzan1892/php-mvc-codekop/tree/main/app/Views"
click node_models "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Models.php"
click node_database "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Database.php"
click node_jwt "https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Middleware/JwtMiddleware.php"
click node_queueapi "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/Queue.php"
click node_queuemanager "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/QueueManager.php"
click node_job "https://github.com/fauzan1892/php-mvc-codekop/tree/main/app/Jobs"
click node_filedriver "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/FileQueueDriver.php"
click node_dbdriver "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/DatabaseQueueDriver.php"
click node_queuecontract "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/Contracts/QueueDriver.php"
click node_queuedata "https://github.com/fauzan1892/php-mvc-codekop/tree/main/storage/queue"
click node_worker "https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/console.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_front,node_appconfig,node_routeconfig,node_webroutes,node_apiroutes,node_browser toneBlue
class node_dispatcher,node_router,node_middleware,node_request,node_response,node_controllerbase,node_session,node_csrf,node_views,node_database toneAmber
class node_home,node_api,node_viewtemplates,node_models,node_jwt toneMint
class node_queueapi,node_queuemanager,node_job,node_filedriver,node_dbdriver,node_queuecontract,node_queuedata,node_worker toneRose
```

## Components

### HTTP entry

- [Front controller](https://github.com/fauzan1892/php-mvc-codekop/blob/main/index.php): `index.php`
- [App configuration](https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Config/Config.php): `app/Config/Config.php`
- [Route aggregator](https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Config/Routes.php): `app/Config/Routes.php`
- [Web routes](https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Routes/web.php): `app/Routes/web.php`
- [API routes](https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Routes/api.php): `app/Routes/api.php`

### Request runtime

- [Dispatcher](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/App.php): `system/Core/App.php`
- [HTTP router](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Route.php): `system/Core/Route.php`
- [Middleware resolution](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Route.php): `system/Core/Route.php`
- [Request parsing](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Request.php): `system/Core/Request.php`
- [HTTP responses](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Response.php): `system/Core/Response.php`
- [Base controller](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Controller.php): `system/Core/Controller.php`
- [Session manager](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Session.php): `system/Core/Session.php`
- [CSRF security](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Security.php): `system/Core/Security.php`
- [View loader](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Views.php): `system/Core/Views.php`
- [PDO database](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Database.php): `system/Database.php`

### Application features

- [Home controller](https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Controllers/Home.php): `app/Controllers/Home.php`
- [API controller](https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Controllers/Api.php): `app/Controllers/Api.php`
- [PHP views](https://github.com/fauzan1892/php-mvc-codekop/tree/main/app/Views): `app/Views`
- [Models / CRUD](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Core/Models.php): `system/Core/Models.php`
- [JWT middleware](https://github.com/fauzan1892/php-mvc-codekop/blob/main/app/Middleware/JwtMiddleware.php): `app/Middleware/JwtMiddleware.php`

### Background jobs

- [Queue API](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/Queue.php): `system/Queue/Queue.php`
- [Queue manager](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/QueueManager.php): `system/Queue/QueueManager.php`
- [Application jobs](https://github.com/fauzan1892/php-mvc-codekop/tree/main/app/Jobs): `app/Jobs`
- [File queue driver](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/FileQueueDriver.php): `system/Queue/FileQueueDriver.php`
- [Database queue driver](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/DatabaseQueueDriver.php): `system/Queue/DatabaseQueueDriver.php`
- [Queue driver contract](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/Queue/Contracts/QueueDriver.php): `system/Queue/Contracts/QueueDriver.php`
- [Queue storage](https://github.com/fauzan1892/php-mvc-codekop/tree/main/storage/queue): `storage/queue`
- [CLI worker](https://github.com/fauzan1892/php-mvc-codekop/blob/main/system/console.php): `system/console.php`

### Other components

- **Browser / API client**

## Connections

- Browser / API client → Front controller: sends request
- Front controller → App configuration: loads configuration
- Front controller → Route aggregator: loads routes
- Route aggregator → Web routes: requires routes (evidence: `app/Config/Routes.php`)
- Route aggregator → API routes: requires routes (evidence: `app/Config/Routes.php`)
- Front controller → Dispatcher: starts runtime
- Dispatcher → Request parsing: reads request (evidence: `system/Core/App.php`)
- Dispatcher → HTTP router: matches route (evidence: `system/Core/App.php`)
- Dispatcher → Middleware resolution: checks access (evidence: `system/Core/App.php`)
- HTTP router → Middleware resolution: resolves middleware (evidence: `system/Core/Route.php`)
- Dispatcher → Home controller: dispatches controller (evidence: `system/Core/App.php`)
- Dispatcher → API controller: dispatches controller
- Dispatcher → HTTP responses: sends result (evidence: `system/Core/App.php`)
- Home controller → Base controller: extends (evidence: `app/Controllers/Home.php`)
- API controller → Base controller: extends (evidence: `app/Controllers/Api.php`)
- Base controller → Session manager: starts session (evidence: `system/Core/Controller.php`)
- Base controller → PDO database: opens connection (evidence: `system/Core/Controller.php`)
- Base controller → View loader: creates loader (evidence: `system/Core/Controller.php`)
- View loader → PHP views: loads templates (evidence: `app/Views/tes_view.php`)
- Home controller → View loader: renders view (evidence: `app/Controllers/Home.php`)
- Base controller → Models / CRUD: loads models (evidence: `system/Core/Controller.php`)
- Models / CRUD → PDO database: uses PDO
- Base controller → CSRF security: provides security (evidence: `system/Core/Controller.php`)
- Middleware resolution → JWT middleware: resolves class (evidence: `system/Core/Route.php`)
- Queue API → Queue manager: dispatches work (evidence: `system/Queue/Queue.php`)
- CLI worker → Queue API: runs worker (evidence: `system/console.php`)
- Queue manager → Application jobs: hydrates and runs
- Queue manager → File queue driver: selects driver (evidence: `system/Queue/QueueManager.php`)
- Queue manager → Database queue driver: selects driver (evidence: `system/Queue/QueueManager.php`)
- File queue driver → Queue driver contract: implements (evidence: `system/Queue/FileQueueDriver.php`)
- Database queue driver → Queue driver contract: implements (evidence: `system/Queue/DatabaseQueueDriver.php`)
- File queue driver → Queue storage: stores payloads
- Database queue driver → PDO database: uses PDO (evidence: `system/Queue/DatabaseQueueDriver.php`)
