# seymenkonuk/framework architecture

> Architecture diagram of the GitHub repository seymenkonuk/framework, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/seymenkonuk/framework
- Repository: https://github.com/seymenkonuk/framework

## Overview

This is a lightweight PHP web framework. Its main workflow is to accept an HTTP request, match it to a configured route, apply middleware and optional request-schema validation, invoke a closure or controller, and produce a response. Routing supports fluent and attribute-based definitions, groups, parameter constraints, and authentication. Other documented capabilities include dependency injection, templates, sessions, flash messages, cache, CSRF, and database abstractions. Some runtime wiring is not visible in the excerpts, so those relationships are omitted or marked unverified.

Main entry points: [`src/Routing/Router.php`](https://github.com/seymenkonuk/framework/blob/main/src/Routing/Router.php) (Router), [`src/Application.php`](https://github.com/seymenkonuk/framework/blob/main/src/Application.php) (Application), [`src/Http/Request/Request.php`](https://github.com/seymenkonuk/framework/blob/main/src/Http/Request/Request.php) (HTTP Request), [`src/Http/Response/Response.php`](https://github.com/seymenkonuk/framework/blob/main/src/Http/Response/Response.php) (HTTP Response)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Application Runtime"]
  node_application["Application<br/>[Application.php]"]
  node_container["Dependency Container<br/>[Container.php]"]
  node_reflection["Reflection Resolver<br/>[Reflect.php]"]
end

subgraph group_routing["Routing and Dispatch"]
  node_attribute_resolver["Attribute Resolver"]
  node_router["Router<br/>[Router.php]"]
  node_route["Route Configuration<br/>[Route.php]"]
  node_route_state["Route State<br/>[RouteState.php]"]
  node_route_attributes["Route Attributes"]
  node_middleware["Middleware<br/>[Middleware.php]"]
  node_request_schema["Request Validation"]
end

subgraph group_http["HTTP Handling"]
  node_request["HTTP Request<br/>[Request.php]"]
  node_uploaded_file["Uploaded Files"]
  node_controller["Controller Base<br/>[Controller.php]"]
  node_response["HTTP Response<br/>[Response.php]"]
  node_response_state["Response State<br/>[ResponseState.php]"]
  node_template["Template Engines"]
end

subgraph group_state["State and Security"]
  node_session["Session<br/>[PhpSession.php]"]
  node_flash["Flash Messages<br/>[SessionFlash.php]"]
  node_csrf["CSRF Tokens"]
  node_auth["Authentication Services<br/>[IAuthService.php]"]
end

subgraph group_services["Services and Persistence"]
  node_cache["Cache<br/>[ICache.php]"]
  node_redis_cache["Redis Cache<br/>[RedisCache.php]"]
  node_sql_repository["SQL Repository<br/>[SqlRepository.php]"]
  node_sql_connection["SQL Connection<br/>[ISqlConnection.php]"]
  node_mysql["MySQL Driver"]
end

node_client(("HTTP Client"))

node_client -->|"sends request"| node_request
node_request -.->|"enters runtime"| node_application
node_application -->|"creates"| node_container
node_application -->|"creates"| node_router
node_router -->|"registers routes"| node_route
node_router -->|"resolves attributes"| node_attribute_resolver
node_attribute_resolver -->|"uses reflection"| node_reflection
node_route -->|"creates state"| node_route_state
node_route_attributes -->|"modifies routes"| node_route
node_router -.->|"matches request"| node_request
node_router -.->|"dispatches middleware"| node_middleware
node_router -.->|"validates request"| node_request_schema
node_router -.->|"invokes handler"| node_controller
node_request -->|"wraps uploads"| node_uploaded_file
node_controller -->|"returns response"| node_response
node_response -->|"renders views"| node_template
node_response -->|"creates state"| node_response_state
node_application -->|"binds service"| node_session
node_flash -->|"uses session"| node_session
node_csrf -->|"uses session"| node_session
node_middleware -->|"checks identity"| node_auth
node_redis_cache -.->|"implements"| node_cache
node_sql_repository -->|"uses connection"| node_sql_connection
node_mysql -.->|"implements"| node_sql_connection

click node_application "https://github.com/seymenkonuk/framework/blob/main/src/Application.php"
click node_container "https://github.com/seymenkonuk/framework/blob/main/src/Container.php"
click node_reflection "https://github.com/seymenkonuk/framework/blob/main/src/Reflection/Reflect.php"
click node_attribute_resolver "https://github.com/seymenkonuk/framework/blob/main/src/Reflection/AttributeResolver.php"
click node_router "https://github.com/seymenkonuk/framework/blob/main/src/Routing/Router.php"
click node_route "https://github.com/seymenkonuk/framework/blob/main/src/Routing/Route.php"
click node_route_state "https://github.com/seymenkonuk/framework/blob/main/src/Routing/RouteState.php"
click node_route_attributes "https://github.com/seymenkonuk/framework/tree/main/src/Attribute"
click node_middleware "https://github.com/seymenkonuk/framework/blob/main/src/Http/Middleware.php"
click node_request_schema "https://github.com/seymenkonuk/framework/tree/main/src/Http/RequestSchema"
click node_request "https://github.com/seymenkonuk/framework/blob/main/src/Http/Request/Request.php"
click node_uploaded_file "https://github.com/seymenkonuk/framework/blob/main/src/Http/UploadedFile/PhpUploadedFile.php"
click node_controller "https://github.com/seymenkonuk/framework/blob/main/src/Http/Controller.php"
click node_response "https://github.com/seymenkonuk/framework/blob/main/src/Http/Response/Response.php"
click node_response_state "https://github.com/seymenkonuk/framework/blob/main/src/Http/Response/ResponseState.php"
click node_template "https://github.com/seymenkonuk/framework/blob/main/src/TemplateEngine/ITemplateEngine.php"
click node_session "https://github.com/seymenkonuk/framework/blob/main/src/Session/PhpSession.php"
click node_flash "https://github.com/seymenkonuk/framework/blob/main/src/Flash/SessionFlash.php"
click node_csrf "https://github.com/seymenkonuk/framework/blob/main/src/CsrfToken/SessionCsrfTokenManager.php"
click node_auth "https://github.com/seymenkonuk/framework/blob/main/src/Auth/IAuthService.php"
click node_cache "https://github.com/seymenkonuk/framework/blob/main/src/Cache/ICache.php"
click node_redis_cache "https://github.com/seymenkonuk/framework/blob/main/src/Cache/RedisCache.php"
click node_sql_repository "https://github.com/seymenkonuk/framework/blob/main/src/Database/SqlRepository.php"
click node_sql_connection "https://github.com/seymenkonuk/framework/blob/main/src/Database/Connection/ISqlConnection.php"
click node_mysql "https://github.com/seymenkonuk/framework/blob/main/src/Database/Connection/MysqlConnection.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_application,node_container,node_reflection,node_client toneBlue
class node_attribute_resolver,node_router,node_route,node_route_state,node_route_attributes,node_middleware,node_request_schema toneAmber
class node_request,node_uploaded_file,node_controller,node_response,node_response_state,node_template toneMint
class node_session,node_flash,node_csrf,node_auth toneRose
class node_cache,node_redis_cache,node_sql_repository,node_sql_connection,node_mysql toneIndigo
```

## Components

### Application Runtime

- [Application](https://github.com/seymenkonuk/framework/blob/main/src/Application.php): `src/Application.php`
- [Dependency Container](https://github.com/seymenkonuk/framework/blob/main/src/Container.php): `src/Container.php`
- [Reflection Resolver](https://github.com/seymenkonuk/framework/blob/main/src/Reflection/Reflect.php): `src/Reflection/Reflect.php`

### Routing and Dispatch

- [Attribute Resolver](https://github.com/seymenkonuk/framework/blob/main/src/Reflection/AttributeResolver.php): `src/Reflection/AttributeResolver.php`
- [Router](https://github.com/seymenkonuk/framework/blob/main/src/Routing/Router.php): `src/Routing/Router.php`
- [Route Configuration](https://github.com/seymenkonuk/framework/blob/main/src/Routing/Route.php): `src/Routing/Route.php`
- [Route State](https://github.com/seymenkonuk/framework/blob/main/src/Routing/RouteState.php): `src/Routing/RouteState.php`
- [Route Attributes](https://github.com/seymenkonuk/framework/tree/main/src/Attribute): `src/Attribute`
- [Middleware](https://github.com/seymenkonuk/framework/blob/main/src/Http/Middleware.php): `src/Http/Middleware.php`
- [Request Validation](https://github.com/seymenkonuk/framework/tree/main/src/Http/RequestSchema): `src/Http/RequestSchema`

### HTTP Handling

- [HTTP Request](https://github.com/seymenkonuk/framework/blob/main/src/Http/Request/Request.php): `src/Http/Request/Request.php`
- [Uploaded Files](https://github.com/seymenkonuk/framework/blob/main/src/Http/UploadedFile/PhpUploadedFile.php): `src/Http/UploadedFile/PhpUploadedFile.php`
- [Controller Base](https://github.com/seymenkonuk/framework/blob/main/src/Http/Controller.php): `src/Http/Controller.php`
- [HTTP Response](https://github.com/seymenkonuk/framework/blob/main/src/Http/Response/Response.php): `src/Http/Response/Response.php`
- [Response State](https://github.com/seymenkonuk/framework/blob/main/src/Http/Response/ResponseState.php): `src/Http/Response/ResponseState.php`
- [Template Engines](https://github.com/seymenkonuk/framework/blob/main/src/TemplateEngine/ITemplateEngine.php): `src/TemplateEngine/ITemplateEngine.php`

### State and Security

- [Session](https://github.com/seymenkonuk/framework/blob/main/src/Session/PhpSession.php): `src/Session/PhpSession.php`
- [Flash Messages](https://github.com/seymenkonuk/framework/blob/main/src/Flash/SessionFlash.php): `src/Flash/SessionFlash.php`
- [CSRF Tokens](https://github.com/seymenkonuk/framework/blob/main/src/CsrfToken/SessionCsrfTokenManager.php): `src/CsrfToken/SessionCsrfTokenManager.php`
- [Authentication Services](https://github.com/seymenkonuk/framework/blob/main/src/Auth/IAuthService.php): `src/Auth/IAuthService.php`

### Services and Persistence

- [Cache](https://github.com/seymenkonuk/framework/blob/main/src/Cache/ICache.php): `src/Cache/ICache.php`
- [Redis Cache](https://github.com/seymenkonuk/framework/blob/main/src/Cache/RedisCache.php): `src/Cache/RedisCache.php`
- [SQL Repository](https://github.com/seymenkonuk/framework/blob/main/src/Database/SqlRepository.php): `src/Database/SqlRepository.php`
- [SQL Connection](https://github.com/seymenkonuk/framework/blob/main/src/Database/Connection/ISqlConnection.php): `src/Database/Connection/ISqlConnection.php`
- [MySQL Driver](https://github.com/seymenkonuk/framework/blob/main/src/Database/Connection/MysqlConnection.php): `src/Database/Connection/MysqlConnection.php`

### Other components

- **HTTP Client**

## Connections

- HTTP Client → HTTP Request: sends request
- HTTP Request → Application: enters runtime (evidence: `src/Application.php`)
- Application → Dependency Container: creates (evidence: `src/Application.php`)
- Application → Router: creates (evidence: `src/Application.php`)
- Router → Route Configuration: registers routes (evidence: `src/Routing/Router.php`)
- Router → Attribute Resolver: resolves attributes (evidence: `src/Routing/Router.php`)
- Attribute Resolver → Reflection Resolver: uses reflection (evidence: `src/Reflection/AttributeResolver.php`)
- Route Configuration → Route State: creates state (evidence: `src/Routing/Route.php`)
- Route Attributes → Route Configuration: modifies routes (evidence: `src/Attribute/IRouteModifier.php`)
- Router → HTTP Request: matches request (evidence: `src/Routing/Router.php`)
- Router → Middleware: dispatches middleware (evidence: `src/Routing/Router.php`)
- Router → Request Validation: validates request
- Router → Controller Base: invokes handler (evidence: `src/Routing/Router.php`)
- HTTP Request → Uploaded Files: wraps uploads (evidence: `src/Http/Request/Request.php`)
- Controller Base → HTTP Response: returns response
- HTTP Response → Template Engines: renders views (evidence: `src/Http/Response/Response.php`)
- HTTP Response → Response State: creates state (evidence: `src/Http/Response/Response.php`)
- Application → Session: binds service (evidence: `src/Application.php`)
- Flash Messages → Session: uses session (evidence: `src/Flash/SessionFlash.php`)
- CSRF Tokens → Session: uses session (evidence: `src/CsrfToken/SessionCsrfTokenManager.php`)
- Middleware → Authentication Services: checks identity (evidence: `src/Http/Middleware/AuthenticatedMiddleware.php`)
- Redis Cache → Cache: implements
- SQL Repository → SQL Connection: uses connection (evidence: `src/Database/SqlRepository.php`)
- MySQL Driver → SQL Connection: implements
