Este projeto é um backend desenvolvido com Node.js e NestJS, utilizando PostgreSQL e Redis como serviços de suporte. Abaixo estão as instruções para configurar, executar e testar o projeto.
Certifique-se de ter os seguintes itens instalados em sua máquina:
- NPM - Gerenciador de pacotes do Node.js
- Node.js
>=22.0.0(Recomenda-se instalar via NVM) - Docker Compose - Para gerenciar os containers Docker
- (Opcional) Make - Para comandos simplificados
Caso queira utilizar os comandos simplificados com Make, siga as instruções abaixo para instalá-lo:
brew install makesudo apt update && sudo apt install makeInstale o Make para Windows ou utilize o WSL (Windows Subsystem for Linux).
Siga os passos abaixo para configurar e executar o projeto:
Caso ainda não tenha o Docker e o Docker Compose instalados, siga as instruções no site oficial do Docker.
Execute o comando abaixo para iniciar os containers do PostgreSQL, Redis e Node.js com NestJS:
docker-compose up -d
# Ou, caso tenha o Make instalado:
make upEntre no container para executar comandos diretamente no ambiente do backend:
docker exec -it challenge-nestjs /bin/sh
# Ou, caso tenha o Make instalado:
make execDentro do container, execute o seguinte comando:
npm installExecute as migrações e seeds para configurar o banco de dados:
npm run db:migrate && npm run db:seedInicie o servidor em modo de desenvolvimento:
npm run start:devApós iniciar o servidor, acesse o Playground do GraphQL no seguinte endereço:
👉 http://localhost:3000/graphql
Para rodar os testes do projeto, utilize o comando:
npm run testCaso precise criar novas migrations, utilize o comando abaixo, substituindo create-xpto-table pelo nome da sua migration:
npm run db:create_migration --name=create-xpto-table- Sim! O provisionador foi refatorado e reestruturado para garantir que as próximas implementações sejam simples e que ele funcione conforme o esperado.
- Sim! O projeto foi refatorado seguindo as melhores práticas de desenvolvimento, incluindo:
- Princípios SOLID para garantir um código modular e de fácil manutenção.
- Object Calisthenics para melhorar a legibilidade e simplicidade do código.
- Clean Architecture para separar responsabilidades e facilitar a escalabilidade.
- Uso de DTOs (Data Transfer Objects) para padronizar a troca de dados entre camadas.
- Implementação de Design Patterns como Strategy, Factory, entre outros, para resolver problemas comuns de forma eficiente.
- Sim! O sistema foi projetado para ser extensível, permitindo a adição de novos tipos de conteúdos de forma simples e eficiente.
- Isso foi possível graças à implementação de Design Patterns que facilitam novas implementações, como o provisionamento de conteúdos, que já foi implementado como exemplo prático.
- A arquitetura modular e o uso de padrões como Strategy e Factory garantem que o sistema possa crescer sem comprometer a base existente.
- Sim! Foram identificados e corrigidos problemas críticos relacionados à segurança, incluindo:
- SQL Injection: As consultas ao banco de dados foram protegidas utilizando ORMs e parâmetros preparados, eliminando vulnerabilidades de injeção de SQL.
- Multi-Tenancy: O sistema foi ajustado para garantir que os usuários só possam acessar conteúdos vinculados à sua empresa, respeitando o isolamento de dados entre locatários.
- Validação e Autenticação: Foram implementadas validações robustas e melhorias no controle de autenticação para evitar acessos não autorizados.
- Essas melhorias garantem que o sistema esteja seguro e alinhado com as melhores práticas de segurança.
- Ainda não foi possível implementar testes unitários devido à falta de tempo.
- No entanto, o projeto foi estruturado para facilitar a implementação de testes no futuro, com uma arquitetura modular e bem definida.
- A cobertura de testes será priorizada em iterações futuras para garantir a confiabilidade do sistema.
- Sim! A documentação foi atualizada e agora inclui:
- Informações detalhadas sobre o setup do projeto.
- Passos para a execução e configuração do ambiente.
- Descrição das tecnologias utilizadas no desenvolvimento.
- O README foi revisado para garantir clareza e facilitar o entendimento por novos desenvolvedores.
🚀 Tudo pronto para o envio!
- Node.js
>=22.0.0 - NestJS - Framework para construção de APIs
- PostgreSQL - Banco de dados relacional
- Redis - Armazenamento em cache
- Docker - Gerenciamento de containers
- GraphQL - Linguagem de consulta para APIs
Este projeto está sob a licença MIT.
Caso tenha dúvidas ou problemas, entre em contato com o responsável pelo projeto.