PROJETO 3.3

๐Ÿ“ฑ App full-stack do zero (Next.js + Supabase)

Aplicacao completa com auth, DB, RLS, dashboards. App de gestao de tarefas com times, multi-tenant. O caso mais completo da trilha.

6
Etapas
~8h
Tempo
$4.00
Custo
MVP
Tipo
1

๐ŸŽฏ 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
2

๐Ÿ›๏ธ 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)
);
3

๐ŸŽจ 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."
4

โšก 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.

5

๐Ÿ›ก๏ธ 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.

6

๐Ÿ’ฐ 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

EtapaCusto
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

โœ“
4 docs separados: SCHEMA, POLICIES, PAGES, COMPONENTS โ€” escopo claro
โœ“
Estados de UI completos: empty, loading, error, success โ€” diferenca entre MVP e produto
โœ“
3 batchs de implementacao: DB, API, UI โ€” validacao entre fases
โœ“
Audit dedicado de RLS: multi-tenant exige verificacao especifica
โœ“
2 issues criticas pegas: vazamento de tenant em tasks e projects
โœ“
$4 vs $1500 freelancer: setup muda patamar de custo, nao so otimiza

Proximo Projeto:

3.4 โ€” โš™๏ธ Scripts e automacoes