<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: João Pedro Rubira Crulhas</title>
    <description>The latest articles on DEV Community by João Pedro Rubira Crulhas (@joaocrulhas).</description>
    <link>https://dev.to/joaocrulhas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F217150%2Fd3221205-8c34-46cd-8182-dc523a4462d6.png</url>
      <title>DEV Community: João Pedro Rubira Crulhas</title>
      <link>https://dev.to/joaocrulhas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joaocrulhas"/>
    <language>en</language>
    <item>
      <title>NestJS - Aprendendo do zero</title>
      <dc:creator>João Pedro Rubira Crulhas</dc:creator>
      <pubDate>Sun, 16 Jul 2023 08:27:20 +0000</pubDate>
      <link>https://dev.to/joaocrulhas/nestjs-aprendendo-do-zero-2hic</link>
      <guid>https://dev.to/joaocrulhas/nestjs-aprendendo-do-zero-2hic</guid>
      <description>&lt;p&gt;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".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qXi4LD5X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmx5z59j2f9rnhptvafr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qXi4LD5X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmx5z59j2f9rnhptvafr.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A primeira coisa que devemos entender é o &lt;em&gt;O que é o NestJS?&lt;/em&gt;, &lt;em&gt;Quais as vantagens de utilizá-lo?&lt;/em&gt; 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 &lt;a href="https://docs.nestjs.com/"&gt;documentação&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Vamos analisar a primeira frase &lt;strong&gt;"Nest (NestJS) is a framework for building efficient, scalable Node.js server-side applications"&lt;/strong&gt; 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 é &lt;strong&gt;efficient&lt;/strong&gt;, sendo assim, o NestJS já se vende muito bem logo em sua primeira frase. &lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;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 &lt;a href="https://github.com/nestjs/nest"&gt;github&lt;/a&gt; terá mais de 58k de estrelas no repositório e mais de 7K Forks.&lt;/p&gt;

&lt;p&gt;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 &lt;em&gt;usecase&lt;/em&gt; em questão. &lt;/p&gt;

&lt;p&gt;Após essa introdução, vamos começar a brincar com o NestJS. &lt;br&gt;
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: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;node --version &amp;amp;&amp;amp; npm --version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Caso não esteja, a instalação é fácil e pode ser feita usando &lt;a href="https://formulae.brew.sh/formula/node"&gt;homebrew&lt;/a&gt;, ou usando o &lt;a href="https://nodejs.org/en"&gt;NodeJS org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sendo assim, o próximo passo é instalar o NestJS-CLI, que é facilmente instalado utilizando o comando &lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ npm i -g @nestjs/cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Após a instalação ser feita, o próximo e tão esperado passo é começar o projeto.&lt;/p&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nest new &amp;lt;projet_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;O projeto que será desenvolvido será baseado no desafio da Pagar.me, com algumas adaptações para deixá-lo mais completo&lt;br&gt;
&lt;a href="https://dev.tolink%20para%20o%20desafio"&gt;https://github.com/pagarme/vagas/blob/master/desafios/software-engineer-backend/README.md&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;p&gt;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 &lt;em&gt;transactions ou payables&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;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, &lt;br&gt;
&lt;code&gt;nest g resource client&lt;/code&gt;&lt;br&gt;
Com este comando, será criada a seguinte estrutura:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--doiD3MW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yoc45o2njmonvo02afd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--doiD3MW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yoc45o2njmonvo02afd4.png" alt="Image description" width="275" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>teste</title>
      <dc:creator>João Pedro Rubira Crulhas</dc:creator>
      <pubDate>Fri, 17 Apr 2020 12:15:59 +0000</pubDate>
      <link>https://dev.to/joaocrulhas/teste-4421</link>
      <guid>https://dev.to/joaocrulhas/teste-4421</guid>
      <description>&lt;p&gt;Medicines(SMS) to old people&lt;/p&gt;

&lt;p&gt;In this project, I'll create a platform to send SMS to older people that need some specific medicines and with the problem because COVID-19, it's not a good idea older people walk around pharmacies to try to find some medicines or specific medical things.&lt;/p&gt;

&lt;p&gt;The idea is, older people put two contacts (Email, mobile phone, and address) and choose some medicines that he needs.&lt;/p&gt;

&lt;p&gt;After this, all pharmacies have a backoffice to see in the city, what the older people need and can send an SMS to notify the person.&lt;/p&gt;

&lt;p&gt;Stack:&lt;br&gt;
Backend - AdonisJS (API REST)&lt;br&gt;
Database - MySQL&lt;br&gt;
Frontend - VueJS or NuxtJS&lt;/p&gt;

&lt;p&gt;Best regards.&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
    </item>
    <item>
      <title>[COVID-19] SMS to old people</title>
      <dc:creator>João Pedro Rubira Crulhas</dc:creator>
      <pubDate>Tue, 07 Apr 2020 02:01:45 +0000</pubDate>
      <link>https://dev.to/joaocrulhas/covid-19-sms-to-old-people-4ke1</link>
      <guid>https://dev.to/joaocrulhas/covid-19-sms-to-old-people-4ke1</guid>
      <description>&lt;p&gt;Medicines(SMS) to old people&lt;/p&gt;

&lt;p&gt;In this project, I'll create a platform to send SMS to older people that need some specific medicines and with the problem because COVID-19, it's not a good idea older people walk around pharmacies to try to find some medicines or specific medical things.&lt;/p&gt;

&lt;p&gt;The idea is, older people put two contacts (Email, mobile phone, and address) and choose some medicines that he needs.&lt;/p&gt;

&lt;p&gt;After this, all pharmacies have a backoffice to see in the city, what the older people need and can send an SMS to notify the person.&lt;/p&gt;

&lt;p&gt;Stack:&lt;br&gt;
Backend - AdonisJS (API REST)&lt;br&gt;
Database - MySQL&lt;br&gt;
Frontend - VueJS or NuxtJS&lt;/p&gt;

&lt;p&gt;Best regards.&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>adonisjs</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
