Edwin Noorlander db39995f7e Update .gitignore: ignore content/ directory instead of public/content/
- Changed from 'public/content/*' to 'content/'
- Matches new content directory structure outside web root
- Improves security by keeping content separate from public files
2025-11-22 15:34:55 +01:00
2025-11-21 16:58:37 +01:00
2025-11-21 20:23:20 +01:00
2025-11-21 20:23:20 +01:00

CodePress CMS

Een lichtgewicht, file-based content management systeem gebouwd met PHP.

Features

  • 📝 Multi-format Content - Ondersteunt Markdown, PHP en HTML bestanden
  • 🧭 Dynamic Navigation - Automatische menu generatie met dropdowns
  • 🔍 Search Functionality - Volledige tekst zoek door alle content
  • 🧭 Breadcrumb Navigation - Intuïtieve navigatiepaden
  • 🔗 Auto-linking - Automatische links tussen pagina's
  • 📱 Responsive Design - Werkt perfect op alle apparaten
  • ⚙️ JSON Configuratie - Eenvoudige configuratie via JSON
  • 🎨 Bootstrap 5 - Moderne UI framework
  • 🔒 Security - Beveiligde content management

🚀 Quick Start

  1. Upload bestanden naar webserver
  2. Stel permissies in voor webserver
  3. Configureer (optioneel) via config.json
  4. Bezoek website via browser

📁 Project Structuur

codepress/
├── engine/
│   ├── core/
│   │   ├── config.php          # Configuratie loader
│   │   └── index.php          # CMS engine
│   └── templates/               # Template bestanden
│       ├── layout.mustache
│       ├── assets/
│       │   ├── header.mustache
│       │   ├── navigation.mustache
│       │   └── footer.mustache
│       ├── markdown_content.mustache
│       ├── php_content.mustache
│       └── html_content.mustache
├── content/                   # Content bestanden
│   ├── map1/
│   │   ├── pagina1.md
│   │   └── pagina2.php
│   └── homepage.md
├── public/                     # Web root
│   ├── assets/
│   │   ├── css/
│   │   ├── js/
│   │   └── favicon.svg
│   └── index.php
├── config.json                 # Configuratie
└── README.md

⚙️ Configuratie

Basis Configuratie (config.json)

{
    "site_title": "CodePress",
    "content_dir": "content",
    "templates_dir": "engine/templates",
    "default_page": "auto",
    "homepage": "homepage",
    "author": {
        "name": "Edwin Noorlander",
        "website": "https://noorlander.info",
        "git": "https://git.noorlander.info/E.Noorlander/CodePress.git"
    },
    "seo": {
        "description": "CodePress CMS - Lightweight file-based content management system",
        "keywords": "cms, php, content management, file-based"
    }
}

Configuratie Opties

  • site_title - Naam van de website
  • content_dir - Map met content bestanden
  • templates_dir - Map met template bestanden
  • default_page - Standaard pagina ("auto" voor automatische detectie)
  • homepage - Homepage ("auto" voor automatische detectie)
  • author - Auteur informatie met links
  • seo - SEO instellingen

📝 Content Types

Markdown (.md)

  • Auto-linking tussen pagina's
  • GitHub Flavored Markdown ondersteuning
  • Syntax highlighting voor code blocks
  • Automatische titel extractie

PHP (.php)

  • Volledige PHP ondersteuning
  • Dynamische content generatie
  • Database integratie mogelijk
  • Session management beschikbaar

HTML (.html)

  • Statische HTML pagina's
  • Bootstrap componenten
  • Custom CSS en JavaScript
  • Volledige HTML5 validatie

🎨 Design Features

Navigation

  • Tab-style navigatie met Bootstrap
  • Dropdown menus voor mappen en sub-mappen
  • Home knop met icoon
  • Active state indicatie
  • Responsive hamburger menu

Layout

  • Flexbox layout voor moderne structuur
  • Fixed header met logo en zoekfunctie
  • Breadcrumb navigatie tussen header en content
  • Fixed footer met metadata
  • Scrollable content gebied

Responsive

  • Mobile-first aanpak
  • Touch-friendly interactie
  • Adaptieve breedtes
  • Consistente ervaring

🔧 Vereisten

  • PHP 8.4+ of hoger
  • Webserver (Apache, Nginx, etc.)
  • Schrijfrechten voor PHP bestanden
  • Mod_rewrite (optioneel voor pretty URLs)

🛠️ Installatie

Via Composer

composer create-project codepress
cd codepress

Handmatig

  1. Download de bestanden
  2. Upload naar webserver
  3. Stel permissies in
  4. Configureer config.json

Webserver Configuratie

Apache

<Directory "/var/www/codepress">
    AllowOverride All
    Require all granted
</Directory>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

Nginx

server {
    root /var/www/codepress/public;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
}

🏗️ PHP Classes

SimpleTemplate Class

Lightweight template rendering engine die Mustache-style syntax ondersteunt zonder externe dependencies.

Methods:

  • render($template, $data) - Rendert template met data
  • replacePartial($matches) - Vervangt {{>partial}} placeholders

Features:

  • {{>partial}} - Partial includes
  • {{#variable}}...{{/variable}} - Conditionele blocks
  • {{^variable}}...{{/variable}} - Negatieve conditionele blocks
  • {{{variable}}} - Unescaped HTML content
  • {{variable}} - Escaped content

CodePressCMS Class

Hoofd CMS class die alle content management functionaliteit beheert.

Public Methods:

  • __construct($config) - Initialiseer CMS met configuratie
  • getPage() - Haalt huidige pagina content op
  • getMenu() - Genereert navigatiestructuur
  • render() - Rendert volledige pagina met templates

Private Methods:

  • buildMenu() - Bouwt menu structuur van content directory
  • scanDirectory($dir, $prefix) - Scant directory voor content
  • performSearch($query) - Voert zoekopdracht uit
  • parseMarkdown($content) - Converteert Markdown naar HTML
  • parsePHP($filePath) - Verwerkt PHP bestanden
  • parseHTML($content) - Verwerkt HTML bestanden
  • getBreadcrumb() - Genereert breadcrumb navigatie
  • renderMenu($items, $level) - Rendert menu HTML
  • getContentType($page) - Bepaalt content type
  • autoLinkPageTitles($content) - Auto-link pagina titels

Features:

  • Multi-format content support (MD, PHP, HTML)
  • Dynamische navigatie met dropdowns
  • Zoekfunctionaliteit met snippets
  • Breadcrumb navigatie
  • Auto-linking tussen pagina's
  • File metadata tracking
  • Responsive template rendering

📖 Documentatie

🤝 Bijdragen

Bijdragen zijn welkom! Zie AGENTS.md voor ontwikkelrichtlijnen.

📄 Licentie

Open-source licentie. Zie de repository voor meer informatie.


Gebouwd met ❤️ door Edwin Noorlander

Description
No description provided
Readme 2.8 MiB
Languages
PHP 60.2%
JavaScript 16.6%
Shell 12.3%
Mustache 8.1%
SCSS 2.4%
Other 0.4%