Skip to content
Ramble

Supabase sync setup.

Sync is optional. Without it, Ramble never sends your memos anywhere. With it, memos and audio live in your own Supabase project, and only your user can read them.

You need

  • A Supabase project (the free tier is enough).
  • The repository, if you host Ramble yourself. The public site is not configured for sync, so this is a self-host step.

Steps

  1. Create a project at supabase.com.
  2. Apply supabase/migrations/20261007000000_init.sql from the SQL editor, or run supabase db push. It creates the tables, the search function, a private audio bucket and the row-level security policies.
  3. Also apply supabase/migrations/20261008000000_limits.sql, which adds length limits that match the app.
  4. Copy .env.example to .env.local and set NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY.
  5. In Supabase, add your site URL and <site>/auth/callback to the Auth redirect URLs.
  6. Restart the dev server. A sign-in option appears. Sign in with a magic link or a password.

Ramble counts Supabase as configured only when both variables are set.

What changes

When you are signed in, the same screens read and write Supabase. Settings shows a "Move local memos to account" action. Memos whose audio cannot be copied are never deleted locally.

What protects your data

Every table row carries your user id, and row-level security allows only that user to select, insert, update or delete it. The anon role has no table privileges. Audio is in a private bucket under a folder named for your user id and is read through short-lived signed URLs.

Read the full details in docs/ARCHITECTURE.md in the repository.