← voltar para o feed
Node.js6 min de leitura

Como organizar um projeto full stack de verdade

Monorepo, folders por feature, contratos compartilhados. O que eu realmente uso no dia a dia, sem hype.

#monorepo#arquitetura#full stack

"Full stack" virou sinônimo de "pasta /client e pasta /server no mesmo repo". Dá pra fazer melhor.

Monorepo simples com workspaces

apps/
  web/        # React + Vite
  api/        # Node + Express
packages/
  contracts/  # Zod schemas + tipos compartilhados
  ui/         # Componentes reutilizáveis
  config/     # eslint, tsconfig base

Contratos compartilhados é o pulo do gato

O mesmo schema Zod valida no servidor e tipa o cliente:

// packages/contracts/src/product.ts
export const Product = z.object({
  id: z.string(),
  sku: z.string(),
  name: z.string(),
  price: z.number(),
});
export type Product = z.infer<typeof Product>;

Zero drift entre front e back. Sem gerador de código. Sem OpenAPI. Sem dor.

Organização por feature, não por tipo

Em vez de controllers/, services/, models/ (ruim quando cresce), uso:

modules/
  products/
  orders/
  inventory/

Cada módulo é uma mini-aplicação. Coesão alta, acoplamento baixo.

Uma boa estrutura é aquela onde um colega novo acha o arquivo certo em menos de 10 segundos.

Gostou do post?

Compartilha com alguém que tá resolvendo o mesmo problema.

# Continue lendo