Technische Dokumentation von PureWiki
PureWiki ist ein Flat-File-Wiki, geschrieben in PHP (ab 8.1) mit Vanilla JavaScript und CSS. Es benötigt keine Datenbank, kein Node.js und keinen Build-Schritt. Alle Inhalte werden als JSON-Dateien im Dateisystem gespeichert. Der Code steht unter der AGPLv3.
Funktionsweise
- Speicherung: Jede Seite ist ein Ordner unterhalb von
pages/. Die Dateipage.jsonenthält den Titel, die Seiteneinstellungen und eine Liste von Editor.js-Blöcken. Entwürfe liegen inpage.draft.json, Übersetzungen inpage.{lang}.jsonund ältere Versionen in_history/. In den Seitendateien wird weder HTML noch Markdown gespeichert. - Rendering:
index.phpist der Front Controller für alle Anfragen. Der Parser wandelt die Blöcke einer Seite in HTML um, der Renderer setzt das Ergebnis in das PHP-Template des aktiven Themes ein. - Caching: Gerenderte Seiten werden als statisches HTML in
cache/abgelegt und an Besucher ausgeliefert, ohne die Seitendaten erneut zu lesen. - Bearbeitung: Seiten werden im Dashboard mit dem Editor.js-Block-Editor bearbeitet. Der Browser kommuniziert mit
purewiki/api.php, dem einzigen Einstiegspunkt der API. - Erweiterungen: Erweiterungen werden aus
extensions/geladen und binden sich über Hooks in den Core ein. Sie können Parser, Renderer, Editor, Einstellungen und API erweitern.
Verzeichnisstruktur
index.php Front Controller
purewiki/ Core, API, Dashboard, Parser und Renderer, Editor.js-Plugins
themes/ Frontend-Themes
pages/ Seiteninhalte (JSON) und Medien
config/ Konfiguration und Benutzer
cache/ Statisches HTML und Indexdateien
backups/ Backups
extensions/ Installierte Erweiterungen
Die Abschnitte dieser Dokumentation stehen in der Seitenleiste.