Supabaze is the open-source Firebase alternative. A dedicated Postgres database, authentication, instant APIs, edge functions, realtime, storage, and embeddings — all behind one client SDK.
Trusted by ambitious teams worldwide
A complete backend in a weekend. Dedicated Postgres database, instant REST and GraphQL APIs, authentication, edge functions, realtime subscriptions, file storage, and vector embeddings.
A dedicated Postgres database per project. Every project is a full Postgres database — no proprietary query language, no surprise lock-in.
Learn moreEmail, magic link, OAuth, SSO. Row-level security policies live in the database, so the backend can never disagree with the rules.
Learn moreTypeScript on Deno, deployed to 35+ regions. Cold starts under 50ms. Logs and traces native to the platform.
Learn moreSubscribe to Postgres changes over WebSockets. Build presence, broadcast, and multiplayer features without a separate pub-sub layer.
Learn moreS3-compatible object storage with image transformations on the edge. Signed URLs, RLS-aware buckets, and one-line client uploads.
Learn morepgvector built in. Store embeddings next to your data, query them with SQL, and skip the second-database problem entirely.
Learn moreREST and GraphQL APIs auto-generated from your schema. Add a column, ship a new endpoint — no codegen step.
Learn morePreview branches per Git PR. Each branch is a real Postgres database with seed data — review schema changes before they hit prod.
Learn moreNo ORM. No abstraction layer. No vendor query language to learn. The same SQL you'd write against any Postgres database — and the editor knows your schema.
The visual editor and SQL editor are two views of the same canvas. Auto-completion knows your column types, your enums, your row-level security policies — and warns you before a policy blocks the read.
-- Find power users with sub-100ms p50 latency select u.email, count(s.id) as sessions, percentile_cont(0.5) within group ( order by s.latency_ms ) as p50 from auth.users u join public.sessions s on s.user_id = u.id where s.created_at > now() - interval '7 days' group by u.email having count(s.id) > 10 order by p50 asc limit 25;
Row-level security is not an afterthought — it's the only way Supabaze authorizes data access. The same policy that gates a SELECT also gates the auto-generated API. The backend can never disagree with itself.
// One client, every backend feature import { createClient } from "@supabaze/supabaze-js"; const sb = createClient(url, anonKey); // Sign in with GitHub await sb.auth.signInWithOAuth({ provider: "github", options: { redirectTo: "/dashboard" } }); // Query is RLS-aware automatically const { data: posts } = await sb .from("posts") .select("id, title, author:auth.users(email)") .eq("published", true) .order("created_at", { ascending: false }) .limit(10);
Bring your own ORM, your own CI, your own AI provider. Supabaze is a Postgres database, so anything that speaks Postgres works on day one.
Start free. Pay for what you use. No seat minimums, no procurement gates until you genuinely need them.
$0
For hobby projects and weekend experiments.
$25/project · mo
For production apps with real traffic.
$599/org · mo
For companies running on Postgres.
Custom
For the largest workloads and procurement reviews.
Source: DESIGN.md. White canvas commitment. Single emerald primary. Circular-style display at weight 500 with negative tracking. 6px square-ish button radii.
Brand — single chromatic event
Ink ladder — weight, not hue, carries hierarchy
Hairlines — the brand's chrome
Accents — reserved for chart points and integration logos only
Circular is the proprietary humanist sans. Inter at weight 500 is the open-source substitute used here. System mono for every code block — Menlo / Monaco / Consolas. Body never exceeds weight 500; the engineered mid-weight is the brand.
Buttons live at r-sm (6px) — square-ish, never pill. Cards live at r-lg (12px). Pills (r-full) are reserved for tags and avatars.
Buttons on white canvas
Buttons on canvas-night — code-block CTAs
Inputs — focus is a 2px emerald ring
Cards & containers
White canvas + 1px hairline. 12px radius. The default container — flat, calm, never shadowed at rest.
Inverted dark fill for the featured pricing tier. Green is reserved for buttons, not the surface.
Tags & pills