Files
CodePress/guide/en/codepress-developer/architectuur.md
T
E.Noorlander b38be8366c Update all guides (NL + EN) for CodePress 2.5.2 features
- Admin guide: RBAC roles, role-based dashboard, plugin types (content/system)
- CodePress developer guide: plugin types, admin plugin API, SCSS compilation, asset serving
- Theme developer guide: SCSS sole CSS source, css_compiled read-only, guide layout
- Content manager guide: layout selection from theme.json, plugin order in frontmatter
- Both NL and EN updated with identical structure
- 35 files updated
2026-08-12 12:05:53 +02:00

5.5 KiB

CMS Architecture

CodePress is a file-based CMS without a database. Content, configuration and users are stored in files.

Folder structure

codepress/
├── cms/                                # Core CMS engine
│   ├── core/
│   │   ├── class/
│   │   │   ├── CodePressCMS.php         # Main CMS class (routing, rendering, breadcrumb)
│   │   │   ├── ThemeManager.php         # Theme resolver + Twig render + SCSS compile
│   │   │   ├── ContentAPI.php           # Read-only API for PHP content
│   │   │   ├── ContentSecurityPolicy.php # CSP header management
│   │   │   ├── Analytics.php            # Visitor statistics
│   │   │   ├── BotGuard.php             # Bot/AI detection
│   │   │   ├── Cache.php                # Cache system
│   │   │   ├── GeoIP.php                # GeoIP lookup (country, flag)
│   │   │   ├── Logger.php               # Basic logging
│   │   │   ├── LogManager.php           # Dynamic logging (SQLite/syslog)
│   │   │   ├── RateLimiter.php          # Rate limiting per IP
│   │   │   ├── RequestLogger.php        # Request logging + visitor info
│   │   │   ├── SearchEngine.php         # Full text search
│   │   │   └── AccessibilityManager.php # Accessibility features
│   │   ├── plugin/
│   │   │   ├── PluginManager.php        # Plugin loader (hooks, filters, sidebar, admin routes)
│   │   │   └── CMSAPI.php               # API for plugins (getPage, getConfig, etc.)
│   │   ├── config.php                   # Config loader (reads config.json)
│   │   └── index.php                    # Bootstrap (autoloader, requires)
│   ├── lang/                            # Language files (nl.php, en.php)
│   └── router.php                       # PHP dev server router
├── themes/                              # Dynamic themes
│   └── default/                         # Default theme (views + assets)
│       ├── theme.json                   # { title, config.default_template, template: layout→.twig }
│       ├── base.twig                    # Main layout
│       ├── *.twig                       # Layout templates
│       ├── partials/                    # header.twig, navigation.twig, footer.twig
│       └── assets/
│           ├── scss/theme.scss          # SCSS source (only CSS source)
│           ├── css_compiled/            # Generated by scssphp (read-only)
│           ├── css/                     # External CSS (bootstrap.min.css, etc.)
│           ├── js/                     # JavaScript
│           └── img/                     # Images
├── admin/                               # Admin panel
│   ├── config/
│   │   ├── app.php                      # Admin app configuration
│   │   └── admin.json                   # Users & security (file-based, .gitignore'd)
│   ├── src/
│   │   └── AdminAuth.php               # Authentication + RBAC
│   ├── theme/default/                   # Admin theme (views + assets)
│   │   ├── theme.json
│   │   ├── assets/                      # CSS, JS, CodeMirror, fonts
│   │   └── views/                       # login.twig, layouts/, pages/
│   └── storage/                         # Logs, cache, geoip
├── plugins/                             # CMS plugins
│   ├── Navigation/                      # Essential navigation plugin (protected)
│   │   ├── Navigation.php               # Plugin code (NOT plugin.php)
│   │   ├── plugin.json                  # Metadata with type field
│   │   └── assets/                      # SCSS + CSS
│   └── HTMLBlock/                        # Example sidebar plugin
├── content/                             # Website content (.md, .php, .html) — .gitignore'd
├── guide/                               # Guides (nl/en)
├── public/                              # Web root
│   ├── index.php                        # Website entry point
│   ├── admin.php                        # Admin entry point + routing
│   ├── asset.php                        # Asset server for Apache (themes/, admin/assets/, plugins/)
│   ├── .htaccess                        # Forwards asset URLs to asset.php
│   ├── favicon.ico
│   └── robots.txt
├── var/                                 # Cache (twig) — .gitignore'd
├── config.json                          # Site configuration — .gitignore'd
├── composer.json                        # PHP dependencies (CommonMark, Twig, scssphp)
└── version.php                          # Version information (2.5.2)

Principles

  • No database — Everything in files (content in content/, users in admin/config/admin.json, config in config.json)
  • File-based authAdminAuth uses bcrypt hashes in admin.json, sessions for login
  • Twig templating — Themes use Twig; ThemeManager renders via Twig
  • SCSS compilationassets/scss/theme.scssassets/css_compiled/theme.css via scssphp (read-only output)
  • Plugin systemPluginManager loads content and system plugins with hooks/filters
  • Asset serving — PHP dev router (cms/router.php) or Apache (.htaccesspublic/asset.php)