Minimalistisches, dateibasiertes CMS fuer schnelle, saubere HTML-Webseiten.
Kein Framework. Keine Datenbank. Keine Build-Tools.
Nur: PHP, JSON, HTML5, wenig CSS, optional JavaScript.
- Dateibasiert – Inhalte als JSON, keine Datenbank
- Sauberes HTML5 Rendering
- Blockbasiertes Content-System (heading, text, image, list, buttons, columns, html, blog_overview)
- Automatische Navigation aus veroeffentlichten Seiten
- REST-API fuer externe Tools und KI
- Media-Upload mit automatischer Pfadvergabe
- Theme-Konfiguration ueber JSON (Farben, Schriften, Abstaende)
- Custom CSS fuer wiederverwendbare Klassen
- Header/Footer als globale Inhalte
- Blog mit eigenem Admin-Bereich und API
- Export/Import (einzelne Seiten oder komplette Webseite)
project/
app/
core/ Bootstrap, Router, Renderer, Auth, ApiAuth, PageSchema, Theme, Storage, Sanitizer, Sitemap, Slug, Csrf
admin/ PagesController, BlogController, MediaController, SettingsController, ThemeController, UsersController, PartialsController, UpdateController
api/ PagesController, BlogController, MediaController, GlobalsController
views/ admin/layout.php
config/
site.json, styles.json, users.json, login_attempts.json
content/
pages.json Seitenindex
pages/<id>.json Seiteninhalt (meta + content.blocks)
blog.json Blogindex
blog/<id>.json Bloginhalt
globals/ header.json, footer.json
public/
index.php, admin.php, api.php, .htaccess
assets/css/ base.css, theme.css (auto-generiert), custom.css, admin.css
assets/fonts/ FontName-Schnitt.ttf (10 Familien, je 3 Schnitte)
assets/js/ site.js
media/YYYY/MM/ Uploads
files/ Downloads (cmf_latest.zip, README_KI.md)
version.json
Seitenindex (content/pages.json): Array mit id, slug, title, status, nav-Objekt, Zeitstempel.
Seiteninhalt (content/pages/<id>.json):
{
"meta": { "title": "Seitentitel", "description": "Kurzbeschreibung" },
"content": { "blocks": [{ "id": "h1_start", "type": "heading", "data": { "level": 1, "text": "Titel" } }] }
}Blog: Gleiche Struktur. Index in content/blog.json mit slug, categories, posts-Array.
Automatisch aus veroeffentlichten Seiten erzeugt. Sortiert nach nav.order. Untermenues ueber nav.parent (Seiten-ID). nav.show steuert Sichtbarkeit.
Design ueber config/styles.json: Container, Abstaende, Radien, Farben, Schriftgroessen, Fonts. Beim Speichern wird theme.css automatisch generiert. Eigene Klassen in custom.css.
Login: /admin.php. Bereiche: Seiten, Blog, Header/Footer, Theme, Media, Benutzer, Einstellungen.
CSRF-Schutz, Passwort-Hashes, API-Token-Hash, HTML-Sanitizing fuer Textbloecke.
Einstiegspunkt: /api.php mit Bearer-Token-Authentifizierung.
Vollstaendige API-Referenz: README_KI.md
Inhalte zuerst. Struktur vor Design. Technik statt CMS-Overhead.