๐ฏ Briefing: app de gestao com times
App: signup, dashboard, criar projeto, lista de tasks por projeto, convidar membros. RLS por team_id. Caso "produto SaaS classico".
- โข Telas: /signup, /login, /dashboard, /projects/[id], /team/invite
- โข Auth: magic link via Supabase Auth
- โข Multi-tenant: tudo escopado por team_id
- โข RLS: usuario so ve dados do proprio team
- โข Stack: Next.js 15 + Supabase + Tailwind + shadcn
๐๏ธ Plano em 4 documentos
GPT-5.5 produz SCHEMA.sql, POLICIES.sql, PAGES.md, COMPONENTS.md. Separation of concerns no plano.
SCHEMA.sql (extrato)
CREATE TABLE teams (
id uuid PRIMARY KEY,
name text NOT NULL,
created_at timestamp DEFAULT now()
);
CREATE TABLE team_members (
team_id uuid REFERENCES teams(id),
user_id uuid REFERENCES auth.users(id),
role text CHECK (role IN ('owner','member')),
PRIMARY KEY (team_id, user_id)
);
CREATE TABLE projects (
id uuid PRIMARY KEY,
team_id uuid REFERENCES teams(id) NOT NULL,
name text NOT NULL
);
CREATE TABLE tasks (
id uuid PRIMARY KEY,
project_id uuid REFERENCES projects(id) NOT NULL,
title text NOT NULL,
done boolean DEFAULT false,
assigned_to uuid REFERENCES auth.users(id)
);๐จ Opus desenha estados de UI
Opus le PAGES.md e descreve estados de UI: vazio, com 1 task, com 100 tasks, em loading, em erro. + microcopy.
UX.md (extrato)
- Empty state /projects: ilustracao + "Voce ainda nao tem projetos. Crie o primeiro para organizar suas tarefas." + CTA "Criar projeto"
- Empty state /tasks: "Aqui vao suas tasks. Comece adicionando uma." + input inline (sem botao "criar")
- Loading: skeleton (nao spinner) โ sensacao de produto pronto
- Erro: "Ops, algo nao foi bem. Tenta de novo?" + botao retry
- Success de invite: toast "Convite enviado! Maria recebera o email."
โก DeepSeek constroi em 3 batchs
Em projeto grande, mandar tudo de uma vez explode contexto. Batch funciona melhor.
Batchs
- Batch 1 (DB): migrations + policies RLS + tipos TS gerados โ 8 arquivos
- Batch 2 (API): server actions para teams/projects/tasks โ 12 arquivos
- Batch 3 (UI): paginas + componentes shadcn โ 15 arquivos
Validacao entre batchs: testes de smoke + visual check.
๐ก๏ธ Pass especializado de seguranca em RLS
Multi-tenant tem armadilha: query "esquece" o team_id. GPT-5.5 le todas as queries e confirma isolamento.
Issues encontradas
- โ ๏ธ actions/tasks.ts:42 โ query de tasks nao filtra por team. Se uuid for adivinhado, vazamento entre tenants. Adicionar JOIN com team_members.
- โ ๏ธ policies/projects.sql โ INSERT permite criar projeto em team que usuario nao pertence. Adicionar WITH CHECK clause.
- โ Demais queries: corretamente filtradas via RLS
Vazamento entre tenants destroi confianca. Vale o pass extra. Custo: $0.30 em GPT-5.5.
๐ฐ Resultado: MVP em 1 dia, $4 de modelos
Mesmo MVP cotado em freelancer: $1500 e 2 semanas. Diferenca de magnitude โ setup multi-modelo nao e 20% melhor, e estruturalmente diferente.
Numeros
| Etapa | Custo |
|---|---|
| GPT-5.5 plano (4 docs) | $0.40 |
| Opus UX | $0.30 |
| DeepSeek 3 batchs | $2.50 |
| GPT-5.5 review geral | $0.50 |
| GPT-5.5 audit RLS | $0.30 |
| Total | $4.00 |
- โข 35 arquivos criados, 8 migrations
- โข Auth funcional, RLS testado, 5 telas completas
- โข Tempo humano (ajustar prompts, validar, deploy): ~8h
๐ Resumo do Projeto
Proximo Projeto:
3.4 โ โ๏ธ Scripts e automacoes