# Technology Requirements – REST-Server für Geräte-Synchronisierung (Phase 2) Date: 2026-05-14 Issue: #10 Author: Tech-Decision Workflow --- ## Kontext Die Krisenvorrat-App (Android/Kotlin) speichert in v1.0 alle Daten lokal (Room/SQLite). In Phase 2 soll ein REST-Server hinzukommen, der die Synchronisierung und das Sharing des Inventars zwischen mehreren Geräten ermöglicht. **Einsatzszenario:** - Privater Gebrauch, kein kommerzieller Betrieb - Wenige Geräte (2–10), keine hohe Last - Während Entwicklung: Server lokal auf Laptop, Testgerät im LAN - Später: kleiner Server im Internet (VPS / Homeserver) - Datenformat: JSON (kotlinx.serialization, bereits im Client definiert) **Vom Issue genannte Optionen:** Ktor, Spring Boot, Node.js/Express, Python/FastAPI --- ## Must-Have (Eliminatoren) - REST-API bereitstellen (JSON Request/Response) - Einfaches Deployment auf einem kleinen Linux-VPS oder Homeserver - Unterstützung für grundlegende CRUD-Operationen (Inventar-Items, Kategorien, Lagerorte) - JSON als primäres Datenformat (kompatibel mit dem bestehenden Client-Datenmodell) - Aktiv gewartet, stabile Release-Versionen verfügbar - Geringe Betriebskosten (wenig RAM/CPU-Verbrauch für wenige Nutzer) ## Should-Have (gewichtete Pluspunkte) - **Kotlin-Kompatibilität:** Gleiche Sprache wie der Android-Client (Wiederverwendung von Datenmodellen, kotlinx.serialization) - Einfache Einrichtung und geringer Boilerplate - Integrierte Unterstützung für Coroutines / async I/O - Leichtgewichtig (kein Application-Server wie Tomcat nötig) - Gute Dokumentation und Lernressourcen - Einfache Datenbankanbindung (SQLite oder PostgreSQL) - Einfaches Testen (Unit- und Integrationstests) ## Nice-to-Have (Bonus) - WebSocket-Unterstützung (für Echtzeit-Sync in einer späteren Phase) - Eingebaute Authentifizierung / Sicherheitsmechanismen - Docker-Image oder einfache Containerisierung - OpenAPI / Swagger-Generierung - Hot-Reload / schnelle Entwicklungszyklen - Type-safe Routing ## Constraints - **Zielplattform Server:** Linux (VPS / Homeserver), optional auch Windows/macOS für lokale Entwicklung - **Client-Sprache:** Kotlin (Android) – geteilte Modelle sind ein großer Vorteil - **Serialisierung:** kotlinx.serialization (bereits im Client im Einsatz) - **Lizenz:** Open Source (MIT, Apache 2.0 o.ä.) - **Skalierung:** Nicht relevant – max. 10 gleichzeitige Nutzer - **Budget:** Kein Budget für kommerzielle Lizenzen oder teure Hosting-Lösungen