Sunday, March 29, 2026
Multiple team members on-site can view the same inspection in real-time using Supabase Realtime. When one inspector marks a defect location on the photo, others see it immediately without refresh. Keeps the crew aligned and reduces duplicate inspections.
.on() listeners; store defect positions as JSON in the inspection row. Add a Riverpod stream to rebuild the photo overlay when defects change.
Cache all RFI/Submittal/Change Order metadata locally using Hive on app startup. When offline, users can still search by contractor name, document type, or date—results show "(cached)" badge. Auto-sync the index when reconnected.
{docId: {type, contractor, date, status}} stored in Hive. Use search() filter on startup instead of Supabase queries. Sync changes via _onMessage stream every reconnection.
Before syncing a punch photo to Supabase, calculate SHA-256 checksum and store locally. If a network interrupt corrupts the upload, retry detects the mismatch and re-uploads. Eliminates phantom "synced" photos that never arrived.
crypto package; store checksum in local punch record before upload(). Compare remote checksum after sync completes; if mismatch, queue for retry.