Favoriten, Zuweisung und Anhänge – die Details, die alles verändern
Es gibt die großen Features und es gibt die „kleinen“ Ergänzungen, die das Produkt wirklich nutzbar machen.
Favoriten
Eine Aufgabe als Favorit markieren, das ist ein Umschalter. Ein Boolescher Wert. Das sollte 30 Minuten dauern. In der Praxis: Spalte, RLS, Feed-Filter, Stern-Animation, Echtzeit-Synchronisation. Das Hüpfen des Sterns hat mich länger gekostet als die Geschäftslogik.
Aufgabenzuweisung
Das Modell ist eine Verknüpfungstabelle collaborative.task_assignments. Die wahre Herausforderung ist die FilterBar mit drei Modi (Alle / Von mir erstellt / Mir zugewiesen) kombiniert mit dem hierarchischen Gruppenfilter.
Anhänge – die architektonische Wahl
Zwei mögliche Ansätze: JSONB (einfach, schnell) oder relationale Tabellen (mehr Arbeit, skalierbarer). Ich habe mich für relationale Tabellen (privat.task_attachments, privat.memo_attachments) entschieden, wegen der Abfrageleistung, der sauberen Kaskadenlöschung und der individuellen RLS.
Die Falle der signierten URLs
Supabase Storage generiert signierte URLs, die nach einer Stunde ablaufen. Meine Lösung: ein StorageService.refreshAttachmentUrlsBatch(), der die URLs stapelweise über den storage_path neu generiert. Das ist die Art von unsichtbarem Detail – wenn es funktioniert, bemerkt es niemand. Wenn es kaputtgeht, sehen es alle.