Docs
Database and Storage

Database and Storage

Supabase holds the Postgres database, the private file buckets, and the one job that runs every five minutes.

What Supabase Does

  • Postgres. Every record: members, profiles, applications, businesses, organizations, matches, sessions, events, email log, settings, templates and forms.
  • Storage. Private buckets for avatars, cover images, organization logos and resource files. Files are served only through the app's own routes, which check sign-in first.
  • pg_cron. The scheduled job that runs every five minutes to send event and session reminders, chase RSVPs and volunteers, close out sessions and sync attendance. Vercel's cron is daily only.
  • Backups. Taken by Supabase according to the project's plan. Restoring replaces the whole database, so take a fresh backup first.

How the App Reaches It

The server uses the service key (SUPABASE_SECRET_KEY) for every read and write. There is no client-side database access, and the Supabase URL and key never reach a browser.

Row-level security is enabled on every table with no policies, on purpose: Clerk handles sign-in, so the database never knows who the user is, and every access goes through server code that checks the role first. Do not add a policy expecting it to protect something; the code is where access is decided.

Migrations

The database's own migration history (Supabase, Database, Migrations) is the record of truth. The repository folder supabase/migrations/ holds the files from 18 Aug 2026 onward, each with a header saying when it was applied. Earlier tables were created before the folder existed. See Database and Migrations for how to add one.

Tables an Admin May Look At

TableWhat is in it
usersOne row per account, mirrored from Clerk
profilesThe member's directory profile and completeness score
applicationsEvery intake submission with its answers, state and decision
businesses, business_membersA founder's company and its team
organizations, organization_membershipsPartner organizations and who represents them
matchesEvery proposed match and its gate state
office_hours_sessionsBooked sessions
events, event_invitations, event_volunteersEvents, invitees, volunteers
email_logEvery email attempt with its status
webhook_eventsEvery Clerk webhook received
app_settingsOne row of platform settings
email_templates, email_template_versionsEdited email wording and history
content_definitions, content_versionsThe intake and assessment forms
tag_options, field_definitionsPick lists and field labels

Where to Look in the Dashboard

  • Table Editor to read a row.
  • SQL Editor to run a query or apply a migration.
  • Database, Backups for restore.
  • Logs for slow queries and errors.
  • Database, Extensions confirms pg_cron and pg_net are on, which the five-minute job needs.