30 lines
1.7 KiB
Markdown
Executable File
30 lines
1.7 KiB
Markdown
Executable File
# RoggioApp - Vault Implementierung (MVP Step 1)
|
|
|
|
## Die MVP-Strategie für den Datenschutz-Split
|
|
Wir bauen nicht sofort eine zweite physische Datenbank und einen VPN-Tunnel auf. Das würde uns am Anfang massiv ausbremsen. Wir simulieren die Architektur zuerst *logisch*, bevor wir sie *physisch* trennen.
|
|
|
|
### Schritt 1 (Jetzt): Die logische Trennung (Separate Table)
|
|
In unserer aktuellen Prisma-Datenbank (Hetzner/Cloud) legen wir eine **eigenständige Tabelle `Vault`** an.
|
|
* **Warum:** So zwingen wir unseren Backend-Code vom ersten Tag an dazu, so zu tun, als lägen die Daten auf einem anderen Server. Die Logik "Hole Token -> Lade Daten aus Vault" wird in Code gegossen.
|
|
* **Der Vorteil:** Wenn wir später den echten On-Premise-Server hinstellen, müssen wir den Backend-Code nicht mehr anfassen. Wir ändern nur die Datenbank-URL für die `Vault`-Tabelle auf deine lokale IP um.
|
|
|
|
### Schritt 2 (Später): Die physische Trennung
|
|
Sobald der On-Premise-Server steht, lösen wir die Tabelle `Vault` aus Prisma heraus und schieben sie in eine eigene, kleine SQLite/Postgres-Instanz auf deinem HomeAssistant-Server.
|
|
|
|
## Anpassung für Prisma (Mock-Vault)
|
|
```prisma
|
|
// ============================================================================
|
|
// DER VAULT (Logisch getrennt - Später On-Premise)
|
|
// ============================================================================
|
|
model VaultData {
|
|
id String @id @default(uuid())
|
|
entityType String @db.VarChar(50) // e.g. "Person", "Booking"
|
|
entityId String // Die ID der Person oder Buchung in der Cloud
|
|
|
|
// Die sensiblen Daten (verschlüsselt!)
|
|
secureData String @db.Text
|
|
|
|
createdAt DateTime @default(now())
|
|
}
|
|
```
|