# CodePress CMS **[๐ณ๐ฑ Dutch](README.md) | [๐ฌ๐ง English](#)** A lightweight, file-based content management system built with PHP (โฅ8.0). **Version:** 2.5.1 | **License:** AGPL v3 / Commercial ## โจ Features - ๐ **Multi-format Content** - Markdown, PHP and HTML files - ๐งญ **Dynamic Navigation** - Automatic menu generation - ๐ **Multi-language** - NL/EN/DE/FR support - ๐ **Search** - Full-text search - ๐ฑ **Responsive** - Bootstrap 5 themes - ๐ **Security** - 100/100 pentest score - ๐ก๏ธ **Admin Console** - CodeMirror editor, media management, themes, plugins - ๐ฅ **User Roles** - Admin, Content Manager, BI Manager, Site Admin - ๐ **Analytics** - Visitor statistics with GeoIP - ๐ค **BotGuard** - Bot/AI protection - ๐ **Logging** - Comprehensive logging system - ๐ **Plugin System** - Sidebar plugins with own CSS/SCSS, Twig templates ## ๐ Quick Start ```bash # Install dependencies composer install # Start server with router for clean URLs php -S localhost:8080 cms/router.php ``` **Website:** `http://localhost:8080` **Admin:** `http://localhost:8080/admin` (login: `admin` / `admin`) ## ๐ Documentation See **[guide/](guide/)** for extensive documentation per role: | Role | Guide | |------|-------| | ๐ Content Editor | [Content Manager](guide/en/content-beheerder.md) | | โ๏ธ Administrator | [Admin Manager](guide/en/admin-beheerder.md) | | ๐จ Theme Developer | [Theme Developer](guide/en/theme-developer.md) | | ๐ป Developer | [CodePress Developer](guide/en/codepress-developer.md) | Each guide has sub-topics in separate folders with sidebar navigation. ## ๐ฅ User Roles | Role | Permissions | |------|------------| | **Admin** | Full access (everything) | | **Content Manager** | Content management, guide | | **BI Manager** | Statistics, logs, guide | | **Site Admin** | Theme, plugins, statistics, logs, update, guide | ## ๐ Project Structure ``` codepress/ โโโ cms/ # Core CMS engine โ โโโ core/class/ # CMS classes (CodePressCMS, ThemeManager, etc.) โ โโโ core/plugin/ # Plugin system (PluginManager, CMSAPI) โ โโโ router.php # PHP dev server router (clean URLs) โโโ language/ # Translation files (nl/, en/, de/ โ each with site.php + admin.php) โโโ admin/ # Admin console โ โโโ config/ # Admin configuration (admin.json) โ โโโ src/AdminAuth.php # Authentication, roles, permissions โ โโโ storage/ # Logs, cache, geoip โ โโโ theme/default/ # Admin theme โ โโโ assets/ # CSS, JS, fonts, codemirror โ โโโ views/ # Twig templates (layouts, pages) โ โโโ theme.json # Admin theme configuration โโโ themes/ # Website themes โ โโโ default/ # Default theme โ โ โโโ theme.json # Layout mapping, colors โ โ โโโ base.twig # Main layout โ โ โโโ *.twig # Layout templates โ โ โโโ partials/ # Header, navigation, footer โ โ โโโ assets/ # SCSS, CSS, JS, img โ โโโ demo/ # Demo theme โโโ plugins/ # Plugins โ โโโ HTMLBlock/ # Example sidebar plugin โ โโโ Navigation/ # Essential navigation plugin (protected) โ โโโ Navigation.php # Plugin code โ โโโ plugin.json # Plugin metadata โ โโโ assets/scss/ # Plugin SCSS source โ โโโ assets/css/ # Plugin CSS โโโ content/ # Website content (.md, .php, .html) โโโ public/ # Web root โ โโโ index.php # Website entry point โ โโโ admin.php # Admin entry point + routing โโโ guide/ # Documentation (nl/en) โ โโโ nl/ # Dutch guides โ โโโ en/ # English guides โโโ cli/test/ # Test suites โโโ var/ # Cache (twig) โโโ config.json # Site configuration โโโ composer.json # PHP dependencies โโโ version.php # Version information ``` ## โ๏ธ Configuration ### config.json ```json { "site_title": "CodePress", "active_theme": "default", "default_page": "auto", "language": { "default": "nl", "available": ["nl", "en"] }, "enabled_plugins": ["HTMLBlock", "Navigation"], "features": { "search_enabled": true, "breadcrumbs_enabled": true }, "security": { "block_ai_bots": true, "rate_limit_enabled": true }, "analytics": { "enabled": true }, "logging": { "enabled": true } } ``` ## ๐ง Dependencies - **PHP โฅ8.0** with extensions: json, mbstring - **Composer** packages: - twig/twig (templating) - scssphp/scssphp (SCSS compilation) - league/commonmark (Markdown with HeadingPermalinks) - maxmind-db/reader (GeoIP) ## ๐ Security - โ XSS prevention (htmlspecialchars) - โ CSRF tokens (admin forms) - โ Path traversal prevention (realpath checks) - โ Secure cookies (HttpOnly, SameSite) - โ Security headers (X-Frame-Options, CSP) - โ Bot/AI protection (BotGuard) - โ Rate limiting per IP - โ Role-based access control (RBAC) ## ๐ Plugins ### Plugin structure ``` plugins/MyPlugin/ โโโ MyPlugin.php # Plugin code (name = plugin name) โโโ plugin.json # Plugin metadata โโโ assets/scss/ # Plugin SCSS source โโโ assets/css/ # Plugin CSS (after compilation) ``` ### Essential plugins The **Navigation** plugin is an essential plugin and cannot be disabled, edited, or deleted. This plugin automatically generates sidebar navigation for guides and content. ### Plugin CSS Plugin CSS is automatically loaded after theme CSS, so themes can override plugin styling. ## ๐ Content Examples ### Markdown with frontmatter ```markdown --- layout: full_content plugins: HTMLBlock, Navigation --- # Page title Content in Markdown format... ``` ### PHP content ```php getAllPages(); echo "
Number of pages: " . count($pages) . "
"; ``` ## ๐งช Testing ```bash # Penetration tests cli/test/pentest/security-test.sh # Accessibility tests (WCAG 2.1 AA) cli/test/accessibility.sh # Functional tests cli/test/functional/*.sh ``` ## ๐ Support - **Documentation:** [guide/](guide/) - **Issues:** Git repository - **Contact:** commercial@noorlander.info ## ๐ License **Dual-licensed:** - **AGPL v3** - For open-source projects - **Commercial** - For proprietary use See [LICENSE](LICENSE) for details. --- **CodePress CMS** - Built by E.Noorlander / CodePress Development Team