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.