# hoverclub/smf2.1 architecture

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

- Interactive diagram: https://gitdiagram.com/hoverclub/smf2.1
- Repository: https://github.com/hoverclub/smf2.1

## Overview

SMF is a PHP discussion-forum application. A visitor request enters through the front controller, where request variables are normalized and the requested forum or account action is dispatched; forum features then prepare responses for rendering. The repository also includes member authentication and profiles, search and administration, and shared security, logging, configuration, and theme services. Edges are limited to relationships visible in the front-controller excerpt or SOURCE INDEX references; unsampled feature internals and storage calls are not inferred.

Main entry points: [`index.php`](https://github.com/hoverclub/smf2.1/blob/release-2.1/index.php) (Request dispatcher), [`Sources/Admin.php`](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Admin.php) (Admin dispatcher), [`other/Settings.php`](https://github.com/hoverclub/smf2.1/blob/release-2.1/other/Settings.php) (Server configuration), [`Sources/QueryString.php`](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/QueryString.php) (Request parsing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_request["Request and forum"]
  node_front["Request dispatcher<br/>[index.php]"]
  node_query["Request parsing<br/>[QueryString.php]"]
  node_board["Board index<br/>[BoardIndex.php]"]
  node_messages["Message index<br/>[MessageIndex.php]"]
  node_display["Topic display<br/>[Display.php]"]
  node_post["Post handling<br/>[Post.php]"]
  node_search["Forum search<br/>[Search.php]"]
  node_theme_view["Default templates<br/>[index.template.php]"]
end

subgraph group_members["Members and identity"]
  node_login["Login and logout<br/>[LogInOut.php]"]
  node_register["Registration<br/>[Register.php]"]
  node_profile["Member profiles<br/>[Profile.php]"]
  node_private["Private messages"]
end

subgraph group_admin["Administration"]
  node_admin["Admin dispatcher<br/>[Admin.php]"]
  node_boards_admin["Board management<br/>[ManageBoards.php]"]
  node_permissions["Permissions"]
  node_search_admin["Search settings"]
  node_themes["Theme management<br/>[Themes.php]"]
end

subgraph group_platform["Platform services"]
  node_security["Security controls<br/>[Security.php]"]
  node_sessions["Session handling<br/>[Session.php]"]
  node_common["Shared functions<br/>[Subs.php]"]
  node_errors["Error handling<br/>[Errors.php]"]
  node_logging["Logging<br/>[Logging.php]"]
  node_settings["Server configuration<br/>[Settings.php]"]
end

node_visitor(("Forum visitor"))
node_database[("Forum database")]

node_visitor -->|"requests"| node_front
node_front -->|"loads"| node_query
node_front -->|"loads"| node_security
node_front -->|"starts session"| node_sessions
node_front -->|"dispatches"| node_board
node_front -->|"dispatches"| node_messages
node_front -->|"dispatches"| node_display
node_front -->|"dispatches"| node_login
node_front -->|"dispatches"| node_register
node_front -->|"dispatches"| node_profile
node_front -->|"dispatches"| node_search
node_front -->|"dispatches"| node_admin
node_admin -->|"routes to"| node_boards_admin
node_admin -->|"routes to"| node_permissions
node_admin -->|"routes to"| node_search_admin
node_admin -->|"routes to"| node_themes
node_front -->|"loads"| node_common
node_front -->|"loads"| node_errors
node_front -->|"loads"| node_logging
node_settings -->|"configures"| node_database
node_front -.->|"renders with"| node_theme_view

click node_front "https://github.com/hoverclub/smf2.1/blob/release-2.1/index.php"
click node_query "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/QueryString.php"
click node_board "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/BoardIndex.php"
click node_messages "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/MessageIndex.php"
click node_display "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Display.php"
click node_post "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Post.php"
click node_search "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Search.php"
click node_login "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/LogInOut.php"
click node_register "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Register.php"
click node_profile "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Profile.php"
click node_private "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/PersonalMessage.php"
click node_admin "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Admin.php"
click node_boards_admin "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/ManageBoards.php"
click node_permissions "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/ManagePermissions.php"
click node_search_admin "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/ManageSearchEngines.php"
click node_themes "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Themes.php"
click node_security "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Security.php"
click node_sessions "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Session.php"
click node_common "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Subs.php"
click node_errors "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Errors.php"
click node_logging "https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Logging.php"
click node_settings "https://github.com/hoverclub/smf2.1/blob/release-2.1/other/Settings.php"
click node_theme_view "https://github.com/hoverclub/smf2.1/blob/release-2.1/Themes/default/index.template.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_query,node_board,node_messages,node_display,node_post,node_search,node_theme_view toneBlue
class node_login,node_register,node_profile,node_private,node_database toneAmber
class node_admin,node_boards_admin,node_permissions,node_search_admin,node_themes toneMint
class node_security,node_sessions,node_common,node_errors,node_logging,node_settings toneRose
class node_visitor toneIndigo
```

## Components

### Request and forum

- [Request dispatcher](https://github.com/hoverclub/smf2.1/blob/release-2.1/index.php): `index.php`
- [Request parsing](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/QueryString.php): `Sources/QueryString.php`
- [Board index](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/BoardIndex.php): `Sources/BoardIndex.php`
- [Message index](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/MessageIndex.php): `Sources/MessageIndex.php`
- [Topic display](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Display.php): `Sources/Display.php`
- [Post handling](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Post.php): `Sources/Post.php`
- [Forum search](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Search.php): `Sources/Search.php`
- [Default templates](https://github.com/hoverclub/smf2.1/blob/release-2.1/Themes/default/index.template.php): `Themes/default/index.template.php`

### Members and identity

- [Login and logout](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/LogInOut.php): `Sources/LogInOut.php`
- [Registration](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Register.php): `Sources/Register.php`
- [Member profiles](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Profile.php): `Sources/Profile.php`
- [Private messages](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/PersonalMessage.php): `Sources/PersonalMessage.php`

### Administration

- [Admin dispatcher](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Admin.php): `Sources/Admin.php`
- [Board management](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/ManageBoards.php): `Sources/ManageBoards.php`
- [Permissions](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/ManagePermissions.php): `Sources/ManagePermissions.php`
- [Search settings](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/ManageSearchEngines.php): `Sources/ManageSearchEngines.php`
- [Theme management](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Themes.php): `Sources/Themes.php`

### Platform services

- [Security controls](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Security.php): `Sources/Security.php`
- [Session handling](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Session.php): `Sources/Session.php`
- [Shared functions](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Subs.php): `Sources/Subs.php`
- [Error handling](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Errors.php): `Sources/Errors.php`
- [Logging](https://github.com/hoverclub/smf2.1/blob/release-2.1/Sources/Logging.php): `Sources/Logging.php`
- [Server configuration](https://github.com/hoverclub/smf2.1/blob/release-2.1/other/Settings.php): `other/Settings.php`

### Other components

- **Forum visitor**
- **Forum database**

## Connections

- Forum visitor → Request dispatcher: requests (evidence: `index.php`)
- Request dispatcher → Request parsing: loads (evidence: `index.php`)
- Request dispatcher → Security controls: loads (evidence: `index.php`)
- Request dispatcher → Session handling: starts session (evidence: `index.php`)
- Request dispatcher → Board index: dispatches (evidence: `index.php`)
- Request dispatcher → Message index: dispatches (evidence: `index.php`)
- Request dispatcher → Topic display: dispatches (evidence: `index.php`)
- Request dispatcher → Login and logout: dispatches (evidence: `index.php`)
- Request dispatcher → Registration: dispatches (evidence: `index.php`)
- Request dispatcher → Member profiles: dispatches (evidence: `index.php`)
- Request dispatcher → Forum search: dispatches (evidence: `index.php`)
- Request dispatcher → Admin dispatcher: dispatches (evidence: `index.php`)
- Admin dispatcher → Board management: routes to (evidence: `Sources/Admin.php`)
- Admin dispatcher → Permissions: routes to (evidence: `Sources/Admin.php`)
- Admin dispatcher → Search settings: routes to (evidence: `Sources/Admin.php`)
- Admin dispatcher → Theme management: routes to (evidence: `Sources/Admin.php`)
- Request dispatcher → Shared functions: loads (evidence: `index.php`)
- Request dispatcher → Error handling: loads (evidence: `index.php`)
- Request dispatcher → Logging: loads (evidence: `index.php`)
- Server configuration → Forum database: configures (evidence: `other/Settings.php`)
- Request dispatcher → Default templates: renders with
