# RoggioApp - Langzeit-Vision & Hardware-Schnittstellen ## 1. Lokale Resilienz (Datenbank-Mirroring) * **Ziel:** Die Cloud (Hetzner) darf ausfallen oder das Internet auf dem Gelände streiken, ohne dass der Betrieb komplett lahmgelegt wird. * **Ansatz:** Ein lokales Mirror-System für die Datenbank. * *Architektur-Implication:* PostgreSQL erlaubt logische Replikation (Master-Slave oder Master-Master Konzepte). Wir sollten das Backend so bauen, dass es (später) Offline-First / Sync-Fähigkeiten bekommt oder zumindest ein lokaler Read-Replica Server auf dem Gelände läuft. (Für den Start bauen wir Single-Node, halten uns aber die Multi-Node Replikation in Postgres offen). ## 2. Zentrale User-Verwaltung (Identity & Access Management - IAM) * **Ziel:** Das Auth-System (Nextcloud / OIDC) soll in Zukunft der einzige Schlüssel für *alles* sein. * **Geplante Erweiterungen für User:** * WireGuard VPN-Profile * VoIP / SIP-Accounts (Telefonie) * E-Mail Accounts * NFC / RFID Zugangskontrolle (Türen) * *Architektur-Implication:* Nextcloud als OIDC-Provider ist hier bereits ein sehr guter Startpunkt. Wir dürfen in der RoggioApp keine eigenen, isolierten "User-Passwort"-Tabellen bauen. Die RoggioApp referenziert nur eine globale `user_id` (z.B. aus LDAP oder Nextcloud), an der die Hardware-Schlüssel hängen. ## 3. Home Automation & IoT (Der Campus) * **Ziel:** Smarte Steuerung und Überwachung der physischen Infrastruktur vor Ort. * **Core-Technologien:** HomeAssistant, MQTT, LoRaWAN. * **Kritische Systeme:** * PV / Solar Management (Strom) * Wasserspeicher (Infrastruktur) * Zugangskontrolle (Smart Locks) * *Architektur-Implication:* Unser Konzept der "Units" und "Traits" greift hier perfekt! * Eine Unit (z.B. Zirkuswagen) bekommt in unserer Datenbank den Trait `has_smart_lock`. * In diesem Trait speichern wir die MQTT-Topic-ID (`/house/zirkuswagen/lock`). * Wenn im Event "Buchung" der Status auf "Check-in" wechselt, feuert unser Node-Backend einen MQTT-Befehl an den lokalen HomeAssistant, um den Code des Gastes auf das Schloss zu spielen. ## Claras Fazit Die Weichenstellung ist klar: Das System ist kein reines "Software-Tool", sondern das Betriebssystem für ein physisches Gelände. Die strikte Trennung von Core-Logik, externem Auth-Provider und MQTT-fähigen Hardware-Layern sichert uns ab. Keine dieser Anforderungen sprengt unseren API-First / Node.js / Postgres Stack – im Gegenteil, MQTT und OIDC lassen sich in Node.js hervorragend nativ integrieren.