Boas Práticas de Modularidade
Direção de importação: rotas → casos de uso → domínio. Estas práticas mantêm bases de código Node.js testáveis e prontas para mudanças de framework ou persistência.
Busque em todas as páginas da documentação
Direção de importação: rotas → casos de uso → domínio. Estas práticas mantêm bases de código Node.js testáveis e prontas para mudanças de framework ou persistência.
express, fastify, @nestjs/*, prisma, ioredis.infraestrutura → aplicação → domínio. Nunca domínio → infraestrutura.dependency-cruiser ou ESLint para falhar importações proibidas.shared/.export * from './infrastructure'.OrderGodService.AppError). Mapeador HTTP central traduz códigos.findById, não findUnique.OrderRepository.ordersRouter(deps) para injeção.OrdersService inchada.req.body com Zod na borda HTTP antes de execute().routes.ts, use-cases/, opcional repos/ é suficiente. Pastas hexagonais completas quando o segundo adaptador aparecer.
Middleware de autenticação pode anexar user à requisição. Autorização de negócio ainda no caso de uso.
Extraia um caso de uso por PR. A rota chama o novo caso de uso; delete a lógica inline antiga quando os testes passarem.
Tipos explícitos na fronteira do caso de uso ajudam. DTOs HTTP podem diferir das entidades de domínio através de funções mapeadoras.
Funções execute(deps, input) funcionam. Mantenha as mesmas regras de importação.
import { prisma } from '../lib/prisma' dentro de handlers de rota.
Pacote de schema OK; cada serviço é dono do adaptador de repositório - sem chamadas Prisma compartilhadas de rotas.
Resolvers são adaptadores - chamam casos de uso, não embutem SQL.
scripts/ pode ser flexível. Código de produção src/ segue esta lista.
Não para MVP da primeira semana se um ticket de débito técnico rastrear a extração antes da equipe #2.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5, e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026