# CMS Architectuur ``` codepress/ ├── cms/core/ # Core engine │ ├── class/ # CodePressCMS, ThemeManager, Logger, Analytics │ ├── plugin/ # PluginManager, PluginAPIInterface, CMSAPI, AdminPluginAPI │ ├── config.php # Config loader │ └── index.php # Bootstrap ├── admin/ # Admin console │ ├── config/ # app.php, admin.json │ ├── src/ # AdminAuth │ └── theme/default/views/ # Twig templates ├── themes/ # Thema's (default, ...) ├── plugins/ # Plugins (Dashboard, HTMLBlock, Navigation, ...) │ └── / # Elke plugin heeft: │ ├── .php # Hoofd class │ ├── plugin.json # Metadata + instellingen │ ├── README.md # Documentatie │ ├── assets/ # CSS/JS/SCSS │ └── language/ # Plugin vertalingen (nl/, en/, ...; admin.php/site.php) ├── content/ # Content bestanden (.md, .php, .html) ├── language/ # Core CMS taalbestanden (nl/, en/, de/; site.php + admin.php) ├── guide/ # Handleidingen (nl/, en/) ├── public/ # Web root │ ├── index.php # Website entry point │ └── admin.php # Admin entry point + router ├── config.json # Site configuratie └── version.php # Versie info ``` ## Plugin i18n Plugins hebben hun eigen `language/` map met vertalingen. Systeem plugins volgen de admin taal (`language//admin.php`), content plugins volgen de content taal (`language//site.php`). Fallback chain: geselecteerde taal → plugin `default_language` → CMS site default → lege array. Zie `guide/nl/codepress-developer/plugin-development.md` voor details.