Einkaufsliste

Technik

Wie es gebaut ist, und wo die Grenzen liegen.

Kein Marketing-Kapitel: der tatsächliche Aufbau, das Sicherheitsmodell und die Stellen, an denen bewusst ein Kompromiss steht.

Aufbau

Wenig Teile, klar getrennt.

SchichtTechnikAufgabe
AppReact Native · Expo · TypeScriptOberfläche, Gesten, Zustand
GestaltungNativeWind (Tailwind)Ein einziges Farb- und Abstandssystem
BewegungReanimated · Gesture HandlerWischen, Sheets, Übergänge
DatenSupabase (PostgreSQL)Speicher, Anmeldung, Live-Updates
ErkennungVision-Modell über NVIDIAProdukte und Preise aus Bildern

Sicherheit

Die Regel steht in der Datenbank.

Wer welche Zeile sehen darf, entscheidet nicht die App, sondern PostgreSQL selbst. Das ist der Unterschied zwischen „die App zeigt es dir nicht“ und „du bekommst es gar nicht erst“.

  • Row Level Security auf allen fünf Tabellen, 18 Regeln.
  • Familie gründen und beitreten laufen über geprüfte Funktionen — niemand kann sich per Direktzugriff in eine fremde Familie schreiben.
  • Die anonyme Rolle hat auf nichts Zugriff, auch nicht auf die Funktionen.
  • Nachgemessen mit zwei simulierten Nutzern: ohne Einladungscode kommen null Zeilen zurück.
create policy items_select on public.items
  for select to authenticated
  using (public.can_access_list(list_id));

Eine von 18 Regeln. can_access_list prüft, ob die Liste zu einer Familie gehört, in der du Mitglied bist — und wird bei jeder einzelnen Abfrage ausgewertet.

Live-Updates

Warum das Abhaken sofort ankommt.

Sofort sichtbar

Der eigene Haken erscheint, bevor der Server geantwortet hat. Geht etwas schief, springt die Zeile zurück.

Direkt vom Server

PostgreSQL meldet jede Änderung an alle angemeldeten Geräte — dieselben Sicherheitsregeln gelten dabei weiter.

Ohne Doppelbilder

Eigene, noch unbestätigte Änderungen werden vom eintreffenden Echo nicht überschrieben.

Offen gelegt

Was diese App bewusst nicht perfekt macht.

Der Erkennungs-Schlüssel steckt in der App. In der Standardeinstellung ruft das Gerät den Bilddienst selbst auf — der Schlüssel lässt sich also aus der Datei auslesen. Für einen Build im Familienkreis ist das vertretbar; für eine Weitergabe gibt es einen Server-Umweg, der ihn zurückhält.
Die E-Mail wird nicht geprüft. Die Bestätigung per Mail ist abgeschaltet, damit die Anmeldung ein Schritt bleibt. Ein Konto ohne Einladungscode sieht ohnehin nichts — der Preis ist, dass man sich mit einer fremden Adresse anmelden könnte.