Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refatoração de Projeto TypeScript para NestJS #108

Open
wants to merge 31 commits into
base: master
Choose a base branch
from

Conversation

titi0001
Copy link

@titi0001 titi0001 commented Nov 18, 2024

Este projeto foi originalmente desenvolvido em TypeScript puro sido refatorado para utilizar o framework NestJS, um framework moderno e modular para construir aplicações Node.js escaláveis. A migração para NestJS foi realizada para melhorar a organização do código, a modularidade e a escalabilidade, seguindo boas práticas arquiteturais.

Objetivo da Refatoração:

Adotar uma arquitetura modular:** Utilizando o sistema de módulos para organizar responsabilidades claramente ex.: UserModulePostModule).
Incorporar boas práticas: Aplicação de injeção de dependências, middleware global (ValidationPipe), e logging estruturado.
Facilitar testes e manutenibilidade: Com a separação de responsabilidades e o uso de decoradores para definir controllers, serviços e entidades.

Destaques do Projeto Refatorado

Arquitetura Modular

Módulos Criados:
- UserModule: gerenciamento de usuários.
- PostModule: gerenciamento de posts.
- Cada módulo contém sua lógica separada em controllers, serviços e entidades.

Banco de Dados:
DatabaseService: implementado para centralizar a inicialização e o gerenciamento da conexão com o banco.

Motivações para a Refatoração:

Organização: A estrutura anterior em TypeScript puro era monolítica, dificultando a manutenção e expansão do código.
Escalabilidade: O NestJS oferece um sistema modular que facilita o crescimento do projeto sem comprometer o desempenho ou a manutenibilidade.
Padronização: Frameworks como o NestJS seguem padrões de mercado que tornam o projeto mais compreensível para outros desenvolvedores.
Facilidade de Integração: O uso de decorators e providers simplifica a integração com bibliotecas externas e ferramentas como TypeORM.

Observação sobre o CI
Ambiente CI: Não foi possível implementar um ambiente de integração contínua (CI) no GitHub Actions devido à limitação de tempo com outros projetos em andamento.
Alternativa: O script run-tests.sh foi criado para automatizar o processo de execução do projeto, permitindo que o ambiente seja configurado e os testes sejam executados de forma simples.

#DB
DB_HOST_APP=127.0.0.1
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=password
DB_NAME=test_db
TYPEORM_SYNC=true

# Configuração do banco MySQL
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE=test_db
DB_HOST=db

#API
PORT=3000

Captura de tela 2024-11-17 231908

…egrate AppDataSource with TypeOrmModule for improved modularity
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant