Preferiti, assegnazione e allegati — i dettagli che cambiano tutto
Ci sono le grandi funzionalità e ci sono le "piccole" aggiunte che rendono il prodotto davvero utilizzabile.
I preferiti
Mettere un'attività tra i preferiti è un interruttore. Un booleano. Dovrebbe richiedere 30 minuti. In pratica: colonna, RLS, filtro feed, animazione stella, sincronizzazione Realtime. Il rimbalzo della stella mi ha richiesto più tempo della logica di business.
L'assegnazione di attività
Il modello è una tabella di collegamento collaborative.task_assignments. La vera sfida è il FilterBar con tre modalità (Tutto / Create da me / Assegnate a me) combinato con il filtro gerarchico dei gruppi.
Gli allegati — la scelta architetturale
Due approcci possibili: JSONB (semplice, veloce) o tabelle relazionali (più lavoro, più scalabile). Ho scelto le tabelle relazionali (privat.task_attachments, privat.memo_attachments) per le prestazioni delle query, la pulizia della cancellazione a cascata e le RLS individuali.
La trappola degli URL firmati
Supabase Storage genera URL firmati che scadono dopo un'ora. La mia soluzione: un StorageService.refreshAttachmentUrlsBatch() che rigenera gli URL in batch tramite il storage_path. È il tipo di dettaglio invisibile — quando funziona, nessuno lo nota. Quando si rompe, tutti lo vedono.