Case study · Stack

How Supabase assembled a backend from open-source tools

Supabase gives developers a Postgres database with auth, APIs, file storage, realtime and edge functions around it. Rather than writing everything from scratch, it combines existing open-source tools in several languages and builds only what is missing, all hosted on AWS.
Copy this stacksupabase.com Postgres development platform · United States · founded 2020

Language

  • TypeScriptsupabase.com

    Language of Studio, Storage, postgres-meta and the client libraries.

Full-stack framework

Hosting

  • Envoysupabase.com

    API gateway and proxy in front of all services.

  • AWSsupabase.com

    Cloud where projects are deployed, in the AWS region the user picks.

Database

  • PostgreSQLsupabase.com

    The core of every project, exposed with full privileges.

    Why: Supabase chose a relational database on purpose and builds every feature around it.

Login

  • Supabase Auth (GoTrue)supabase.com

    Go service that manages users and issues JWT access tokens.

Styling and UI kit

  • Tailwind CSSgithub.com

    Styles Studio and the shared UI packages.

Build and runtime

  • Turborepogithub.com

    Runs builds and tests across the monorepo with Studio, docs and the website.

Data fetching

  • pg_graphqlgithub.com

    Postgres extension that exposes a GraphQL API.

  • Supabase Realtimesupabase.com

    Elixir WebSocket engine for presence, broadcast and streaming database changes.

  • Supavisorsupabase.com

    Multi-tenant Postgres connection pooler written in Elixir.

    Why: PgBouncer is single-threaded and hard to scale, so they built a pooler for multi-tenancy.

Backend framework

  • PostgRESTsupabase.com

    Haskell server that turns the database into a REST API.

    Why: An existing open-source tool, in line with their rule of supporting what already exists.

  • Denosupabase.com

    Runtime behind Edge Functions, for JavaScript and TypeScript.

File storage

  • Supabase Storagesupabase.com

    S3-compatible file storage in TypeScript, with metadata and permissions in Postgres.

AI model

  • Vercel AI SDKgithub.com

    Powers the AI assistant in Studio, with OpenAI models.

Error monitoring

How they built it

Use what exists, build what doesn't

Supabase's rule is simple: if a tool and its community already exist under an MIT, Apache 2 or similar license, they use and support it; if not, they build it and open-source it.

That is why the stack is polyglot: PostgREST is written in Haskell, Auth (GoTrue) in Go, Realtime and Supavisor in Elixir, and Storage and postgres-meta in TypeScript.

Sources:github.com supabase.com

Postgres at the center

Postgres is the core of every project and is never abstracted away, so users get full access. Each piece is meant to work on its own with nothing but a Postgres database, and Supabase prefers upstreaming features to Postgres over running a custom fork.

The goal is portability: standard tools like pg_dump keep users free to leave, and the cloud product stays compatible with self-hosting.

Sources:supabase.com

Replacing PgBouncer with Supavisor

Supabase used to offer PgBouncer for connection pooling, but it is single-threaded and hard to scale. In 2023 the team built Supavisor in Elixir, designed for multi-tenancy so one shared cluster serves many projects, and tested it with a million connections.

Supabase then deprecated PgBouncer and moved projects to Supavisor.

Sources:supabase.com supabase.com

Kong out, Envoy in for self-hosting

The architecture now puts Envoy in front of the services as the API gateway. In August 2026 self-hosted Supabase switched its default gateway from Kong to Envoy, keeping Kong as an opt-in path; hosted projects were not affected.

Sources:supabase.com supabase.com

Also detected on their website

Found on the homepage with the open Wappalyzer rules (HTML, scripts and headers). It shows what runs in the browser, not the whole backend.

  • HSTS
  • React
  • Vercel