Capítulo 02 / Do clone ao login
Começando
Tudo o que separa você de uma home do SIMPE-MS rodando localmente, com dados sintéticos e cinco usuários de teste. Tempo total: 5 a 10 minutos (a primeira vez baixa ~1 GB de imagens Docker e demora um pouco mais).
-
Clonar o repositório
git clone <url-do-repo> cd simpe-ms -
Instalar as dependências
npm installIsso instala tudo, incluindo a CLI do Supabase como dev dependency — então não precisa instalar a CLI globalmente, embora o capítulo anterior recomende.
-
Subir o stack do Supabase
supabase startNa primeira vez, baixa as imagens Docker. Pode demorar uns 5 minutos. Quando terminar, a CLI imprime um quadro com URLs e chaves do seu ambiente local — guarde, vamos usar agora.
O que essa pousada de containers fazsupabase startsobe Postgres, GoTrue (auth), PostgREST, Storage, Realtime, Edge Runtime, Studio (DB browser) e Mailpit (email capture) — tudo via Docker Compose. Migrations da pastasupabase/migrations/são aplicadas automaticamente na primeira vez. -
Configurar o
.envCopie do exemplo e edite para usar o bloco Opção B (Supabase local). As chaves vêm do que
supabase startimprimiu (ou rodesupabase statusa qualquer momento para vê-las de novo):cp .env.example .env supabase status # mostra Publishable e Secret keysO
.envdeve ficar assim:NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_xxx... SUPABASE_SERVICE_ROLE_KEY=sb_secret_xxx... NEXT_PUBLIC_AMBIENTE_DE_TESTE=trueSobre as chaves locaisEm versões antigas do CLI, as chaves eram fixas (JWTs compartilhados entre máquinas). Nas versões recentes (2.90+), elas são randomizadas por instância —
sb_publishable_*esb_secret_*. Por isso copiamos manualmente em vez de embedar no.env.example. -
Aplicar o seed
npm run db:resetEsse comando dropa o schema, reaplica todas as migrations (são mais de 100) e roda
supabase/seed.sql. O seed cria 1 plano, 3 objetivos com hierarquia completa, ~30 entregas, 5 usuários, distribuição de semáforos, métricas e compromissos. Tudo sintético. -
Subir o app
npm run devAcesse
http://localhost:3000. Login com qualquer um destes usuários — senhasenha123para todos:Email Role Para o quê viz@local.test Visualização Testar o que um usuário read-only enxerga edicao@local.test Edição Permissões intermediárias de edição gestar@local.test Gestar Gestor com permissões amplas de planejamento admin@local.test Admin Permissões totais — o role usado pela SES (cliente) super@local.test SuperAdmin Mesmas permissões do Admin; existe só para distinguir staff Pacto da SES
Comando único (opcional)
Se preferir subir tudo — Supabase, Next e functions serve — com
um comando só:
npm run dev:local
O dev:local roda supabase start (idempotente, então não
repete trabalho), depois next dev e supabase functions serve
em paralelo com prefixos coloridos. Quando vale: você está editando
uma edge function e quer hot reload. Quando não vale: o
supabase start sozinho já serve as edge functions a partir de
supabase/functions/ sem hot reload — suficiente para uso normal.
URLs locais úteis
| Serviço | URL | Para o quê |
|---|---|---|
| App (Next) | http://localhost:3000 | O sistema rodando |
| API REST | http://127.0.0.1:54321 | Endpoint do Supabase |
| Studio | http://127.0.0.1:54323 | Browser do DB — tabelas, queries, auth users |
| Mailpit | http://127.0.0.1:54324 | Captura todos os emails (signup, reset, confirm) |
| MCP local | http://127.0.0.1:54321/mcp | Servidor MCP do Postgres — ver capítulo 04 |
| Postgres direto | postgres://postgres:postgres@127.0.0.1:54322/postgres | Quando quiser conectar com psql / DBeaver / etc. |
Comandos do dia a dia
| Comando | O que faz |
|---|---|
npm run dev | Sobe só o Next (Supabase precisa estar rodando) |
npm run dev:local | supabase start + Next + functions serve |
npm run db:reset | Zera o DB local, reaplica migrations e roda seed |
npm run db:status | Mostra URLs e chaves do local |
npm run local:stop | Derruba os containers (mantém os dados) |
npm run functions:serve | Edge functions com hot reload |