# counteraccro/natheo architecture

> Architecture diagram of the GitHub repository counteraccro/natheo, 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/counteraccro/natheo
- Repository: https://github.com/counteraccro/natheo

## Overview

Nathéo CMS is a Symfony-based multilingual content-management system. Its principal workflow is an administrator signing in, managing site content and settings, then serving that content to public visitors; the repository also exposes API and installation surfaces. The graph includes documented CMS capabilities and central domain entities. Some subsystems are represented by their exact tree directories because their implementations were not sampled; links to them are omitted where caller relationships cannot be verified.

Main entry points: [`src/Controller/Admin/System/UserController.php`](https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/System/UserController.php) (User management), [`src/Controller/Admin/Content/PageController.php`](https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/Content/PageController.php) (Page management), [`src/Controller/Front/IndexController.php`](https://github.com/counteraccro/natheo/blob/master/src/Controller/Front/IndexController.php) (Public site), [`src/Controller/Admin/AppAdminController.php`](https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/AppAdminController.php) (Admin framework)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Administration"]
  node_admin_app["Admin framework"]
  node_global_search["Global search"]
  node_admin_service["Admin services"]
  node_sql_tools["SQL manager"]
end

subgraph group_content["Content management"]
  node_page_admin["Page management<br/>[PageController.php]"]
  node_content_admin["Content tools"]
  node_page_domain["Page domain<br/>[Page.php]"]
  node_menu_domain["Menu domain<br/>[Menu.php]"]
end

subgraph group_identity["Identity and settings"]
  node_user_admin["User management<br/>[UserController.php]"]
  node_user_service["User services<br/>[UserService.php]"]
  node_user_data["User data"]
  node_system_options["System options"]
  node_notifications["Notifications"]
  node_user_domain["User domain<br/>[User.php]"]
  node_notification_domain["Notification records<br/>[Notification.php]"]
end

subgraph group_public["Public and API"]
  node_front["Public site"]
  node_front_service["Front services"]
  node_api["Versioned API"]
end

subgraph group_platform["Persistence and setup"]
  node_sql_domain["Saved SQL<br/>[SqlManager.php]"]
  node_installation["Installation flow"]
  node_database[("SQL database")]
  node_raw_queries["Database query adapter"]
end

node_admin_user(("Administrator"))
node_visitor(("Site visitor"))

node_admin_user -->|"uses administration"| node_admin_app
node_admin_app -.->|"uses services"| node_admin_service
node_page_admin -->|"extends"| node_admin_app
node_page_admin -->|"manages pages"| node_page_domain
node_page_admin -->|"reads options"| node_system_options
node_global_search -->|"searches"| node_page_domain
node_global_search -->|"searches"| node_menu_domain
node_user_admin -->|"manages accounts"| node_user_service
node_user_admin -->|"manages user data"| node_user_data
node_user_admin -->|"reads options"| node_system_options
node_user_admin -->|"dispatches notices"| node_notifications
node_notifications -.->|"manages records"| node_notification_domain
node_sql_tools -->|"manages saved SQL"| node_sql_domain
node_visitor -->|"requests site"| node_front
node_front -.->|"delegates"| node_front_service
node_front -.->|"requests API"| node_api
node_installation -.->|"configures"| node_database
node_raw_queries -.->|"queries"| node_database

click node_admin_app "https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/AppAdminController.php"
click node_page_admin "https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/Content/PageController.php"
click node_content_admin "https://github.com/counteraccro/natheo/tree/master/src/Controller/Admin/Content"
click node_global_search "https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/GlobalSearchService.php"
click node_admin_service "https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/AppAdminService.php"
click node_user_admin "https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/System/UserController.php"
click node_user_service "https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/System/User/UserService.php"
click node_user_data "https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/System/User/UserDataService.php"
click node_system_options "https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/System/OptionSystemService.php"
click node_notifications "https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/NotificationService.php"
click node_page_domain "https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Content/Page/Page.php"
click node_menu_domain "https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Content/Menu/Menu.php"
click node_user_domain "https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/System/User.php"
click node_notification_domain "https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Notification.php"
click node_sql_tools "https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/Tools/SqlManagerService.php"
click node_sql_domain "https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Tools/SqlManager.php"
click node_front "https://github.com/counteraccro/natheo/blob/master/src/Controller/Front/IndexController.php"
click node_front_service "https://github.com/counteraccro/natheo/blob/master/src/Service/Front/AppFrontService.php"
click node_api "https://github.com/counteraccro/natheo/tree/master/src/Controller/Api/v1"
click node_installation "https://github.com/counteraccro/natheo/blob/master/src/Controller/Installation/InstallationController.php"
click node_raw_queries "https://github.com/counteraccro/natheo/blob/master/src/Utils/Global/Database/RawQueryManager.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_admin_app,node_global_search,node_admin_service,node_sql_tools toneBlue
class node_page_admin,node_content_admin,node_page_domain,node_menu_domain toneAmber
class node_user_admin,node_user_service,node_user_data,node_system_options,node_notifications,node_user_domain,node_notification_domain toneMint
class node_front,node_front_service,node_api toneRose
class node_sql_domain,node_installation,node_database,node_raw_queries,node_admin_user,node_visitor toneIndigo
```

## Components

### Administration

- [Admin framework](https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/AppAdminController.php): `src/Controller/Admin/AppAdminController.php`
- [Global search](https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/GlobalSearchService.php): `src/Service/Admin/GlobalSearchService.php`
- [Admin services](https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/AppAdminService.php): `src/Service/Admin/AppAdminService.php`
- [SQL manager](https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/Tools/SqlManagerService.php): `src/Service/Admin/Tools/SqlManagerService.php`

### Content management

- [Page management](https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/Content/PageController.php): `src/Controller/Admin/Content/PageController.php`
- [Content tools](https://github.com/counteraccro/natheo/tree/master/src/Controller/Admin/Content): `src/Controller/Admin/Content`
- [Page domain](https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Content/Page/Page.php): `src/Entity/Admin/Content/Page/Page.php`
- [Menu domain](https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Content/Menu/Menu.php): `src/Entity/Admin/Content/Menu/Menu.php`

### Identity and settings

- [User management](https://github.com/counteraccro/natheo/blob/master/src/Controller/Admin/System/UserController.php): `src/Controller/Admin/System/UserController.php`
- [User services](https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/System/User/UserService.php): `src/Service/Admin/System/User/UserService.php`
- [User data](https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/System/User/UserDataService.php): `src/Service/Admin/System/User/UserDataService.php`
- [System options](https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/System/OptionSystemService.php): `src/Service/Admin/System/OptionSystemService.php`
- [Notifications](https://github.com/counteraccro/natheo/blob/master/src/Service/Admin/NotificationService.php): `src/Service/Admin/NotificationService.php`
- [User domain](https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/System/User.php): `src/Entity/Admin/System/User.php`
- [Notification records](https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Notification.php): `src/Entity/Admin/Notification.php`

### Public and API

- [Public site](https://github.com/counteraccro/natheo/blob/master/src/Controller/Front/IndexController.php): `src/Controller/Front/IndexController.php`
- [Front services](https://github.com/counteraccro/natheo/blob/master/src/Service/Front/AppFrontService.php): `src/Service/Front/AppFrontService.php`
- [Versioned API](https://github.com/counteraccro/natheo/tree/master/src/Controller/Api/v1): `src/Controller/Api/v1`

### Persistence and setup

- [Saved SQL](https://github.com/counteraccro/natheo/blob/master/src/Entity/Admin/Tools/SqlManager.php): `src/Entity/Admin/Tools/SqlManager.php`
- [Installation flow](https://github.com/counteraccro/natheo/blob/master/src/Controller/Installation/InstallationController.php): `src/Controller/Installation/InstallationController.php`
- **SQL database**
- [Database query adapter](https://github.com/counteraccro/natheo/blob/master/src/Utils/Global/Database/RawQueryManager.php): `src/Utils/Global/Database/RawQueryManager.php`

### Other components

- **Administrator**
- **Site visitor**

## Connections

- Administrator → Admin framework: uses administration (evidence: `README.md`)
- Admin framework → Admin services: uses services
- Page management → Admin framework: extends (evidence: `src/Controller/Admin/Content/PageController.php`)
- Page management → Page domain: manages pages (evidence: `src/Controller/Admin/Content/PageController.php`)
- Page management → System options: reads options (evidence: `src/Controller/Admin/Content/PageController.php`)
- Global search → Page domain: searches (evidence: `src/Service/Admin/GlobalSearchService.php`)
- Global search → Menu domain: searches (evidence: `src/Service/Admin/GlobalSearchService.php`)
- User management → User services: manages accounts (evidence: `src/Controller/Admin/System/UserController.php`)
- User management → User data: manages user data (evidence: `src/Controller/Admin/System/UserController.php`)
- User management → System options: reads options (evidence: `src/Controller/Admin/System/UserController.php`)
- User management → Notifications: dispatches notices (evidence: `src/Controller/Admin/System/UserController.php`)
- Notifications → Notification records: manages records (evidence: `src/Service/Admin/NotificationService.php`)
- SQL manager → Saved SQL: manages saved SQL (evidence: `src/Service/Admin/Tools/SqlManagerService.php`)
- Site visitor → Public site: requests site (evidence: `README.md`)
- Public site → Front services: delegates
- Public site → Versioned API: requests API
- Installation flow → SQL database: configures
- Database query adapter → SQL database: queries
