scribase
Centralize

One account instead of four vendors: database, auth, email, storage

A small app often ends up with a database on one host, sign-in on a second service, transactional email on a third and file uploads on a fourth, then a push provider and a purchases service once it ships to the stores: six dashboards, six invoices, six sets of keys in .env. Scribase ships the database, auth, storage, realtime, edge functions, queues, scheduled jobs, push and store purchases as one project behind one URL and one anon key, with a Resend-compatible email API from the same vendor. This page lists what that replaces today, honestly, including what is still a separate key.

Last checked November 12, 2026.

What one Scribase project replaces

Everything in the middle column is live on scribase.com today and reachable from one project URL with one anon key, through the unchanged supabase-js client. The right column is the honest part: what still needs its own key or is not there yet.

Checked 2026-11-12 against each vendor's own pricing or docs page
You run todayIn one Scribase projectStill separate, or not yet
Managed Postgres (Neon, Supabase, Render, RDS)Postgres 17 per project with copy-on-write branches, backups with restore evidence, export bundles, pg_cron, queues and the usual extensionsOne region today
Auth service (Clerk, Auth0, Firebase Auth)Built-in auth: email/password, magic link, OAuth providers, SAML and phone OTP; a signed JWT whose auth.uid() drives row level securityNo prebuilt sign-in UI components; you render the form and call the client
Transactional email API (Resend, Postmark, SendGrid)Mail Studio: a Resend-compatible API at mail-api.scribase.com, so the resend SDK works with a baseUrl change; signed webhooks, inbound mail, templates and broadcastsIts own API key and plan today (Free 3,000 emails a month, Pro $20); no automations or inboxes yet
File storage (S3 bucket, Cloudinary, Firebase Storage)Storage buckets with bucket policies and row level security on objectsNone
Realtime (Pusher, Ably, a websocket server)Realtime over Postgres change data capture, broadcast and presenceNone
Serverless functions (Vercel functions, Lambda)Edge functions on the /functions/v1 path, deployed from the CLINot a general compute host; long-running workers stay where they are
Cron and job queues (a cron box, SQS, Inngest)pg_cron schedules and durable message queues inside the projectQueue consumers are your code
Push notifications (OneSignal, Firebase Cloud Messaging)Push to your app's users on iOS and Android through the Expo push service, with dead devices removed for you; tokens stored under row level securityExpo push service underneath
In-app purchases and subscriptions (RevenueCat, a store-receipt server)App Store, Google Play and web purchases checked on the server, entitlements, remote paywalls with experiments, revenue analyticsWeb purchases run through the same billing provider as Scribase itself

Sources: Scribase docs: Auth, Scribase docs: Mail

How many keys you end up with

A Scribase project has one URL, one anon key for the client and one service key for the server, the same shape supabase-js already expects. Auth, Storage, Realtime, REST and Functions all sit behind that URL, so the app has one .env entry pair instead of one per vendor.

Email is the exception today: Mail Studio is a separate product with its own API key, the same way a Resend key is separate from a database password. It is the same vendor, one support address and one console, but it is a second key in .env. We say so here rather than on an invoice.

  • Database, auth, storage, realtime, functions, queues, cron: one project URL, one anon key, one service key.
  • Email: a second key (SCRIBASE_MAIL_KEY), same vendor.
  • Control plane (creating projects, branches, backups from a CLI or an agent): a personal access token or a scoped agent token, never pasted into the app.

What the four-vendor stack costs next to one project

Entry prices from each vendor's own pricing page. The point is not that Scribase is always cheaper; it is that a small app on four free tiers is usually one tier away from four separate bills, and that bill adds up before the app has revenue. On Scribase, 1 project free with no time limit (0.5 GB database, 1 GB files, no card); a further project is $5 a month on Hobby or $25 on Pro, and new accounts start with 14 days of Hobby.

Each vendor's published entry price, read 2026-11-12
Free tierFirst paid step
Supabase (database, auth, storage)2 active projects, paused after 1 week of inactivityPro $25 a month plus $10 a month compute credits
Neon (database only)Compute scales to zero after 5 minutes idleLaunch: pay as you go, $0.106 per CU-hour plus $0.35 per GB-month
Clerk (auth only)Up to 50,000 monthly retained usersPro $25 a month ($20 billed annually), then $0.02 per user per month
Resend (email only)3,000 emails a month, 100 a day, 3 domainsPro $20 a month for 50,000 emails
Scribase (database, auth, storage, realtime, functions, queues)1 project free with no time limit (0.5 GB database, 1 GB files, no card); 14 days of Hobby to start; temporary projects for agents with no accountHobby $5 a project a month; Pro $25; Studio $199 a month flat up to 25 projects
Scribase Mail Studio (email)3,000 emails a month, 100 a day, 1 domainPro $20 a month for 50,000 emails

Sources: Supabase: Pricing, Neon: Pricing, Clerk: Pricing, Resend: Pricing, Scribase: Pricing

Setting it up from one command

In an existing Expo, Next.js, SvelteKit, Nuxt, Astro, Remix, Express or Flutter project, one command creates the backend and writes the URL and anon key into the right .env file. A coding agent can run the same command with no account and claim the project later.

A real backend in the current folder; add --temp --yes --json for an agent with no accountsh
npx scribase init
The client code does not change; only the URL and key dots
import { createClient } from '@supabase/supabase-js';

export const db = createClient(process.env.NEXT_PUBLIC_SCRIBASE_URL!, process.env.NEXT_PUBLIC_SCRIBASE_ANON_KEY!);

// Sign in, upload a file, subscribe to changes: same calls as before.
await db.auth.signInWithOtp({ email });
await db.storage.from('avatars').upload(path, file);
db.channel('orders').on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'orders' }, handle).subscribe();
Email through the same vendor, with the resend SDK unchangedts
import { Resend } from 'resend';

const mail = new Resend(process.env.SCRIBASE_MAIL_KEY, { baseUrl: 'https://mail-api.scribase.com' });
await mail.emails.send({ from: 'Acme <hello@acme.com>', to: [email], subject: 'Welcome', html: '<p>Hi.</p>' });

Two defaults the four-vendor stack does not give you

  • It does not pause. An idle Scribase project scales its compute to zero and wakes on the next request; there is no inactivity pause on any tier and no cap on the number of projects.
  • It refuses an unpoliced public table. A migration that would leave a table in the public schema without row level security is rejected by the migration runner with a 409 before it runs, and the free migration-lint tool shows the same finding in the browser before you deploy anywhere.
FAQ

Questions people ask

Can one backend replace Supabase, Clerk and Resend for a small app?

For the database, auth, storage, realtime, functions, queues and cron: yes, one Scribase project behind one URL and one anon key, using the supabase-js client unchanged. For email, Scribase Mail Studio is a Resend-compatible API from the same vendor but with its own API key and plan today. Clerk-style prebuilt sign-in components are not included; Scribase Auth gives you the API (email/password, magic link, OAuth, SAML, phone OTP) and you render the form.

Is this really one API key?

One project URL, one anon key and one service key cover the database, auth, storage, realtime, REST and functions. Email is a second key (the Mail Studio key). Creating projects or branches from a CLI or an agent uses a separate scoped token that never ships in the app.

What does Scribase not replace?

A general compute host for long-running workers, and prebuilt auth UI components. Mail Studio does not yet have automations, agent inboxes or OAuth apps. Scribase runs in one region today.

What does it cost compared with four separate services?

Scribase keeps 1 project free with no time limit (0.5 GB database, 1 GB files, no card); further projects are from $5 a month (Hobby) or $25 (Pro), and new accounts start with 14 days of Hobby. Mail Studio has a free plan of 3,000 emails a month and a $20 Pro plan for 50,000. By comparison, as of 2026-11-12, Supabase Pro is $25 a month plus $10 compute credits, Clerk Pro is $25 a month, Resend Pro is $20 a month, and Neon's Launch plan is metered per CU-hour.

Does my existing supabase-js or resend code need to change?

No. supabase-js works against a Scribase project with the URL and anon key swapped. The resend SDK works against Mail Studio with a baseUrl option or the RESEND_BASE_URL variable. Webhooks are signed in the same Svix format Resend uses.

Can a coding agent set all of this up?

Yes. npx scribase init --temp --yes --json creates a temporary backend with no account and prints the URL and keys as JSON; the hosted MCP server exposes the same project, branch, migration and backup operations to Claude Code, Cursor, Codex and Windsurf. The project can be claimed into an account later.