Short, practical how-tos with real commands
Each guide is a task you can finish in a sitting — the exact CLI, SQL, and client code, with nothing invented. Start a free project and follow along.
Connect your existing client to Scribase
Point an existing app at Scribase by changing two environment variables: the client, environment config, and verifying the connection.
Write your first row-level security policies
A hands-on guide to Postgres row-level security on Scribase: enable RLS, write a per-user policy, add tenant isolation, keep policies fast.
Give every pull request a preview database
A guide to preview environments per pull request: create a TTL-bound preview with the CLI, link it to the PR, apply migrations, let the TTL sweep it.
Guide: import an existing project step by step
Move an existing hosted Postgres project into Scribase with scribase import: dry run first, then schema, data, auth users, storage and policies.
Deploy an edge function on Scribase
A guide to shipping server-side logic on the /functions/v1 path: write a function, deploy it through the control API or the scribase SDK, and smoke-test it.
Hit a Supabase error instead?
Row-level security policy examples for the cases that are not "owns the row"
Row-level security patterns beyond a single owner check: multi-tenant access by organization, security-definer helpers, and the index that keeps policies fast.
Read the fixSupabase says the auth rate limit was exceeded. Here is why.
The default rate limits on Supabase Auth email, OTP, token refresh and sign-in, why the email one (2/hour) is hit almost immediately in dev, and the fix.
Read the fix"Database error saving new user": find and fix the broken trigger
Why signup fails with "Database error saving new user", how a broken handle_new_user trigger blocks every signup, where to find the real error, and the fix.
Read the fixSupabase Auth API error codes, explained
The Supabase Auth error code reference: weak_password, email_exists and more — what each means, and why error.code is the field to check, not the message.
Read the fix