Desafio Técnico - Kanban - Enzo Rossi #480
Open
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.
Envio de solução
Gostariamos de entender como você pensa e as decisões que você tomou durante o desenvolvimento, detalhe um pouco mais sobre:
Framework, linguagem e ferramentas
Usei Angular 21 no frontend e NestJS no backend. Escolhi essas ferramentas por serem o padrão atual para aplicações escaláveis, além de utilizarem TypeScript, o que me ajudou a evitar erros de digitação durante o desenvolvimento.
Técnologias X e Y
Optei por gerenciar os dados em memória (Arrays) no backend para garantir a entrega das funcionalidades principais de movimentação e reordenação do Kanban dentro do prazo, priorizando a experiência do usuário (UX). Também tentei utilizar GraphQL em vez de REST, mas estava com muita dificuldade e precisaria estudar mais, preferi priorizar o tempo e seguir por um caminho que eu tinha certeza que eu faria um bom trabalho.
Princípios de software
Apliquei a Separação de Preocupações (SoC), mantendo a lógica de interface nos componentes e a comunicação com a API em serviços isolados. Também foquei na Componentização para facilitar a manutenção.
Desafios e problemas
O maior desafio foi gerenciar o conflito de eventos entre o cdkDrag (arrastar) e os botões de ação (editar/excluir). Resolvi utilizando o stopPropagation() no evento de clique dos botões.
Melhorias e próximas implementações
Com mais tempo, eu implementaria a persistência em um banco de dados real (como SQLite) e adicionaria uma tela de login para que cada usuário pudesse ter seu próprio quadro salvo.
Vídeo de apresentação
Link do projeto funcionando (deixei o link no readme também)
https://jam.dev/c/5d58659b-7a4b-444d-b9f9-433d5cd4c5b3
Sobre você
Tenho 20 anos, nasci e cresci em Catanduva - SP. Atualmente, curso Ciência da Computação na UNIRP, em Rio Preto, e estou no sétimo período. Meu interesse pela área de desenvolvimento e tecnologia começou na época em que eu jogava Minecraft. Eu queria criar meus próprios mods e configurar servidores para jogar com meus amigos; foi buscando entender como fazer essas coisas que me interessei cada vez mais pela profissão, até decidir que esse seria o meu caminho.
No lado profissional, tive a oportunidade de estagiar na Integrativa, aqui em Catanduva, onde atuei nos setores de Integração e de Desenvolvimento. Meu objetivo agora é me estabelecer e crescer junto à empresa, mantendo o foco nos estudos para superar qualquer desafio. Quero provar meu valor e conquistar reconhecimento através do meu esforço e dedicação.
Ah, deixe seu e-mail ou telefone para entrarmos em contato com você :)
Email para contato: enzorossi120405@gmail.com