1.2 KiB
1.2 KiB
002 – Frontend: serverseitig + htmx (kein React)
Status: accepted
Kontext. Die App ist eine CRUD-Liste mit Formularen, Drag-&-Drop-Reihenfolge
und einem kurzen „Inspiration"-Panel. Kein Multiplayer, kein Offline-First, keine
komplexe Client-State. Der Betrieb soll so wenig bewegliche Teile wie möglich
haben (kein npm install im Runtime, keine Build-Pipeline).
Entscheidung. Serverseitiges Rendern via Symfony (Twig) + htmx (~15 kB) für fragmentbasierte Updates + SortableJS (~20 kB) für Drag-&-Drop. Kein Node-Toolchain im Deployment, keine Client-State-Verwaltung.
Konsequenzen.
-
- Sehr kleine Client-Oberfläche, kein Build-Step, keine Versionsschlachten.
-
- Business-Logik bleibt in Symfony/PHP – eine einzige Quelle der Wahrheit.
-
- Deploy = ein PHP-Container + statische Dateien (htmx, SortableJS).
-
- Fragmentbasierte Updates sind für Listen/CHECKBOXen fast unsichtbar.
- − Keine echte Offline-First / kein Optimistic-Update über mehrere Entities – reicht hier (nur Drag-&-Drop-Reihenfolge + Checkbox; beide sind schnell genug).
- − Bei starkem Wachstum an interaktiver UI kann später ein SPA-Client nötig werden (API ist JSON, bleibt kompatibel).