VendeeDocs
Backend

Supabase

Client, env vars e pacote compartilhado

O Vendee usa Supabase como backend completo: autenticação, PostgreSQL, Row Level Security, funções RPC e edge functions.

Ambientes

AmbienteProject refUso
Desenvolvimentonwcdzokqsnojkapkdbqe (vendee-db0)Todo desenvolvimento local e preview
Produçãoseparado, não documentado aquiApenas deploy oficial

Nunca usar o projeto de produção para desenvolvimento local. Todo trabalho local, testes e migrations vão para vendee-db0.

Client

O client Supabase é exportado pelo pacote @repo/supabase:

import { supabase } from "@repo/supabase/client";

No apps/app, um re-export local facilita o uso:

// src/lib/supabase.ts
export { supabase } from "@repo/supabase/client";

Nunca instancie um novo client com createClient(). Use sempre o singleton exportado do pacote — ele já está configurado com auth persistente e listeners de sessão.

Variáveis de ambiente

O client detecta automaticamente o ambiente:

VariávelAmbiente
VITE_SUPABASE_URLVite (apps/app)
VITE_SUPABASE_PUBLISHABLE_KEYVite (apps/app); legado VITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY
NEXT_PUBLIC_SUPABASE_URLNext.js (docs)
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYNext.js (docs); legado NEXT_PUBLIC_SUPABASE_ANON_KEY

Tipos

Os tipos são gerados a partir do schema do banco e exportados por @repo/supabase/types:

import type { Database } from "@repo/supabase/types";

type Deal = Database["public"]["Tables"]["deals"]["Row"];
type DealInsert = Database["public"]["Tables"]["deals"]["Insert"];
type DealUpdate = Database["public"]["Tables"]["deals"]["Update"];

Regenerar tipos

bunx supabase gen types typescript --project-id <project-id> > packages/supabase/src/types.ts

Autenticação

O Supabase Auth gerencia:

  • Login com email/senha
  • Magic links (convites e login sem senha)
  • Reset de senha
  • Callback de autenticação (/auth/callback)

Edge Functions

Edge functions são usadas para lógica server-side que precisa rodar com service_role (bypassando RLS) ou que envolve APIs externas. Exemplos no projeto:

  • admin-create-workspace — cria workspace + membro gestor + seed inicial
  • Funções de geração de PDF de propostas

Chamada via client:

const { data, error } = await supabase.functions.invoke("admin-create-workspace", {
  body: { name: "Cliente novo", admin_email: "[email protected]" },
});

Edge functions devem ser mantidas finas — só lógica que precisa rodar no servidor. Lógica de UI e validação de formulário ficam no client.

On this page