# CMS Architecture ``` 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/ # Themes (default, ...) ├── plugins/ # Plugins (Dashboard, HTMLBlock, Navigation, ...) │ └── / # Each plugin has: │ ├── .php # Main class │ ├── plugin.json # Metadata + settings │ ├── README.md # Documentation │ ├── assets/ # CSS/JS/SCSS │ └── language/ # Plugin translations (nl/, en/, ...; admin.php/site.php) ├── content/ # Content files (.md, .php, .html) ├── language/ # Core CMS language files (nl/, en/, de/; site.php + admin.php) ├── guide/ # Guides (nl/, en/) ├── public/ # Web root │ ├── index.php # Website entry point │ └── admin.php # Admin entry point + router ├── config.json # Site configuration └── version.php # Version info ``` ## Plugin i18n Plugins have their own `language/` directory with translations. System plugins follow the admin language (`language//admin.php`), content plugins follow the content language (`language//site.php`). Fallback chain: selected language → plugin `default_language` → CMS site default → empty array. See `guide/en/codepress-developer/plugin-development.md` for details.