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
- Create a project at supabase.com.
- Apply
supabase/migrations/20261007000000_init.sqlfrom the SQL editor, or runsupabase db push. It creates the tables, the search function, a privateaudiobucket and the row-level security policies. - Also apply
supabase/migrations/20261008000000_limits.sql, which adds length limits that match the app. - Copy
.env.exampleto.env.localand setNEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_ANON_KEY. - In Supabase, add your site URL and
<site>/auth/callbackto the Auth redirect URLs. - 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.