Der Router kennt Platzhalter fuer ein Pfadsegment und liefert 405, wenn
nur die Methode nicht passt. Response kann Arbeit fuer die Zeit NACH dem
Ausliefern vormerken (afterSend) - so verzoegert das Protokollieren
eines Klicks die Weiterleitung nicht.
BasePath deckt drei Installationsarten ab: Webroot auf public/,
Unterverzeichnis und Shared Hosting ohne eigenen Webroot.
SQLite als Standard (keine Einrichtung noetig, WAL aktiviert), optional
MySQL/MariaDB. Beide Treiber nutzen dieselben vorbereiteten Statements.
Die Migrationen laufen automatisch beim ersten Request; jede Migration
liefert das SQL je Treiber. Damit entfaellt ein manueller Schritt beim
Deployment ueber FTP.
data/ enthaelt eine eigene .htaccess als zweite Absicherung, falls das
Verzeichnis beim Hoster doch einmal im Webroot landet.
Plain PHP 8.2+ ohne Framework. Einzige Laufzeit-Abhaengigkeit ist
endroid/qr-code; intl und imagick sind optional (es gibt jeweils einen
Rueckfallweg). Konfiguration ueber .env oder Umgebungsvariablen, damit
dieselbe Anwendung per FTP und per Docker deploybar ist.