Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ferramentas e Bibliotecas Utilizadas:
Backend: NestJS (framework para Node.js que permite criar aplicações escaláveis e de fácil manutenção)
Banco de Dados: Utilizei armazenamento local (arquivo) para salvar dados de forma simples e eficiente.
Frontend: Angular (framework robusto para aplicações web, utilizado por sua arquitetura modular e reutilização de componentes).
Outras ferramentas: TypeScript (para ambos os lados, frontend e backend), Git (controle de versão), e Postman (para testar as APIs).
Princípios de Engenharia de Software Utilizados:
Princípio da Responsabilidade Única (Single Responsibility Principle - SRP): Cada módulo foi projetado para ter uma única responsabilidade, o que facilita a manutenção e a escalabilidade.
Injeção de Dependência: Utilizada no NestJS para garantir que as dependências fossem gerenciadas de forma eficiente, promovendo maior modularidade e testabilidade.
Testabilidade: Foi adotada a escrita de testes unitários e de integração, utilizando Jest no backend, para garantir que cada parte do sistema funcione de forma isolada e integrada.
Separação de Preocupações (Separation of Concerns - SoC): O código foi estruturado de forma que a lógica de negócio no backend e a interface de usuário no frontend estivessem bem separadas, facilitando a manutenção e a escalabilidade do sistema.
Desafios e Problemas Enfrentados:
Integração entre Backend e Frontend: Enfrentei dificuldades para estabelecer a comunicação entre o backend e o frontend, o que impediu a integração adequada entre as duas partes da aplicação.
Melhorias Possíveis:
Banco de Dados: Embora tenha usado o armazenamento local (arquivo), é possível melhorar a persistência de dados migrando para um banco de dados real, como MongoDB ou PostgreSQL, que permitiria um gerenciamento de dados mais eficiente e escalável.
Segurança: A aplicação atualmente não implementa autenticação ou autorização robustas. Implementar JWT (JSON Web Tokens) para autenticação e roles para controle de acesso seriam melhorias importantes para a segurança da aplicação.
Performance: Considerando o crescimento do projeto, poderia implementar cache no backend para otimizar o tempo de resposta, principalmente em operações de leitura de dados frequentemente acessados.
Documentação: Melhorar a documentação, tanto no código quanto em um README detalhado sobre o uso da aplicação, para tornar mais fácil para outros desenvolvedores colaborarem no projeto.