Pastro in Diagrammen

Acht Ansichten auf dasselbe System, von der Gesamtkarte bis zu den Stellen, deren Zusammenspiel man aus keiner einzelnen Datei sieht. Jede Ansicht ist eine eigenständige HTML-Datei: anklickbar, mit hellem und dunklem Schema, Fokus, Pfadverfolgung und Export.

Quelle ist jeweils die .json in quellen/. Die HTML-Dateien werden daraus erzeugt und liegen mit im Repo, weil die Diagramm-Site sie direkt ausliefert.

01

Pastro im Überblick

Architektur

Was gehört überhaupt zum System und wer redet mit wem?

  • Ein Client, vier Cloud Functions, Appwrite als Plattform, Mistral, Buy Me a Coffee und Umami von außen.
  • Der Client ruft drei der vier Functions selbst auf; support wird nur vom Webhook angestoßen.
  • Jede Execution bekommt einen dynamischen API-Key, es liegt keiner fest hinterlegt.
Client und OfflineKI-FunktionenKonto und HaushaltUnterstützungAlles zusammen
Diagramm öffnen system.architecture.json
Hier einbetten
02

Offline-Schreibweg

Lifecycle

Was passiert mit einer Änderung, wenn gerade kein Netz da ist?

  • Direkt an Appwrite geht nur, was mit Netz und leerer Warteschlange geschrieben wird.
  • Netzfehler, 401, 408, 429 und 5xx kommen an den Anfang der Schlange zurück, ein endgültiges 4xx wird verworfen.
  • Abgearbeitet wird bei online, Sichtbarkeitswechsel, App-Start und neuem Eintrag.
Diagramm öffnen offline-writes.lifecycle.json
Hier einbetten
03

Bon und Sprachaufnahme werden Vorrat

Datenfluss

Wie wird aus einem Foto oder einem gesprochenen Satz ein Eintrag im Vorrat?

  • Eine Function bedient Bon, PDF und Sprache, je mit eigenem Prompt.
  • OCR beziehungsweise Voxtral erzeugen Text, das Textmodell daraus TOON-Zeilen.
  • groceries und purchases entstehen in einer Transaktion, sonst bleibt kein halber Bon liegen.
Diagramm öffnen import-pipeline.dataflow.json
Hier einbetten
04

Eine Rezeptanfrage im Chat

Ablauf

Was läuft zwischen dem Absenden im Composer und den Karten im Chat?

  • Der Client legt die Anfrage-Row an, die Function schreibt die Rezepte.
  • Vor dem Modell stehen Team-Prüfung und Reservierung im Wochenlimit.
  • Abbrechen heißt: Anfrage-Row löschen, dann verwirft Appwrite die ganze Transaktion.
Diagramm öffnen recipe-chat.sequence.json
Hier einbetten
05

Das KI-Wochenlimit

Lifecycle

Wie wird verhindert, dass die KI-Kosten davonlaufen?

  • Der Zähler geht hoch, bevor Mistral läuft, in einem atomaren Schritt.
  • Zwei Zähler: der sichtbare für den Haushalt, ein stiller Riegel für die Person.
  • Zurück geht ein Platz nur, wenn kein Modelllauf zustande kam: 503, fehlende Anfrage-Row, leerer Vorrat.
Diagramm öffnen ai-limit.lifecycle.json
Hier einbetten
07

Einladung annehmen und Haushalt wechseln

Ablauf

Was verliert jemand, der einer Einladung folgt?

  • Wer allein in seinem Haushalt war, verliert ihn beim Wechsel unwiderruflich.
  • Deshalb wird die Einladung erst nach einer ausdrücklichen Bestätigung angenommen.
  • Erst austreten, dann umstellen: scheitert die Function, bleibt team_id beim alten Haushalt.
Diagramm öffnen invitation.sequence.json
Hier einbetten
08

Konto löschen und Haushalt verlassen

Ablauf

Was passiert wirklich, wenn jemand sein Konto löscht?

  • Ohne gestempelten Einwilligungsnachweis wird gar nichts gelöscht.
  • Die Teams kommen aus den Mitgliedschaften, nicht aus den Prefs.
  • Letztes bestätigtes Mitglied: alle Zeilen aus acht Tabellen und das Team selbst sind weg.
Diagramm öffnen account-deletion.sequence.json
Hier einbetten