# Entscheidungen Stand der Quellenprüfung: 21. Oktober 2026. Verwendet wurden offizielle Dokumentationen und die npm-Registry für konkrete Paket-Metadaten. ## D-001: SvelteKit 3 und Node-Unterstützung Die Anwendung verwendet SvelteKit 3, Svelte 5, TypeScript und Vite 8. Das Projekt wurde gemäß aktueller Empfehlung mit `npx sv create` angelegt. Die Kit-Konfiguration liegt bei SvelteKit 3 in `vite.config.ts`, nicht in einer `svelte.config.js`. Die lokale Mindestversion ist Node 22.17. Das Cloudron-Image nutzt Node 24 LTS. Der vorhandene lokale Lauf wurde mit Node 22.23.1 geplant. Quellen: - - - - npm-Metadaten für `@sveltejs/kit` 3.1.0 am 21.10.2026 ## D-002: Offizieller Node-Adapter `@sveltejs/adapter-node` erzeugt den Produktionsserver in `build/`. Gebaut wird mit `npm run build`, gestartet mit `node build`. `HOST` und `PORT` konfigurieren den Server. Der Adapter behandelt SIGTERM/SIGINT und kontrolliertes Herunter- fahren; ein eigener Server ist für Etappe 1 nicht erforderlich. Quelle: ## D-003: SQLite mit better-sqlite3 `better-sqlite3` 13.x wird als gekapselter synchroner Treiber verwendet. Das Paket ist MIT-lizenziert und verlangt Node 22 oder neuer. Gegenüber `node:sqlite` wird damit in Etappe 1 keine API verwendet, die in der offiziellen Node-24-Dokumentation noch als Release Candidate gekennzeichnet ist. Die Datenbankgrenze bleibt in `src/lib/server` gekapselt. Migrationen sind eigene nummerierte SQL-Dateien und laufen transaktional. WAL wird in Etappe 1 nicht aktiviert; für die kleine Redaktion ist das Rollback-Journal zunächst ausreichend und vereinfacht die frühe Betriebsprüfung. Quellen: - - - npm-Metadaten für `better-sqlite3` 13.0.3 am 21.10.2026 ## D-004: Cloudron-Paket Das Paket nutzt `manifestVersion: 2`, internen HTTP-Port 3000 und `/healthz`. `localstorage.sqlite.paths` nennt `/app/data/sendewerk.sqlite`, damit Cloudron eine konsistente Sicherung der aktiven SQLite-Datei erstellen kann. Das Startskript stellt Verzeichnisse und Besitzrechte her, migriert als Benutzer `cloudron` und ersetzt sich zuletzt per `exec` durch den Node-Prozess. Das Image ist auf die am 21.10.2026 offiziell dokumentierte datierte Node-24- Basis samt Digest gepinnt. Außer `/app/data`, `/run` und `/tmp` wird das Laufzeitdateisystem als read-only behandelt. Quellen: - - - - ## D-005: Theme ohne serverseitiges Nutzerkonto Etappe 1 speichert `light`, `dark` oder `system` in `localStorage`. Ein kurzes Inline-Skript in `app.html` setzt das resultierende Theme vor dem ersten Paint auf dem Wurzelelement. Dies vermeidet einen falschen Theme-Blitz und benötigt vor Etappe 2 weder Cookie noch Konto. Die Einstellung bleibt bei Neuladen im gleichen Browser erhalten. ## D-006: Etappe-1-Vorschauen statt Attrappen Vorschauseiten lesen echte persistente SQLite-Seed-Daten, bieten aber keine funktionslosen Speichern- oder Live-Schaltflächen. Ein sichtbarer Hinweis grenzt Gestaltungsvorschauen von den späteren Fachfunktionen ab. Damit wird keine noch nicht implementierte Funktion als fertig dargestellt. ## D-007: Arbeitsansicht nach verfügbarem Platz Die feste Desktop-Seitenleiste wird bis `52rem` verwendet und dann vollständig durch mobile Kopf- und Fußnavigation ersetzt. Der Sendungsbau schaltet bereits bis `72rem` von zwei Spalten auf eine bedienbare Pane-Umschaltung um. Dadurch bleibt die Desktopnavigation in schmalen Fenstern erhalten, ohne Fundus und Ablauf zusammenzudrücken. Der Fundus erscheint auf dem Desktop als kompakte Liste und auf kleinen Bildschirmen als Kartenfolge. Vorschau- und Schreibschutzinformationen sind in einem nativen, tastaturbedienbaren `details`-Element gebündelt. Diese Darstellungsentscheidung ändert weder Datenmodell noch Funktionsumfang.