DEV Community

João Pedro Rubira Crulhas
João Pedro Rubira Crulhas

Posted on

NestJS - Aprendendo do zero

Olá a todos, ou talvez olá apenas pra mim mesmo, primeiro quero começar explicando a razão de criar um post sobre NestJS, sendo que já há milhares de artigos por aí, muitos melhores que este, mas a razão é que, como estou trabalhando com este framework recentemente, sempre gosto de escrever, e tentar "aprender ensinando", sendo uma tática bem efetiva para mim, sendo assim, após está pequena introdução, vamos por a "mão na massa".

Image description

A primeira coisa que devemos entender é o O que é o NestJS?, Quais as vantagens de utilizá-lo? E isso são perguntas que podemos sempre consultar fóruns, posts no stackoverflow mais principalmente o nosso amigo nessa série de artigos, que é a documentação.

Vamos analisar a primeira frase "Nest (NestJS) is a framework for building efficient, scalable Node.js server-side applications" vemos aqui diversas palavras que são de extrema valia para nós, que é "scalable", hoje sempre ao desenvolver uma aplicação devemos pensar na escalabilidade, e a outra buzzword aqui é efficient, sendo assim, o NestJS já se vende muito bem logo em sua primeira frase.

Algo muito importante na utilização do NestJS é que o mesmo oferece um suporte total para a utilização do Typescript, que é de extrema importância durante o desenvolvimento, ajudando e muito a evitar erros em runtime.

Algo que muito deve-se levar em conta ao escolher um determinado framework, é se o mesmo está atualizado, se tem uma comunidade que ajuda o desenvolvimento para que o mesmo não fique obsoleto ou ainda pior vulneráveis a falhas em packages que são utilizados. Algo que podemos ficar tranquilos e relação ao NestJS pois se olharmos sua página no github terá mais de 58k de estrelas no repositório e mais de 7K Forks.

Vale ressaltar que o NestJS não é uma bala de prata, e que pode ser, dependendo do problema que você está disposto a resolver, seria "matar uma formiga com uma bazuca", então sempre antes de tomar uma decisão de qual framework for vir a utilizar, analise se o mesmo é necessário para o usecase em questão.

Após essa introdução, vamos começar a brincar com o NestJS.
A primeira coisa que deve-se verificar é se o NodeJS e o npm está instalado em sua máquina, para verificar, abre o terminal e execute o comando abaixo:

node --version && npm --version

Caso não esteja, a instalação é fácil e pode ser feita usando homebrew, ou usando o NodeJS org.

Sendo assim, o próximo passo é instalar o NestJS-CLI, que é facilmente instalado utilizando o comando

$ npm i -g @nestjs/cli

Após a instalação ser feita, o próximo e tão esperado passo é começar o projeto.

Não irei descrever a fundo a estrutura do projeto, pois iremos fazer isso conforme formos desenvolvendo o projeto, mas para iniciar um novo projeto no NestJS basta executar o comando:

nest new <projet_name>

O projeto que será desenvolvido será baseado no desafio da Pagar.me, com algumas adaptações para deixá-lo mais completo
https://github.com/pagarme/vagas/blob/master/desafios/software-engineer-backend/README.md.

Este está começando a ficar muito extenso, então para finalizá-lo, vamos discorrer um pouco sobre o projeto, os principais cenários, e posteriormente, a parte mais divertida que é programar.

Em sua essência um PSP tem duas funções muito importantes:
Permitir que nossos clientes processem transações ("cash-in")
Efetuar os pagamentos dos recebíveis para os nossos clientes ("cash-out")

Então já conseguimos verificar algumas ações e personas que serão parte do nosso projeto. Temos a persona cliente, que neste caso realizará a ação de pagar/transacionar algum valor, ou ainda este cliente é possível ter um valor a receber, devemos então ter um módulo de clientes, ao qual será possível realizar as operações básicas de inserção/remoção... E relacionar este cliente com as ações de transactions ou payables.

Sendo assim, vamos começar pensando nesta estrutura dos clientes. O nest-cli nos ajuda muito com diversos scaffold, sendo assim é muito prático executar o comando,
nest g resource client
Com este comando, será criada a seguinte estrutura:

Image description

Este artigo tem ficado muito extenso, e já não sei se alguém chegou até aqui, sendo assim, vamos encerrar por agora este artigo, e continuar em outro com a implementação do módulo de clientes.

Top comments (0)