Este projeto é um boilerplate para aplicações NestJS seguindo uma arquitetura modular e organizada.
A estrutura do projeto é organizada em camadas, facilitando a manutenção e escalabilidade do código.
- application/: Contém a lógica de aplicação, incluindo eventos, gateways e controladores HTTP.
cronjobs/: Jobs agendadosgateway/: Implementação de WebSockets e outros gateways de comunicação.http/: Controladores e serviços expostos via API REST.
- domain/: Representa o domínio da aplicação, com as entidades e regras de negócio.
shared/: Contém código reutilizável entre diferentes domínios.
- infrastructure/: Responsável pela infraestrutura do projeto, como conexão com bancos de dados e repositórios.
configuration/: Configurações gerais da aplicaçãodatabase/: Configuração e implementação do banco de dados.
- integrations/: Módulo destinado a integrações com serviços externos.
- utils/: Contém utilitários e funções auxiliares.
Além desses diretórios, os arquivos principais são:
app.module.ts: Módulo raiz da aplicação NestJS.main.ts: Ponto de entrada da aplicação.
Para adicionar uma nova feature, siga os seguintes passos:
-
Criar a entidade no domínio:
- Adicione um novo diretório dentro de
domain/correspondente à nova feature. - Defina os modelos, interfaces e serviços necessários para a regra de negócio.
- Adicione um novo diretório dentro de
-
Adicionar os serviços de aplicação:
- Dentro de
application/, crie os controladores emhttp/e os eventos, se necessário. - Caso a feature precise de WebSockets, adicione no
gateway/.
- Dentro de
-
Criar a infraestrutura:
-
Se a feature precisar de banco de dados, adicione as configurações em
infrastructure/database/. -
Para criar uma migration, execute
npm run m:create --name=your_migration
-
-
Registrar o módulo:
- Adicione o novo módulo ao
app.module.tspara que o NestJS o reconheça.
- Adicione o novo módulo ao
-
Testar a implementação:
- Teste a API utilizando ferramentas como Postman ou Insomnia.
- Crie testes automatizados para validar o funcionamento.
Com essa estrutura modular, novas funcionalidades podem ser adicionadas de forma organizada e escalável.
- .env
PORT=3002
JWT_SECRET=secret
JWT_EXPIRATION_TIME=5m
COOKIE_SECRET=secret
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_USERNAME=default
REDIS_PASSWORD=default
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres