Estudo de caso · Stack

Como o Supabase montou um back-end com ferramentas open source

O Supabase entrega ao desenvolvedor um banco Postgres com login, APIs, arquivos, tempo real e funções na borda ao redor. Em vez de escrever tudo do zero, ele junta ferramentas open source que já existem, em várias linguagens, e só constrói o que falta, tudo hospedado na AWS.
Copiar stacksupabase.com Plataforma de desenvolvimento com Postgres · Estados Unidos · fundada em 2020

A stack da Supabase

Abrir no montador

Linguagem

  • TypeScriptsupabase.com

    Linguagem do Studio, do Storage, do postgres-meta e das bibliotecas cliente.

Framework full-stack

Hospedagem

  • Envoysupabase.com

    Gateway de API e proxy na frente de todos os serviços.

  • AWSsupabase.com

    Nuvem onde os projetos ficam, na região da AWS que o usuário escolhe.

Banco de dados

  • PostgreSQLsupabase.com

    O núcleo de cada projeto, com acesso total do usuário.

    Por quê: O Supabase escolheu de propósito um banco relacional e monta cada recurso em volta dele.

Login

  • Supabase Auth (GoTrue)supabase.com

    Serviço em Go que gerencia usuários e emite tokens JWT.

Estilo e kit de interface

  • Tailwind CSSgithub.com

    Estiliza o Studio e os pacotes de interface.

Build e runtime

  • Turborepogithub.com

    Roda builds e testes no monorepo com o Studio, a documentação e o site.

Busca de dados

  • pg_graphqlgithub.com

    Extensão do Postgres que oferece uma API GraphQL.

  • Supabase Realtimesupabase.com

    Motor de WebSocket em Elixir para presença, mensagens e mudanças do banco em tempo real.

  • Supavisorsupabase.com

    Gerenciador de conexões do Postgres para vários clientes, escrito em Elixir.

    Por quê: O PgBouncer roda em uma thread só e escala mal, então fizeram um pensado para vários clientes.

Framework de servidor

  • PostgRESTsupabase.com

    Servidor em Haskell que transforma o banco em uma API REST.

    Por quê: Já existia como open source, seguindo a regra de apoiar o que já existe.

  • Denosupabase.com

    Runtime das Edge Functions, para JavaScript e TypeScript.

Arquivos

  • Supabase Storagesupabase.com

    Armazenamento de arquivos compatível com S3, em TypeScript, com dados e permissões no Postgres.

Modelo de IA

  • Vercel AI SDKgithub.com

    Move o assistente de IA do Studio, com modelos da OpenAI.

Erros

Como montaram

Usar o que existe, construir o que falta

A regra do Supabase é simples: se uma ferramenta e sua comunidade já existem com licença MIT, Apache 2 ou parecida, eles usam e apoiam; se não existe, eles constroem e abrem o código.

Por isso a stack mistura linguagens: o PostgREST é em Haskell, o Auth (GoTrue) em Go, o Realtime e o Supavisor em Elixir, e o Storage e o postgres-meta em TypeScript.

Fontes:github.com supabase.com

Postgres no centro de tudo

O Postgres é o núcleo de cada projeto e nunca fica escondido, então o usuário tem acesso total. Cada peça deve funcionar sozinha só com um banco Postgres, e o Supabase prefere levar melhorias para o próprio Postgres a manter uma versão modificada.

A ideia é não prender ninguém: ferramentas padrão como o pg_dump deixam o usuário livre para sair, e a nuvem continua compatível com a versão que roda no seu servidor.

Fontes:supabase.com

Trocando o PgBouncer pelo Supavisor

O Supabase oferecia o PgBouncer para gerenciar conexões, mas ele roda em uma só thread e é difícil de escalar. Em 2023 o time criou o Supavisor em Elixir, pensado para atender vários clientes num mesmo cluster, e testou com um milhão de conexões.

Depois disso, o PgBouncer foi descontinuado e os projetos passaram para o Supavisor.

Fontes:supabase.com supabase.com

Sai o Kong, entra o Envoy no self-hosting

A arquitetura agora coloca o Envoy na frente dos serviços como gateway de API. Em agosto de 2026, o Supabase para rodar no próprio servidor trocou o gateway padrão de Kong para Envoy, deixando o Kong como opção; os projetos na nuvem não mudaram.

Fontes:supabase.com supabase.com

Também detectado no site

Achado na página inicial com as regras abertas do Wappalyzer (HTML, scripts e cabeçalhos). Mostra o que roda no navegador, não o backend inteiro.

  • HSTS
  • React
  • Vercel