Supabase é Firebase com PostgreSQL. Managed Postgres, auto-generated APIs, real-time subscriptions, auth integrado. Open-source.
Conceitos Principais
Managed Postgres
Postgres 15 gerenciado. Backups, replication, scaling. Acesso via SQL editor ou API.
Auto APIs
REST e GraphQL gerados automaticamente. CRUD sem backend. PostgREST under hood.
Real-time
WebSocket subscriptions. Mudanças de DB → client. supabase.from("posts").on("INSERT", callback).
Row Level Security
RLS policies. Users veem apenas own data. Policy SQL: auth.uid() = user_id.
Passo a Passo
- Create Project: supabase.com → New Project. Provisiona Postgres. Connection string e API keys gerados.
- Create Table: SQL Editor: CREATE TABLE posts (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), title TEXT, user_id UUID REFERENCES auth.users). Enable RLS.
- Setup Client: npm install @supabase/supabase-js. import { createClient } from "@supabase/supabase-js"; const supabase = createClient(url, key);
- CRUD via API: const { data } = await supabase.from("posts").select("*"); await supabase.from("posts").insert({ title: "..." }). Type-safe com codegen.
- Real-time Sub: supabase.from("posts").on("INSERT", (payload) => { console.log(payload.new); }).subscribe(). Real-time updates.
Boas Praticas
Recomendacoes
• Enable RLS em todas tables
• Use UUID para PKs
• Type generation (supabase gen types)
• Edge Functions para backend logic
• Connection pooling (PgBouncer built-in)
• Monitor usage dashboard
Erros Comuns
Evite estes erros
• RLS não habilitado (security risk)
• Expor service_role key no client
• Não usar types gerados
• Complex logic no client (use Edge Functions)
• Não limitar subscriptions
Checklist
- Project criado
- Tables com RLS
- Client configurado
- CRUD funcionando
- Real-time subscriptions testadas
- Types gerados