---
title: "Für Entwickler"
description: "Der Entwickler-Leitfaden: Architektur ohne Datenbank, Tests, Archiv, Anpassung des Éclair CMS Themes, Nginx-Konfiguration und Mitarbeit am Projekt."
url: "https://eclaircms.org/de/dokumentation/entwickler"
lang: "de"
author: "Thierry Gustin"
published: "2026-10-30"
updated: "2026-11-01"
---

# Für Entwickler

> **Das Wichtigste** — Éclair ist in PHP 8.1+ ohne Framework und ohne Composer geschrieben: ein Front Controller, der den statischen Cache ausliefert, eine flache Speicherung in geschützten Dateien, einfache Klassen und natives JavaScript. Das Éclair CMS Theme passt du in app/theme an; 550 automatische Prüfungen und ein Build-Tool begleiten den Code, unter MIT-Lizenz.

Éclair ist in PHP 8.1 oder neuer geschrieben, ohne Framework und ohne Composer: einfache Klassen in `app/lib/`, PHP-Views und natives JavaScript. Dieser Leitfaden erklärt die Architektur, wie du die Tests startest und ein Archiv erstellst, wie du das Éclair CMS Theme anpasst, ohne die Sicherheit zu gefährden, und wie du Éclair mit Nginx auslieferst.

## Wie ist Éclair aufgebaut?

Drei Ideen machen es leicht und schnell:

1. **Ein Front Controller, der den Cache ausliefert, ohne die Anwendung zu laden.** `index.php` sucht die angeforderte Seite zuerst in `cache/pages/` und sendet sie direkt, samt Headern und ETag (Antwort `304`, wenn sich nichts geändert hat). Die Anwendung wird nur für eine noch nicht gecachte Seite, den Adminbereich oder die Installation geladen.
2. **Eine flache Speicherung, ohne Datenbank.** Jeder Datensatz ist eine `.php`-Datei, die mit `<?php exit; ?>` beginnt, gefolgt von JSON. Schreibvorgänge sind atomar (temporäre Datei, dann Umbenennung), privat (0600) und laufen bei Read-Modify-Write-Abläufen unter einer exklusiven Sperre. `data/index.php` hält eine Zusammenfassung aller Inhalte, um schnell aufzulisten und zu routen.
3. **Blöcke, die validiert und dann gerendert werden.** Jeder Block wird validiert und per Allowlist bereinigt, dann als HTML gerendert, für GEO als Markdown exportiert und für SEO analysiert.

Das Ergebnis: ein Archiv von 479 KB, keine Abhängigkeiten und Seiten, die bei unseren lokalen Messungen in 0,7 ms ausgeliefert werden.

## Was enthält der Ordner eclair?

```text
eclair/                  ← auf das Hosting hochladen
├── index.php            Front Controller (liefert den Cache aus, ohne die Anwendung zu laden)
├── .htaccess            URL-Rewriting, Schutzregeln, Komprimierung, Browser-Cache
├── app/lib/             Code (Klassen Eclair\…): Content, Blocks, Seo, Analyzer, Media, Auth …
├── app/admin/views/     Bildschirme des Adminbereichs
├── app/theme/           Vorlagen der öffentlichen Website + theme.css (in jede Seite eingefügt)
├── app/lang/            Übersetzungen des Adminbereichs (6 Sprachen, komprimiertes JSON)
├── assets/admin/        CSS und JavaScript des Adminbereichs (keine Abhängigkeiten)
├── assets/site/site.js  das einzige öffentliche Skript (2,4 KB, 1,2 KB komprimiert)
├── data/                Inhalte, Einstellungen, Konten (bei der Installation angelegt, nie öffentlich)
├── cache/               erzeugte Seiten
└── media/               hochgeladene Bilder
```

Im Repository enthält `i18n/` die lesbaren Quellen der Übersetzungen, `tests/` die Tests und `tools/` den Entwicklungs-Router und das Build-Tool.

## Wie startest du Éclair lokal?

Aus dem Repository genügt der eingebaute PHP-Server:

```bash
PHP_CLI_SERVER_WORKERS=4 php -S localhost:8000 -t eclair tools/router.php
```

`tools/router.php` bildet die Regeln der `.htaccess` nach. `PHP_CLI_SERVER_WORKERS` erlaubt es der Website, sich selbst aufzurufen, um ihre Adresse zu prüfen: Mit nur einem Prozess schlägt die Prüfung einfach fehl, und die Weiterleitungen auf die offizielle Adresse bleiben deaktiviert. Für einen Test ohne Kommandozeile siehe [Éclair auf deinem Computer ausprobieren](https://eclaircms.org/de/installation/lokal).

## Wie startest du die Tests?

```bash
php tests/run.php          # 550 Unit- und HTTP-Prüfungen
php tests/run.php --unit   # nur Unit-Tests
```

Die Integrationstests starten einen echten PHP-Server und spielen einen Großteil der Angriffe aus dem Sicherheitsaudit nach. `tests/fake-ai.php` simuliert die KI-Anbieter (Claude, ChatGPT, Bilder): Der Assistent wird ohne Schlüssel und ohne Kosten getestet.

## Wie erstellst du ein verteilbares Archiv?

```bash
php tools/build.php
```

Das Tool kompiliert die Übersetzungen aus `i18n/` neu, berechnet den SHA-256-Fingerabdruck jeder Datei in `app/manifest.php`, der Referenz der Integritätsprüfung, und erstellt dann `dist/eclair-cms-<version>.zip` mit der Datei LISEZ-MOI, der Lizenz und den Hinweisen zu Drittanbietern.

## Wie passt du das Éclair CMS Theme an?

Die öffentliche Website wird von den Vorlagen in `app/theme/` gerendert:

| Datei | Aufgabe |
| --- | --- |
| `layout.php` | Haupt-Vorlage: Header, Menü, Footer |
| `single.php` | Eine Seite oder ein Beitrag |
| `list.php` | Blog, Kategorien, Autorenseiten und Suche |
| `cards.php` | Das Raster der Beitragskarten |
| `404.php` | Die Seite „nicht gefunden“ |
| `theme.css` | Die Stile, minifiziert und in jede Seite eingefügt |

Die Einstellungen unter Design werden zu CSS-Variablen, die dein Theme wiederverwenden kann: `--accent`, `--on-accent`, `--link`, `--link-dark`, `--font` und `--font-head`. Der Dunkelmodus steht zwischen den Kommentaren `/*dark*/` und `/*/dark*/`: Éclair entfernt diesen Block, wenn die Einstellung „Immer hell“ gewählt ist.

> **Halte dich an die Sicherheitsrichtlinie** — Die Content-Security-Policy der öffentlichen Website verbietet Inline-Skripte: Lege dein JavaScript in eine Datei unter `assets/`. Bei den Stilen ist nur das `<style>`-Tag des Themes erlaubt, dank seines automatisch berechneten SHA-256-Hashs; `style=""`-Attribute werden blockiert.

Bewahre eine Kopie deiner Vorlagen auf: Die Integritätsprüfung meldet sie als geändert, was normal ist, und ein Éclair-Update ersetzt sie (siehe [Aktualisieren](https://eclaircms.org/de/dokumentation/updates)). Die Website eclaircms.org, die du gerade liest, ist selbst mit Éclair und einem angepassten Theme gebaut: fixiertes Menü, Dokumentation mit Seitenmenü, vorherige und nächste Seiten.

## Wie lieferst du Éclair mit Nginx aus?

Unter Nginx braucht Éclair keine `.htaccess`, aber du musst diese Regeln nachbilden:

```nginx
location ~ ^/(app|data|cache)(/|$) { return 404; }
location ~ /\.(?!well-known/) { return 404; }
location ^~ /media/ {
    location ~* \.(php\d?|phtml|phar|s?html?|svgz?|xml|js)$ { return 404; }
    add_header X-Content-Type-Options nosniff;
    expires 1y;
}
location ~* \.(webp|avif|jpe?g|png|gif|ico|css|js|woff2)$ { expires 1y; add_header Cache-Control "public, immutable"; }
location / { try_files $uri /index.php$is_args$args; }
location = /index.php {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~ \.php$ { return 404; }
```

Damit die Antworten des KI-Assistenten fortlaufend erscheinen, füge `fastcgi_buffering off;` in den PHP-Block ein.

## Welche PHP-Versionen und Erweiterungen brauchst du?

Éclair läuft mit **PHP 8.1 bis 8.5**; empfohlen ist 8.3. Die Erweiterungen `mbstring`, `json`, `dom`, `session` und `zlib` sind unverzichtbar. `gd` (WebP-Bilder), `zip` (Backups), `curl` (IndexNow und KI-Assistent) und `sodium` oder `openssl` (Schlüssel des Assistenten) werden empfohlen. Der Installationsassistent prüft das alles.

## Wie kannst du zu Éclair beitragen?

Der Code ist auf [GitHub](https://github.com/Jacckisback/eclair-cms) öffentlich: Melde einen Bug oder schlage eine Idee in den Issues vor, oder sende einen Pull Request samt Tests. Éclair wird unter der MIT-Lizenz verbreitet; ein Teil der Icons des Adminbereichs stammt von [Lucide](https://lucide.dev), unter der ISC-Lizenz. Du kannst das Projekt auch auf der Seite [Spenden](https://eclaircms.org/de/spenden) unterstützen.

## Fragen von Entwicklern

### Brauche ich Composer oder Node.js, um an Éclair zu entwickeln?

Nein. Éclair hat keine Abhängigkeiten: PHP 8.1 oder neuer genügt, um die Website, die Tests und das Build-Tool auszuführen.

### Kann ich mein eigenes Éclair CMS Theme erstellen?

Ja: Bearbeite die Vorlagen in app/theme und die Datei theme.css. Halte dich an die Sicherheitsrichtlinie (kein Inline-Skript) und bewahre eine Kopie deiner Dateien auf, die ein Update ersetzen würde.

### Wo werden die Inhalte gespeichert?

In data/content, eine Datei pro Inhalt, im JSON-Format, dem die Schutzzeile vorangestellt ist. data/index.php hält eine Zusammenfassung davon, um schnell aufzulisten und zu routen.

### Wie füge ich eine Übersetzung des Adminbereichs hinzu?

Die lesbaren Quellen liegen im Ordner i18n des Repositorys, wobei der französische Text als Schlüssel dient. tools/i18n.php kompiliert sie zu komprimierten Dateien, und php tools/build.php erledigt das automatisch.
