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

Kanban Autoral #385

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

Conversation

RonaldoChiavegatti
Copy link

@RonaldoChiavegatti RonaldoChiavegatti commented Nov 11, 2024

Framework, Linguagem e Ferramentas
Para este projeto, utilizei as seguintes tecnologias e ferramentas:

Frontend: Utilizei Angular por seu poderoso sistema de módulos, facilidade de criação de Single Page Applications (SPA), e por ser uma escolha confiável para projetos com demandas de escalabilidade e performance. Angular CLI também facilitou o setup e o desenvolvimento, permitindo geração rápida de componentes e serviços.
Backend: Usei NestJS, um framework em Node.js que se destaca pela estrutura modular e arquitetura em camadas, muito similar ao Spring Boot, o que facilita a manutenção e escalabilidade do código. A integração com o TypeScript e o suporte a injeção de dependências também contribuíram para uma estrutura mais organizada e orientada a serviços.
Banco de Dados: Escolhi PostgreSQL como banco de dados relacional para aproveitar suas funcionalidades avançadas e sua integração com o NestJS, ideal para garantir a consistência dos dados.
Ferramentas de Deploy e Versionamento: Usei o AWS Elastic Beanstalk para o deploy e Docker para padronizar os ambientes de desenvolvimento e produção, o que facilita o CI/CD. Utilizei Git para o controle de versão.
Tecnologias X e Y
Optei por Angular e NestJS considerando os seguintes pontos:

Angular vs. React: Angular possui uma estrutura mais organizada para projetos de grande porte, com injeção de dependências e sistema de rotas embutidos, além de ser ideal para SPAs com necessidade de modularidade e organização de serviços.
NestJS vs. Express.js: Enquanto o Express.js é uma ótima opção para APIs REST simples, o NestJS é mais indicado para projetos escaláveis devido à sua arquitetura baseada em módulos e uso de TypeScript, além do suporte nativo para microservices.
PostgreSQL vs. MongoDB: PostgreSQL foi a escolha pelo suporte a transações e funcionalidades SQL avançadas, mais adequado para um projeto com relacionamentos complexos e estrutura de dados consistente.
Princípios de Engenharia de Software
Apliquei vários princípios de engenharia de software durante o desenvolvimento, entre eles:

SOLID: Utilize esses princípios especialmente no backend com NestJS, estruturando módulos e serviços de maneira que cada um tenha uma responsabilidade única e clara.
DRY (Don’t Repeat Yourself): Criei serviços e componentes reutilizáveis no Angular para evitar redundâncias, facilitando a manutenção.
Inversão de Dependência: Com o NestJS, utilizei injeção de dependências extensivamente, o que facilitou o gerenciamento de dependências e isolou módulos para testes.
Desafios e Problemas
Alguns desafios enfrentados durante o desenvolvimento:

Comunicação Frontend e Backend: Configurar o CORS no NestJS foi essencial para permitir que o frontend Angular se comunicasse com o backend, especialmente em ambiente de desenvolvimento.
Modularização no Angular: Gerenciar a organização dos módulos de forma a manter uma hierarquia clara e evitar dependências circulares foi desafiador. Resolvi isso utilizando módulos dedicados para componentes compartilhados e serviços.
Gerenciamento de Estado: Com Angular, a implementação de NgRx para o gerenciamento de estado foi desafiadora, mas essencial para garantir que os dados fossem mantidos e sincronizados adequadamente na aplicação.
Melhorias e Próximas Implementações
Otimização de Performance: Considero implementar cacheamento no backend NestJS para operações de leitura frequentes, o que deve melhorar o desempenho da aplicação.
Testes Automatizados: Pretendo incluir mais testes unitários e de integração com Jest no backend e Karma no Angular para garantir a robustez da aplicação.
Autenticação e Autorização: Melhorar a autenticação com a inclusão de JWT expiração e renovação automática de tokens, aumentando a segurança.
Vídeo de Apresentação
O vídeo de demonstração está disponível neste link: https://youtu.be/7iE41lMil0k

Sobre Mim
Meu nome é Ronaldo, sou de São José do Rio Preto, São Paulo, e trabalho com desenvolvimento de software há alguns anos. Sou estudante de Análise e Desenvolvimento Sistemas e já trabalhei em projetos que envolvem desde marketing digital até a criação de sistemas de controle de estoque, sempre buscando aprender novas tecnologias e aplicar boas práticas de desenvolvimento. Atualmente, estou à frente da Venturea.pro, uma agência de marketing digital que fundei com o intuito de ajudar empresas a crescerem no mercado digital.

Outros Detalhes
Estou à disposição para discutir o projeto em mais detalhes e esclarecer qualquer dúvida sobre a implementação ou melhorias.

Contato
Email: [email protected]
Telefone: (17) 99677-4840

@lfreneda lfreneda self-assigned this Nov 12, 2024
@lfreneda
Copy link
Member

@RonaldoChiavegatti marquei um papo com você na semana que vem

@lfreneda lfreneda added the scheduled interview scheduled label Nov 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
scheduled interview scheduled
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants