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
+34
View File
@@ -0,0 +1,34 @@
# RoggioApp - Events, Aufgaben & Relationen
## 1. Die Universalität der Entitäten
Nicht nur die physische Welt (Räume, Zirkuswagen), sondern **alles** ist eine grundlegende Entität, die über Eigenschaften (Traits) und Verknüpfungen definiert wird.
* **Personen als Entitäten:** Können Rollen in Gruppen übernehmen.
* **Dynamische Relationen (Verknüpfungen mit Eigenschaften):** Eine Person ist nicht einfach "in" einer Gruppe. Die Verbindung selbst hat eine Eigenschaft!
* *Person A* ist über die Eigenschaft `is_comm_contact` mit *Gruppe X* verbunden.
* *Person B* ist über die Eigenschaft `is_finance_contact` mit *Gruppe X* verbunden.
## 2. Buchungen und Aufgaben = "Events"
Die höchste Form der Abstraktion betrifft die Zeit und die Aktionen. Es gibt keine starren Tabellen für "Buchungen" und "Putzpläne". Beide sind im Kern **Events**.
### Was ist ein Event?
Ein Event ist ein Knotenpunkt in der Zeit, der andere Entitäten miteinander verbindet und einen Zustand hat.
* **Beispiel A: Die Buchung (Event-Typ: Rental)**
* *Eigenschaften des Events:* Zeitraum (14.08 - 21.08), Status (Bestätigt).
* *Relation 1:* Verknüpft mit Entität "Gruppe Familie Rossi" (Wer?).
* *Relation 2:* Verknüpft mit Entität "Haus A" + "Zirkuswagen" (Wo?).
* *Relation 3:* Finanzen/Rechnung (Geld).
* **Beispiel B: Das Putzen (Event-Typ: Task/Maintenance)**
* *Eigenschaften des Events:* Fälligkeitsfenster (21.08 10:00 - 15:00), Status (Offen).
* *Relation 1:* Verknüpft mit Entität "Haus A" (Was muss geputzt werden?).
* *Relation 2:* Verknüpft mit Entität "Kollektiv-Mitglied Sarah" (Wer putzt?).
* *Spezial-Relation (Event -> Event):* Getriggert durch / Abhängig von "Event A (Buchung Ende)".
## Claras architektonische Ableitung
Das gesamte System besteht eigentlich nur aus drei riesigen Säulen:
1. **Nodes (Entitäten):** Die Bausteine der Welt (Personen, Einheiten, etc.).
2. **Edges (Relationen/Traits):** Wie die Nodes verbunden sind und was sie können.
3. **Events (Zeitliche Knoten):** Das Klebeband, das Nodes auf einer Zeitachse zusammenführt (Buchungen, Aufgaben, Wartung).
*Herausforderung für die Datenbank:* So etwas baut man idealerweise mit einer Graphendatenbank (wie Neo4j) oder in PostgreSQL mit JSONB-Feldern für die Traits und extrem klugen Pivot-Tabellen (Edge-Tables) für die Beziehungen, damit man nicht den Verstand beim Queries-Schreiben verliert. Wir müssen einen Weg finden, das in Prisma sauber und typsicher zu modellieren, ohne die Performance zu töten.