Melhor estrutura de projeto Nestj + SOLID
Estrutura nestjs + SOLID
Eu estou estudando NestJS para demandas do trabalho e o sistema que criaremos com essa tecnologia precisa ser extremamente flexível para possibilitar mudanças de algumas fornecedoras de API, futuramente. E você não leu errado, S.O.L.I.D!!!
Eu manjo? Não. Estou aprendendo haha. Então tive duas brilhantes ideias.
1º Mesclar vários códigos que achei na internet utilizando conceitos do SOLID (5 exemplos distintos) e criar um "template" satisfatório nestjs com solid. Para o estudo, eu estou refatorando um CRUD que acabei de finalizar num curso introdutório.
2º Compartilhar com a rede pra polir junto comigo essa refatoração e chegar num modelo massa. E aí, o que que vocês acham? Logo mais compartilho o repositório para a gente trocar uma ideia sobre.
Tecnologias
- NestJS
- Typescript
- TypeORM
- Envio de email com "@nestjs-modules/mailer"
- Prisma (pretendo colocar no código também para ver o nível de adaptabilidade do código se precisássemos mudar de orm
Estrutura atual do projeto
├── app
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── modules
│ └── user
│ ├── dtos
│ │ ├── create-user-dto.ts
│ │ ├── update-patch-user-dto.ts
│ │ └── update-user-dto.ts
│ ├── infra
│ │ └── typeorm
│ │ ├── entities
│ │ │ └── user.entity.ts
│ │ └── repositories
│ │ └── user.repository.ts
│ ├── interfaces
│ │ └── user.interface.ts
│ ├── user.controller.ts
│ ├── user.module.ts
│ └── user.service.ts
├── config
├── core
│ ├── core.module.ts
│ ├── decorators
│ │ ├── param-id.decorator.ts
│ │ ├── roles.decorator.ts
│ │ └── user.decorator.ts
│ ├── enum
│ │ └── role.enum.ts
│ ├── guards
│ │ ├── auth.guard.ts
│ │ └── role.guard.ts
│ ├── interceptors
│ │ └── log.interceptor.ts
│ └── middlewares
│ └── user-id-check.middleware.ts
├── database
├── main.ts
└── shared
└── auth
├── auth.controller.ts
├── auth.interfaces.ts
├── auth.module.ts
├── auth.service.ts
├── dtos
│ ├── auth-forget.dto.ts
│ ├── auth-login.dto.ts
│ ├── auth-me.dto.ts
│ ├── auth-register.dto.ts
│ └── auth-reset.dto.ts
├── infra
└── service
ps: Como vocês preferem conversar sobre o código? Por aqui mesmo? Discord? issues do github? me dêem ideias 😅