DEV Community

Erandir Junior
Erandir Junior

Posted on • Updated on

Construindo aplicação do zero com node.js: Parte 1

Fala devs, no mundo do desenvolvimento, para você melhorar ou adquirir uma nova habilidade, não tem como fugir da prática. E eu precisa desenvolver algo para melhorar minhas habilidades em node.js, além é claro de poder ajudar os outros. E depois de muito pensar, resolvi desenvolver o projeto descrito abaixo.

Two-Factor Authentication

Um sistema de autenticação em 2 fatores, nada mais é do que se autenticar em um sistema em duas formas. Diferentemente de acessar um sistema qualquer com apenas o seu e-mail e senha, neste outro tipo de sistema, você posteriormente deve informar alguma outra informação, que provavelmente foi enviada por e-mail, ligação, sms, etc.

Um exemplo claro disso são os sistemas do Google, normalmente quando acesso minha conta de algum equipamento "desconhecido", é necessário que eu informe um código que aparece na tela do meu smartphone.

Motivo

Falei inicialmente sobre praticar, mas eu também queria mostrar como fazer algo do zero, não que uma aplicação desse nível seja algo extremamente complexo, mas eu acho útil e bem diferente dos padrões de crud.

Tecnologia

Para quem não conhece, node é um plataforma que nos permite utilizar JavaScript para desenvolver do lado servidor/backend. Caso você não conheça, essa é uma ótima forma de aprender, ou caso já tenha familiaridade, nada melhor do que praticar, não é mesmo?

Algo que posso dizer é que não utilizei TypeScript, então por esse motivo tive certas "limitações" digamos assim, que pude contornar obviamente, porém trazendo um pouco de complexidade ao projeto.

Outros pontos importantes foram o uso de docker para auxiliar no desenvolvimento, testes, além de aplicar o conceito da arquitetura hexagonal para organizar a aplicação.

Aprendizado

Acredito que mesmo os sistemas mais simples podem te ensinar bastante, e eu por exemplo, aprendi muito, posso destacar de antemão uma maior prática de testes. Inicialmente utilizei a biblioteca mocha para me ajudar, construindo todo o código com a modularização do commonjs, e no final fiz a conversão para o ES6 module. O que me deu uma dorzinha de cabeça.

Essa "pequena" alteração, fez com que eu tivesse uma perda um tanto importante: não consegui gerar o relatório de cobertura de testes. A biblioteca utilizada tinha um certa limitação com o ES6 module, e aí que resolvi mudar para o Jest- outra ferramenta de testes - aí refatorei os testes e consegui voltar com o relatório de cobertura, como podem ver abaixo:

Imagem do relatório de cobertura de testes gerado pelo JEST

Apesar de algumas coisas não terem um nível tão alto de cobertura, a parte central da aplicação src/domain, está 100% testada, sendo realizado testes unitários e de ponta a ponta.

Prepare-se

Se você realmente quer seguir e executar os códigos dos próximos artigos, um pouco de conhecimento em JS e Docker são imprescindíveis.

Projeto

Nos próximos artigos vou detalhar a construção do sistema, informando escolhas, bibliotecas, melhorias, etc. E antes que me esqueça, já vou deixando aqui o link para o código fonte, seja para estudar, utilizar, melhorar, ou mesmo ignorar completamente.

Vejo vocês nos próximos artigos.

Top comments (0)