Pular para o conteúdo

004 — Tasks · Stack da Aplicação: OpenAPI, Estado, UI e Testes

004 — Tasks · Stack da Aplicação: OpenAPI, Estado, UI e Testes

Seção intitulada “004 — Tasks · Stack da Aplicação: OpenAPI, Estado, UI e Testes”

Execução viva. Status: todo / doing / done / blocked.

#TarefaStatus
1OpenAPI (Zod 4 nativo): document, domains, schemas, rotasdone
2Tipos gerados (pnpm openapi) + cliente openapi-fetchdone
3Zustand: store tasks + sync + página demodone
4shadcn/ui completo em packages/ui + Sonner no layoutdone
5Vitest + teste de contratodone
6Prisma + Docker + seed + scripts db:*done

Bibliotecas instaladas (nome · versão · porquê)

Seção intitulada “Bibliotecas instaladas (nome · versão · porquê)”

Runtime (apps/web)

  • zustand ^5.0.14 — estado do frontend (core inegociável do manifesto).
  • zod ^4.4.3 — validação + fonte única do contrato OpenAPI.
  • @scalar/nextjs-api-reference ^0.11.6 — UI de testes da API em /reference.
  • openapi-fetch ^0.17.0 — cliente HTTP tipado a partir do spec.
  • sonner ^2.0.7 — notificações (toasts).
  • @prisma/client ^7.8.0 — ORM (PostgreSQL), com @prisma/adapter-pg ^7.8.0 (driver adapter).

Dev (apps/web)

  • openapi-typescript ^7.13.0 — gera lib/shared/api-types.ts do spec.
  • vitest ^4.1.9, @testing-library/react ^16, @testing-library/jest-dom ^6, jsdom, @vitejs/plugin-react — testes.
  • prisma ^7.8.0 — CLI do ORM. dotenv — carrega .env no seed/config.
  • tsx ^4.22.4 — roda o script de geração de tipos do OpenAPI.

packages/ui — todos os componentes shadcn/ui (radix-ui, recharts, cmdk, vaul, sonner, embla-carousel, react-day-picker, input-otp, react-resizable-panels) adicionados via shadcn add.

  • Prisma 7 + schema multi-domínio. prisma.config.ts define schema: "prisma" (pasta) e datasource.url; os modelos vivem em prisma/models/{tasks,users}.prisma; o client (novo generator prisma-client) é gerado em generated/prisma e instanciado com @prisma/adapter-pg em lib/server/db.ts. postinstall: prisma generate deixa o client pronto após o install.
  • Relação entre domínios validada (User 1—N Task) com banco real em Docker.
  • toast importado de sonner diretamente: sonner adicionado às deps do web para o toast ficar tipado.
  • Hook use-mobile do shadcn sidebar movido para packages/ui/src/hooks/ (o componente o importa de @workspace/ui/hooks/use-mobile).
  • Script de tipos do OpenAPI rodado via tsx (não via --loader, deprecado no Node 22).
  • Agentes exploradores em paralelo para mapear o padrão de OpenAPI dos projetos de referência antes de construir.
  • Validação contínua: tsc --noEmit (ok), vitest run (4/4), next build (ok), pnpm openapi.

Criado por Joseph Trupel