Módulo 2 — Base de dados e backend 🟢
Objectivo: dar dados, contas e ficheiros a uma aplicação — com Supabase. O momento aha: em minutos tens uma base de dados Postgres + autenticação a correr na tua máquina. Resultado: base local a correr e uma tabela com dados reais.
1. O que é o Supabase
Uma plataforma que junta numa só:
- Postgres — a base de dados (tabelas, relações).
- Auth — registo e login de utilizadores.
- Storage — guardar ficheiros (imagens, PDFs).
- API automática — cada tabela ganha logo uma API REST.
2. Local primeiro (CLI)
npx supabase init # cria a pasta supabase/ no projecto
npx supabase start # levanta a base de dados local (Docker)
npx supabase status # mostra os URLs e chaves locais
Trabalhar local é grátis, rápido e seguro — só mexes na nuvem quando estiver pronto.
3. Migrações — alterações versionadas à BD
Uma migração é um ficheiro SQL com uma mudança de estrutura:
-- supabase/migrations/0001_clientes.sql
create table clientes (
id uuid primary key default gen_random_uuid(),
nome text not null,
nif text not null,
criado_em timestamptz default now()
);
npx supabase db push # aplica as migrações
4. Chaves: o que é seguro
- anon key — pública, usada no frontend (só faz o que as regras permitem).
- service_role — secreta, só no servidor. Nunca no navegador.
🔴 Fora do VSCode
O Studio (visual) serve para ver/editar dados à mão e certas configurações do projecto na nuvem.
✅ Exercícios
- Arranca —
npx supabase init+startnum projecto e abre o Studio local. - Tabela — escreve uma migração que cria a tabela
clientes(nome + NIF) e aplica-a. - Dados — insere 2 clientes e lista-os (pela API REST ou pelo Studio).
Resultado esperado:
supabase statusmostra os serviços a correr e a tabelaclientestem dados.
⚠️ Erros comuns
- Expor a
service_roleno frontend — nunca. Só aanon keyvai para o navegador. - Mudar tabelas à mão no Studio sem migração — perde-se o histórico. Usa migrações.
- Esquecer as regras de acesso (RLS) — sem elas, ou está tudo aberto ou tudo fechado.
- Trabalhar direto na nuvem — desenvolve local primeiro (
npx supabase start).
📋 Checklist do módulo
- Supabase local a correr (
supabase status) - Tabela
clientescriada por migração - 2 registos inseridos e listados
-
service_rolesó no servidor