Pular para o conteúdo

4. Stack · versão 2.0.0

Stack universal

manifesto/03-stack/01-stack-universal.md

Esta é a stack obrigatória de todo projeto. Não é recomendação — é regra. Stacks adicionais específicas de um projeto são registradas em .specs/stack/ daquele projeto, nunca substituindo as bases aqui.

A stack

CamadaTecnologia
FrameworkNext.js (App Router)
LinguagemTypeScript
MonorepoTurborepo + pnpm workspaces (apps/*, packages/*)
EstiloTailwind CSS, com os design tokens como fonte única — ver Design System e tokens
Componentesshadcn/ui (em packages/ui)
NotificaçõesSonner (toasts)
Estado (frontend)Zustand (padrão store + sync)
ValidaçãoZod
TestesVitest (+ Testing Library)
BancoPostgreSQL (em contêiner: Docker recomendado, já vem nos espaços do Gestor; Podman também funciona — ver orquestração)
ORMPrisma
Contrato de APIOpenAPI (derivado do Zod) + Scalar para testes — ver OpenAPI e Scalar
Cliente tipado da APIopenapi-typescript + openapi-fetch (tipos gerados do spec)
GráficosRecharts
Gerador de PDFmd-to-pdf (Puppeteer) para relatórios de ADR
Gerenciador de pacotespnpm

O projeto é um monorepo Turborepo: frontend, API e pacotes compartilhados no mesmo repositório (apps/web, packages/ui, …).

Recomendado: o Gestor

A gestão do trabalho (tarefas, prazos, ciclos, solicitações do cliente) é recomendada no Gestor, com o MCP do Gestor para a IA. Não é regra: o Manifesto funciona inteiro sem ele (Sem o Gestor).

Proibições duras

  • Sem any. Tipagem total, do banco ao componente — sem exceções.
  • Zod em todo input de API. Nenhum dado de entrada é processado sem validação.
  • Toda notificação ao usuário passa pelo Sonner (toast(...)). Nada de alert() nativo.
  • Todo endpoint publica contrato OpenAPI e tem tipos gerados (openapi-typescript) para o cliente — o front nunca consome a API com tipos escritos à mão.

Validações obrigatórias antes de toda entrega

pnpm lint
pnpm typecheck # ou: pnpm tsc --noEmit
pnpm test # Vitest
pnpm build

Nenhuma entrega é considerada pronta sem passar pelas quatro.

O que é recomendação (não regra)

  • A estrutura de pastas de código (src/modules, src/components, src/lib, …) é recomendada, não imposta. Ver Frontend e Backend para os pontos que são obrigatórios.
  • Atomic Design para componentes: recomendado.
  • Versões de Node e TypeScript não são fixadas pelo manifesto — cada projeto decide (via ADR de infraestrutura, se quiser travar).