Der Feed: Der komplexeste Bildschirm von TAMSIV
Jede App hat diesen Bildschirm, der die gesamte Komplexität konzentriert. Für TAMSIV ist es der Feed. Ein einziger Stream, der alles mischt: aktuelle Aktivitäten, Benachrichtigungen, Gamification-Statistiken, Abzeichen.
Die konsolidierte RPC
Eine einzige PostgreSQL-Funktion get_consolidated_feed aggregiert Aufgaben, Memos, Ereignisse, Gamification und Gruppenaktivitäten. Ein vereinheitlichter Typ mit item_type für das Routing auf der Frontend-Seite.
Die ersten Versionen: 3 Sekunden Ladezeit. Nach Indexierung und Umschreiben der JOINs: 200 ms.
Das Rendering mit React Native
Jeder Elementtyp hat seine Komponente: FeedTaskItem, FeedMemoItem, FeedGamificationItem, FeedGroupItem. Alles in einer FlatList von react-native-gesture-handler mit getItemLayout.
Das Problem abgelaufener Bilder
Die signierten Supabase-URLs laufen nach 60 Minuten ab. Lösung: den storage_path speichern und die URLs über StorageService.refreshAttachmentUrlsBatch() aktualisieren. Batch-Aufruf statt N individueller Aufrufe.
Das progressive Laden
Unendliche Paginierung (20 Elemente), Pull-to-Refresh, L1-Speicher-Cache + L2-AsyncStorage. Der Feed lädt sofort aus dem Cache und aktualisiert sich dann im Hintergrund. Dieser Bildschirm hat mich drei Wochen gekostet. Es ist auch der, auf den ich am stolzesten bin.