<?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: Marcio Vinicius</title>
    <description>The latest articles on DEV Community by Marcio Vinicius (@_devzin).</description>
    <link>https://dev.to/_devzin</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1300817%2F6ddf99c4-a2b0-438a-b116-6c31766e0c60.jpeg</url>
      <title>DEV Community: Marcio Vinicius</title>
      <link>https://dev.to/_devzin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_devzin"/>
    <language>en</language>
    <item>
      <title>Parte 2: Resolvendo o Desafio Técnico de Backend do PicPay</title>
      <dc:creator>Marcio Vinicius</dc:creator>
      <pubDate>Sun, 23 Aug 2026 14:36:13 +0000</pubDate>
      <link>https://dev.to/_devzin/parte-2-resolvendo-o-desafio-tecnico-de-backend-do-picpay-4621</link>
      <guid>https://dev.to/_devzin/parte-2-resolvendo-o-desafio-tecnico-de-backend-do-picpay-4621</guid>
      <description>&lt;p&gt;Iniciando o projeto. Pra iniciar o projeto, use o comando&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm init -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que usaremos o docker para o banco?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ao inves de instalar o postgres na nossa maquina(é um inferno instalar isso), a gente subimos ele pra dentro de um &lt;strong&gt;container&lt;/strong&gt;, um ambiente isolado, facil de criar e destruir, e o melhor, ja vem tudo configurado kaka. &lt;/p&gt;

&lt;p&gt;O arquivo que vamos criar é o &lt;strong&gt;docker-compose.yml&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Esse arquivo vai descrever os "serviços" que vamos rodar, que por enquanto é so o banco. Esse arquivo fica na raiz do projeto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;docker run:&lt;/strong&gt;&lt;br&gt;
Você quer subir um container do Postgres. Com docker run, você precisaria digitar um comando gigante toda vez, tipo:&lt;br&gt;
&lt;code&gt;docker run -d --name meu-postgres -e POSTGRES_PASSWORD=123 -e POSTGRES_DB=picpay -p 5432:5432 postgres&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Funciona? funciona, mas é chato e facil de errar, sem contar que nao escala quando tu tem varios containers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;docker compose:&lt;/strong&gt;&lt;br&gt;
ele ja resolve isso. Quando tu escreve o arquivo docker-compose.yml descrevendo o que voce quer rodar, e o Docker ele cuida de criar/subir parar tudo com um unico comando.&lt;/p&gt;

&lt;p&gt;vamos colocar nele só o serviço do banco de dados Postgres. Pra isso, precisamos definir:&lt;/p&gt;

&lt;p&gt;-Qual imagem usar (a "base" do container, no caso, postgres)&lt;br&gt;
-Variáveis de ambiente (usuário, senha, nome do banco  o Postgres usa isso pra se configurar sozinho na primeira vez que sobe)&lt;br&gt;
-Porta (pra você conseguir acessar o banco de fora do container, tipo pelo Prisma)&lt;br&gt;
-Volume (pra os dados não sumirem quando você reiniciar o container)&lt;/p&gt;

&lt;p&gt;vamos criar o docker-compose.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgres:16&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;picpay_db&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;POSTGRES_USER&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;picpay&lt;/span&gt;
      &lt;span class="na"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;picpay123&lt;/span&gt;
      &lt;span class="na"&gt;POSTGRES_DB&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;picpay_simplificado&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;5432:5432"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;db_data:/var/lib/postgresql/data&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;db_data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;services:&lt;/strong&gt; Lista dos "programas" que vamos rodar. Por enquanto só um: o banco.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;db:&lt;/strong&gt; Nome que você escolheu pra esse serviço (podia ser qualquer nome, tipo banco ou postgres). Vamos usar esse nome depois pra referenciar o banco.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;image: postgres:16&lt;/strong&gt; Diz "use a imagem oficial do Postgres, versão 16" — o Docker baixa isso automaticamente do Docker Hub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;container_name: picpay_db&lt;/strong&gt; Nome do container quando você rodar docker ps — só facilita identificar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;restart: always&lt;/strong&gt; Se o container cair ou você reiniciar o PC, ele sobe de novo sozinho.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;environment:&lt;/strong&gt; Variáveis que o Postgres lê na primeira inicialização pra se auto-configurar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;POSTGRES_USER/PASSWORD/DB&lt;/strong&gt; Usuário, senha e nome do banco que serão criados automaticamente. Guarda esses valores, vamos usar no .env do Prisma daqui a pouco.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ports:&lt;/strong&gt; "5432:5432" Formato porta_da_sua_máquina:porta_do_container. Isso permite você (ou o Prisma) acessar o banco em localhost:5432.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;volumes:&lt;/strong&gt; (dentro de db) Liga uma pasta dentro do container a um "volume" gerenciado pelo Docker, pra não perder os dados quando o container for recriado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;volumes:&lt;/strong&gt; (no final, fora de db) Declaração do volume db_data que foi referenciado acima — é o Docker que cuida de onde isso fica salvo de verdade.&lt;/p&gt;

&lt;p&gt;Vamos subir tudo isso para o banco.&lt;/p&gt;

&lt;p&gt;Crie o arquivo docker-compose.yml na raiz do projeto, na mesma pasta onde fica o package.json.&lt;br&gt;
Depois rode:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker compose up -d&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;docker compose up → lê o docker-compose.yml e sobe os serviços descritos nele&lt;/p&gt;

&lt;p&gt;-d → "detached", ou seja, roda em segundo plano&lt;/p&gt;

&lt;p&gt;Por hoje é so isso, te vejo na proxima!&lt;/p&gt;

</description>
      <category>backend</category>
      <category>docker</category>
      <category>postgres</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Parte 1: Resolvendo o Desafio Técnico de Backend do PicPay</title>
      <dc:creator>Marcio Vinicius</dc:creator>
      <pubDate>Sun, 23 Aug 2026 14:12:18 +0000</pubDate>
      <link>https://dev.to/_devzin/parte-1-resolvendo-o-desafio-tecnico-de-backend-do-picpay-4lei</link>
      <guid>https://dev.to/_devzin/parte-1-resolvendo-o-desafio-tecnico-de-backend-do-picpay-4lei</guid>
      <description>&lt;p&gt;Olá, tudo bem com vocês? &lt;/p&gt;

&lt;p&gt;Sou desenvolvedor fullstack, estava vendo algumas coisas pra fazer para treinar meus conhecimentos em desenvolvimento backend, vi um desafio do picpay e decidi fazer ele.&lt;/p&gt;

&lt;p&gt;O desafio é simples, mas é muito bom pra quem quer praticar. Decidi ensinar a fazer ele do zero. Usarei JavaScript para resolver.&lt;/p&gt;

&lt;p&gt;Pra começar a resolver o desafio, é necessario que você tenha o Node instalado na sua maquina, e o docker. &lt;/p&gt;

&lt;p&gt;node: &lt;a href="https://nodejs.org/pt-br/download" rel="noopener noreferrer"&gt;https://nodejs.org/pt-br/download&lt;/a&gt;&lt;br&gt;
docker: &lt;a href="https://www-digitalocean-com.translate.goog/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04?_x_tr_sl=en&amp;amp;_x_tr_tl=pt&amp;amp;_x_tr_hl=pt&amp;amp;_x_tr_pto=tc&amp;amp;_x_tr_hist=" rel="noopener noreferrer"&gt;https://www-digitalocean-com.translate.goog/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04?_x_tr_sl=en&amp;amp;_x_tr_tl=pt&amp;amp;_x_tr_hl=pt&amp;amp;_x_tr_pto=tc&amp;amp;_x_tr_hist=&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vou dividir em algumas partes, pra não ficar muita coisa em um unico post. Te vejo no proximo!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>fullstack</category>
      <category>node</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
