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.
Desafio FieldControl feito!
Detalhamento das decisões de desenvolvimento
Framework, linguagem e ferramentas
Para o desenvolvimento deste projeto, utilizei:
Frontend:
--Angular 17 com Angular CLI — estrutura modular e organizada para SPAs.
--TypeScript — para maior robustez, tipagem estática e melhor legibilidade.
--Angular Material — para componentes visuais e responsividade.
--RxJS — para controle de fluxo reativo e assincronismo.
Backend:
--NestJS — framework Node.js baseado em TypeScript com arquitetura modular e suporte nativo para testes.
--PostgreSQL — banco de dados relacional.
--TypeORM — ORM utilizado para integração entre o NestJS e o banco de dados.
Outros:
--JWT (JSON Web Token) — para autenticação.
--Git e GitHub — versionamento de código e colaboração.
Tecnologia X vs. Y
--Optei por utilizar NestJS em vez de outras alternativas como Express puro por conta de:
--Arquitetura baseada em módulos, ideal para projetos escaláveis.
--Integração nativa com TypeORM, validação e autenticação.
--Suporte robusto para testes unitários.
--No frontend, escolhi o Angular em vez de React ou Vue porque:
--Já possuo familiaridade com Angular.
--O Angular fornece uma estrutura mais opinativa, ideal para times e projetos maiores.
--Suporte nativo a SSR (mesmo que optei por remover depois por questões técnicas de localStorage).
Princípios de Engenharia de Software utilizados
--Modularidade — código organizado em módulos como auth, user, etc.
--Responsabilidade Única (SRP) — cada serviço e componente tem uma função clara.
--Injeção de Dependência — especialmente com NestJS e Angular.
--Boas práticas REST — estrutura limpa e semântica nas rotas da API.
Desafios e problemas enfrentados
--Deploy com SSR no Angular: inicialmente tentei usar Server Side Rendering, mas enfrentei erros com localStorage durante o prerender, pois ele não está disponível no ambiente de servidor. A solução foi remover o SSR e focar em SPA.
--Integração com backend em produção: tentei subir o backend na Railway e usar o domínio no frontend, mas tive problemas com o environment.ts e CORS. Resolvi testando localmente com localhost.
Melhorias futuras
--Deploy completo do backend: resolver as pendências de variáveis de ambiente e subir com Docker ou Railway/Vercel.
--Login em tempo real com feedback visual e validação mais robusta.
--Testes unitários e e2e mais completos — especialmente para auth e user.
--Painel administrativo e permissões — controle de acesso baseado em roles.
--Responsividade completa e acessibilidade no frontend.
Sobre você
Queremos te conhecer um pouco melhor, conte um pouco sobre você.
Olá, meu nome é Thiago, tenho 19 anos e nasci em São José do Rio Preto - SP. Meu primeiro contato com a programação foi na escola PIO X, por meio de um curso profissionalizante. Desde então, nunca parei de estudar e praticar.
Atualmente, estou matriculado no curso de Análise e Desenvolvimento de Sistemas (ADS) na UNIP, e também faço um curso de Power BI no SENAI. Essa será minha primeira oportunidade de trabalho na área.
Meus primeiros projetos foram simples, como conversores de temperatura, sites e templates. Este projeto, no entanto, foi meu primeiro grande desafio, e me senti animado do início ao fim durante o desenvolvimento.
Estou empolgado para conhecer o ambiente de trabalho e poder fazer parte da equipe.
Ah, deixe seu e-mail ou telefone para entrarmos em contato com você :)
E-mail: [email protected]