Init: RoggioApp Architecture, Prisma Schema, API MVP

This commit is contained in:
Clara Zetkin
2026-04-26 19:42:42 +02:00
commit 193b29e8a9
5256 changed files with 1446953 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# 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.