Pular para o conteúdo

Stack universal

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.

CamadaTecnologia
FrameworkNext.js (App Router)
LinguagemTypeScript
MonorepoTurborepo + pnpm workspaces (apps/*, packages/*)
EstiloTailwind CSS
Componentesshadcn/ui (em packages/ui)
NotificaçõesSonner (toasts)
Estado (frontend)Zustand (padrão store + sync)
ValidaçãoZod
TestesVitest (+ Testing Library)
BancoPostgreSQL (em Docker — 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, …).

  • 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.
pnpm lint
pnpm typecheck   # ou: pnpm tsc --noEmit
pnpm build

Nenhuma entrega é considerada pronta sem passar pelas três.

  • 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).

Criado por Joseph Trupel