Schema Diagram

Visual map of every Supabase table and how they connect. Grouped by domain.

Walks + Quests

walks
idUUID PK
user_idTEXT
started_atTIMESTAMPTZ
ended_atTIMESTAMPTZ
distance_kmNUMERIC
duration_minINTEGER
route_polylineTEXT
quest_idFK user_quests
quest_library
idUUID PK
titleTEXT
quest_typeTEXT (wander/collect/visit)
intentionTEXT
descriptionTEXT
target_countINTEGER
verification_methodTEXT (snap/proximity/none)
detection_themesTEXT[]
day_typesTEXT[]
locationsJSONB
tagsTEXT[]
neighbourhoodTEXT
user_quests
idUUID PK
user_idTEXT
quest_idFK quest_library
quest_dataJSONB
statusTEXT
progressJSONB
detection_themesTEXT[]
accepted_atTIMESTAMPTZ
completed_atTIMESTAMPTZ
daily_tailored_quest
idUUID PK
user_idTEXT
active_dateDATE
quest_dataJSONB
route_chosenTEXT
reasoningTEXT

Snaps + Storage

photo_snaps
idUUID PK
user_idTEXT
walk_idFK walks
photo_urlTEXT
latitudeDOUBLE PRECISION
longitudeDOUBLE PRECISION
classified_themesTEXT[]
is_publicBOOLEAN
display_nameTEXT
captionTEXT
save_countINTEGER
published_atTIMESTAMPTZ
created_atTIMESTAMPTZ
saved_snaps
idUUID PK
user_idTEXT
photo_idFK photo_snaps
saved_atTIMESTAMPTZ
collection_map_shares
idUUID PK
tokenUUID UNIQUE
user_idTEXT
quest_titleTEXT
detection_themeTEXT
created_atTIMESTAMPTZ

Taste Memory

user_taste_profile
user_idTEXT PK
dimensionsJSONB
seeded_fromTEXT
updated_atTIMESTAMPTZ

Notifications

user_notification_tokens
idUUID PK
user_idTEXT
push_tokenTEXT
platformTEXT (ios/android)
created_atTIMESTAMPTZ
user_notification_preferences
user_idTEXT PK
enabledBOOLEAN
quiet_hours_startINTEGER
quiet_hours_endINTEGER
streak_nudgesBOOLEAN
comeback_nudgesBOOLEAN
weather_nudgesBOOLEAN
event_nudgesBOOLEAN
quest_nudgesBOOLEAN
updated_atTIMESTAMPTZ
notification_log
idUUID PK
user_idTEXT
notification_typeTEXT
titleTEXT
bodyTEXT
sent_atTIMESTAMPTZ
opened_atTIMESTAMPTZ
user_activity_log
user_idTEXT (PK)
active_dateDATE (PK)
opened_atTIMESTAMPTZ