Supabase explained: how a Postgres-centered backend platform fits together
A technical account of Postgres, PostgREST, GoTrue, Realtime, Storage, Kong, local development, managed service, self-hosting, licensing, and operating responsibility.
Position and current signal
Supabase describes itself as a Postgres development platform, not a one-for-one Firebase copy. The repository showed about 106,724 stars during collection, gained 59 stars between the two production snapshots, and published a July developer update. Its significance comes from putting a database, auth, generated APIs, realtime subscriptions, object storage, and functions behind one developer workflow while leaving SQL directly accessible.
Primary use cases and capabilities
Suitable projects include SaaS backends, mobile login and synchronization, internal tools, file-backed content products, and prototypes that need database capabilities in a frontend quickly. The platform offers hosted Postgres, REST, GraphQL, Realtime, authentication, Storage, database functions, and Edge Functions. Client libraries cover JavaScript, Flutter, Swift, Python, and other environments, although feature timing can differ across SDKs.
Architecture and execution model
PostgreSQL is the data and authorization center. PostgREST derives a REST API from the database schema, GoTrue handles JWT-based identity, Realtime reads replication changes and broadcasts them over WebSockets, Storage keeps objects outside the database while enforcing permissions through Postgres, and Kong provides the gateway. This ties SQL, row-level security, and clients together, but troubleshooting can span several services.
Technology stack and system boundaries
The main repository is a TypeScript and pnpm workspace containing the website, Dashboard, examples, Docker configuration, and tooling. Runtime deployments also combine Elixir, Go, PostgreSQL extensions, an object store, and other services. Supabase operates the managed product; self-hosting usually uses Docker Compose. Database functions and Edge Functions run in different places, so connection pooling, transactions, latency, and permissions need explicit design.