Construindo do zero um backend NodeJS com NestJS + Design Patterns - parte um (1/3)
Rogério dos Santos Fernandes
Posted on May 2, 2020
Olá humano!
Co-escrevo esse artigo em meio a quarentena do Coronavírus com meu amigo e colega Matheus Viana (https://www.linkedin.com/in/matheusviana/). Na verdade, se trata de uma série de artigos que planejamos fazer para mostrar um Backend feito em NodeJS tendo em mente boas práticas de desenvolvimento ágil de software.
Neste primeiro artigo, vamos discutir sobre o que nos levou a escrevê-lo em primeiro lugar, e quais diretrizes nos guiam por essa jornada.
Motivação:
Trabalho com Node há cerca de 5 anos, e adoro a comunidade e a linguagem JavaScript e seu superset TypeScript. Existem inúmeras (de verdade!) formas de se construir um backend em Node, por isso quero focar aqui mais nos conceitos do que nas ferramentas, pois os conceitos e o valor que eles agregam são mais importantes, e são independentes de bibliotecas e frameworks!
Dito isso, o que queríamos atingir aqui é a construção de um Backend com esses requisitos em mente:
Seguir Padrões de Projeto e boas práticas reconhecidamente eficientes nos projetos empresariais, como:
- Domain Driven Design
- S.O.L.I.D.
- Clean Code
- DRY (Não se repita, em tradução livre)
Estes princípios e padrões acima nos norteiam na organização de nosso código, visando principalmente um código que possa escalar e não perca sua clareza, que fique se mantenha, ao longo do tempo, limpo e eficiente.
Partimos da visão de que escrevemos código para outras pessoas lerem, e não somente para máquinas.
Dito isso, vamos lá!
Partimos com o NestJS por ele ser um framework que já nos dá algumas coisas de prontidão, como:
- Injeção de dependências
- TypeScript
- Testes de unidade e integração com o Jest!
Começamos a partir do próprio template do Nest, que também provê uma interface de linha de comando (CLI) bem útil:
// instala globalmente a CLI do Nest
npm i -g @nestjs/cli
// cria uma nova aplicação Nest com nome geekLounge
nest new geekLounge
após isso, editamos o README pra refletir a descrição do nosso projeto, um backend de um site de críticas de filmes chamado Geek Lounge. Definimos este contexto para podermos trabalhar em um domínio rico durante os artigos.
Foi incluído um passo antes dos commits que executam os testes de unidade e integração, a fim de manter a qualidade do código a cada commit!
yarn add -D husky
Assim, damos um ponto de partida pra essa jornada, e começamos nossa API.
Pra quem veio esperando ver muito código nesse primeiro post, peço paciência rs começamos pensando NO QUE queremos construir e PORQUÊ, que pra mim é o mais importante, pra aí então pensarmos no COMO!
Também configuramos uma esteira no Travis CI para todo o processo rolar com TDD e Continuous Integration.
Aqui está o link pro projeto: https://github.com/moviandev/geekLounge
Acompanhe-nos nas redes sociais pra receber as próximas postagens!
github: @dontpanicroger
twitter: @lifeaholicroger
Posted on May 2, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
May 2, 2020