KleinSite ist ein schlankes PHP-Framework für persönliche Websites ohne Datenbank. Keine Installationsroutine, kein Admin-Backend, kein Plugin-Ökosystem das gepflegt werden will. Nur PHP, Twig und Markdown.
Warum kein WordPress
WordPress ist eine ausgereifte Plattform – für Blogs, Shops und komplexe Redaktionssysteme. Wer aber eine persönliche Seite mit einem Dutzend Seiten betreiben will, zahlt einen hohen Preis: Datenbankabhängigkeit, Update-Pflege, Sicherheitslücken in Plugins, ein Admin-Interface das mehr Oberfläche bietet als man je braucht.
KleinSite dreht das Verhältnis um. Der Entwickler bleibt im Code – in Dateien, in Versionskontrolle, in Strukturen die er kennt und kontrolliert.
Philosophie
Jede Seite ist ein Twig-Template. Templates erben von einem gemeinsamen Layout, definieren Titel und Untertitel als Blöcke und enthalten was sie enthalten müssen – nicht mehr.
Wer nur Text braucht, schreibt Markdown. Wer Struktur braucht, schreibt Twig. Beides kann kombiniert werden. Eine Markdown-Datei mit Frontmatter reicht für einen vollständigen Artikel:
---
title: Der Rewrite-Reflex
subtitle: Warum neu schreiben wieder Legacy produziert
---
## Der erste Impuls
...
Wer mehr Kontrolle braucht, schreibt ein Twig-Template:
{% extends 'base.layout.twig' %}
{% block header_title %}Der Rewrite-Reflex{% endblock %}
{% block header_subtitle %}Warum neu schreiben wieder Legacy produziert{% endblock %}
{% block content %}
{{ markdown('rewrite-reflex.md') }}
{% endblock %}
Technischer Stack
KleinSite basiert auf bewährten PHP-Komponenten:
- Slim 4 – minimales HTTP-Framework, PSR-7-konform
- PHP-DI 7 – Dependency-Injection-Container mit Autowiring
- Twig 3 – Template-Engine mit Vererbung und Blöcken
- league/commonmark – CommonMark-konformer Markdown-Parser mit Frontmatter-Unterstützung
- Bootstrap 5.3 – CSS-Framework für Layout und Komponenten
- Prism.js – Syntax-Highlighting für Code-Blöcke
Keine Datenbank. Keine Session. Kein State.
Wie Seiten entstehen
Das Routing ist denkbar einfach: /{slug} mappt auf pages/{slug}.twig –
oder, wenn kein Template vorhanden ist, auf content/{slug}.md. Existiert
beides nicht, erscheint eine 404-Seite.
Ein neuer Artikel entsteht in zwei Schritten: Markdown-Datei anlegen, Frontmatter setzen, fertig. Kein Deployment, kein Cache leeren, kein Admin-Login.
Twig-Komponenten
KleinSite bringt eine eigene Twig-Extension mit, die häufig benötigte Komponenten als Funktionen bereitstellt:
markdown('datei.md') – lädt eine Markdown-Datei und rendert sie als HTML.
accordion(id, items) – rendert ein Bootstrap-Accordion mit Twig-Partials
als Content.
card(data) / cards(items, options) – einzelne Card oder responsives Grid,
mit optionalem Titel, Untertitel, Badge, Content und Link.
alert(type, partial) – Hinweisbox in den Varianten info, success,
warning und danger.
Alle Komponenten akzeptieren Twig-Partials als Content – die Partials können
ihrerseits markdown() aufrufen, HTML enthalten oder beides kombinieren.