<?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>Forem: Caio</title>
    <description>The latest articles on Forem by Caio (@doccaio).</description>
    <link>https://forem.com/doccaio</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%2F1058751%2F9c21e576-6d8e-4ddc-bc9f-c7bd423f3af9.png</url>
      <title>Forem: Caio</title>
      <link>https://forem.com/doccaio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/doccaio"/>
    <language>en</language>
    <item>
      <title>Why study Node.js?</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Sun, 29 Mar 2026 12:28:57 +0000</pubDate>
      <link>https://forem.com/doccaio/why-study-nodejs-1min</link>
      <guid>https://forem.com/doccaio/why-study-nodejs-1min</guid>
      <description>&lt;p&gt;&lt;strong&gt;Why Study Node.js? 🚀&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're entering the world of development or want to grow as a programmer, studying &lt;strong&gt;Node.js&lt;/strong&gt; can be one of the most strategic decisions for your career. But why? Let’s break it down.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ JavaScript Everywhere
&lt;/h3&gt;

&lt;p&gt;With Node.js, you can use &lt;strong&gt;JavaScript on both the front-end and back-end&lt;/strong&gt;. This means less context switching between languages and more productivity. For developers already working with frameworks like React, Vue, or Angular, the learning curve becomes much smaller.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Huge Ecosystem (NPM)
&lt;/h3&gt;

&lt;p&gt;Node.js has one of the largest ecosystems in the development world: &lt;strong&gt;npm&lt;/strong&gt;. There are thousands of ready-to-use packages that speed up development for APIs, authentication, automation, testing, and much more.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ High Performance for Modern Applications
&lt;/h3&gt;

&lt;p&gt;Node.js uses an &lt;strong&gt;asynchronous and event-driven model&lt;/strong&gt;, allowing it to handle many simultaneous requests efficiently. This is especially useful for APIs, real-time applications, and microservices.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Strong Market Demand
&lt;/h3&gt;

&lt;p&gt;Many large companies use Node.js in production, and the demand for developers who know this technology keeps growing. Learning Node.js can open more opportunities for jobs and projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  5️⃣ Perfect for APIs and Real-Time Applications
&lt;/h3&gt;

&lt;p&gt;If you want to build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST APIs&lt;/li&gt;
&lt;li&gt;WebSocket applications&lt;/li&gt;
&lt;li&gt;real-time chats&lt;/li&gt;
&lt;li&gt;scalable systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Node.js is one of the best choices.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 Conclusion
&lt;/h3&gt;

&lt;p&gt;Studying Node.js is not just about learning a technology — it's about entering the &lt;strong&gt;modern JavaScript ecosystem&lt;/strong&gt;. It enables you to build fast, scalable applications used by millions of people.&lt;/p&gt;

&lt;p&gt;If you want to become a more complete developer, &lt;strong&gt;Node.js is an excellent next step&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;💬 Do you already use Node.js or are you planning to learn it? Share your experience!&lt;/p&gt;

&lt;p&gt;Sorce: &lt;a href="https://www.dio.me/articles/a-ascensao-do-javascript-no-backend-o-impacto-do-nodejs-2b5cef9af1eb" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>backend</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Porque estudar node.js</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Sun, 29 Mar 2026 12:28:27 +0000</pubDate>
      <link>https://forem.com/doccaio/porque-estudar-nodejs-5284</link>
      <guid>https://forem.com/doccaio/porque-estudar-nodejs-5284</guid>
      <description>&lt;p&gt;&lt;strong&gt;Por que estudar Node.js? 🚀&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se você está entrando no mundo do desenvolvimento ou quer evoluir como programador, estudar &lt;strong&gt;Node.js&lt;/strong&gt; pode ser uma das decisões mais estratégicas da sua carreira. Mas por quê? Vamos entender.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ JavaScript em todo lugar
&lt;/h3&gt;

&lt;p&gt;Com Node.js você usa &lt;strong&gt;JavaScript tanto no front-end quanto no back-end&lt;/strong&gt;. Isso significa menos troca de linguagem e mais produtividade. Para quem já trabalha com frameworks como React, Vue ou Angular, a curva de aprendizado fica muito menor.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Grande ecossistema (NPM)
&lt;/h3&gt;

&lt;p&gt;Node.js possui um dos maiores ecossistemas do mundo de desenvolvimento: o &lt;strong&gt;npm&lt;/strong&gt;. Existem milhares de pacotes prontos que aceleram o desenvolvimento de APIs, autenticação, automação, testes e muito mais.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Alta performance para aplicações modernas
&lt;/h3&gt;

&lt;p&gt;Node.js utiliza um &lt;strong&gt;modelo assíncrono e orientado a eventos&lt;/strong&gt;, permitindo lidar com muitas requisições simultâneas com excelente desempenho — algo muito útil para APIs, aplicações em tempo real e microserviços.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Muito usado no mercado
&lt;/h3&gt;

&lt;p&gt;Grandes empresas utilizam Node.js em produção, e a demanda por desenvolvedores que dominam essa tecnologia continua crescendo. Estudar Node.js aumenta suas oportunidades de trabalho e projetos.&lt;/p&gt;

&lt;h3&gt;
  
  
  5️⃣ Perfeito para APIs e aplicações em tempo real
&lt;/h3&gt;

&lt;p&gt;Se você quer criar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs REST&lt;/li&gt;
&lt;li&gt;aplicações com WebSocket&lt;/li&gt;
&lt;li&gt;chats em tempo real&lt;/li&gt;
&lt;li&gt;sistemas escaláveis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Node.js é uma das melhores opções.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 Conclusão
&lt;/h3&gt;

&lt;p&gt;Estudar Node.js não é apenas aprender uma tecnologia, mas entrar em um &lt;strong&gt;ecossistema poderoso do JavaScript moderno&lt;/strong&gt;. Ele permite construir aplicações rápidas, escaláveis e usadas por milhões de pessoas.&lt;/p&gt;

&lt;p&gt;Se você quer se tornar um desenvolvedor mais completo, &lt;strong&gt;Node.js é um excelente próximo passo&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;💬 Você já usa Node.js ou está pensando em aprender? Compartilha sua experiência!&lt;/p&gt;

&lt;p&gt;Fonte: &lt;a href="https://www.dio.me/articles/a-ascensao-do-javascript-no-backend-o-impacto-do-nodejs-2b5cef9af1eb" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>backend</category>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tipo da Licença (qual licença usar e porque?)</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Fri, 13 Feb 2026 12:42:01 +0000</pubDate>
      <link>https://forem.com/doccaio/tipo-da-licenca-qual-licenca-usar-e-porque-4pm5</link>
      <guid>https://forem.com/doccaio/tipo-da-licenca-qual-licenca-usar-e-porque-4pm5</guid>
      <description>&lt;p&gt;Escolher a licença certa para o seu repositório no GitHub é como escolher as regras de um jogo: ela define quem pode jogar, como pode jogar e se pode levar o tabuleiro para casa. Sem uma licença, o seu código cai automaticamente sob a lei de direitos autorais padrão ("todos os direitos reservados"), o que ironicamente impede que outras pessoas contribuam ou usem seu projeto legalmente.&lt;/p&gt;

&lt;p&gt;Aqui está um guia prático para ajudar você a decidir qual licença usar e por quê.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Por que a licença é fundamental?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No mundo Open Source, a licença é o que diferencia "código público" de "software livre". Ela serve para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Proteger você: Isenta o autor de responsabilidade (garantia) caso o código cause problemas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dar permissão: Autoriza explicitamente o uso, modificação e distribuição.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Definir limites: Estabelece se o código pode ser usado em projetos comerciais ou se as modificações devem ser abertas também.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Os Tipos Mais Comuns de Licença&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Podemos dividir as licenças em duas grandes categorias: Permissivas e Copyleft.&lt;/p&gt;

&lt;p&gt;Licenças Permissivas (Liberdade Total)&lt;br&gt;
Focam na simplicidade. Você permite que façam quase tudo com seu código, desde que deem os créditos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MIT: A queridinha do GitHub. É curtíssima e diz: "Faça o que quiser, só não me processe e mantenha meu nome nos créditos". É ideal para bibliotecas que você quer que todos usem, inclusive empresas em produtos fechados.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apache 2.0: Semelhante à MIT, mas oferece proteção extra sobre patentes. É a escolha padrão para grandes projetos corporativos (como o Android).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Licenças Copyleft (Reciprocidade)&lt;br&gt;
Focam na preservação da liberdade do software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Comparativo Rápido&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq9bboo2b5ni2py869wrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq9bboo2b5ni2py869wrv.png" alt=" " width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Qual escolher? (O Guia de Decisão)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;"Quero que seja o mais simples possível": Vá de MIT.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Quero que meu código seja usado por empresas sem medo de processos": Vá de Apache 2.0.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3."Quero garantir que quem melhorar meu código compartilhe essas melhorias": Vá de GPLv3.&lt;/p&gt;

&lt;p&gt;4."Não me importo com nada, faça o que quiser": Use Unlicense (Domínio Público).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhj9dpqsferlix9f0sfds.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhj9dpqsferlix9f0sfds.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dica de Ouro: Como aplicar no GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O GitHub facilita muito esse processo. Ao criar um repositório ou adicionar um arquivo novo chamado &lt;code&gt;LICENSE&lt;/code&gt;, ele oferece um seletor com resumos de cada licença.&lt;/p&gt;

&lt;p&gt;Lembre-se: Escolher uma licença não é apenas burocracia, é uma declaração de intenção sobre o futuro da sua comunidade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fonte:&lt;/strong&gt; &lt;a href="https://github.com/filipedeschamps/tabnews.com.br/issues/64" rel="noopener noreferrer"&gt;Guia&lt;/a&gt;&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>git</category>
      <category>productivity</category>
    </item>
    <item>
      <title>License Type (which license to use and why?)</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Fri, 13 Feb 2026 12:40:37 +0000</pubDate>
      <link>https://forem.com/doccaio/license-type-which-license-to-use-and-why-5f0</link>
      <guid>https://forem.com/doccaio/license-type-which-license-to-use-and-why-5f0</guid>
      <description>&lt;p&gt;Choosing the right license for your GitHub repository is like choosing the rules of a game: it defines who can play, how they can play, and if they can take the board home. Without a license, your code automatically falls under standard copyright law ("all rights reserved"), which ironically prevents others from legally contributing to or using your project.&lt;/p&gt;

&lt;p&gt;Here is a practical guide to help you decide which license to use and why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Why is a license fundamental?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the Open Source world, a license is what differentiates "public code" from "free software." It serves to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Protect you: It exempts the author from liability (warranty) in case the code causes issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Grant permission: It explicitly authorizes the use, modification, and distribution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set limits: It establishes whether the code can be used in commercial projects or if modifications must also be kept open.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Choosing the right license for your GitHub repository is like choosing the rules of a game: it defines who can play, how they can play, and if they can take the board home. Without a license, your code automatically falls under standard copyright law ("all rights reserved"), which ironically prevents others from legally contributing to or using your project.&lt;/p&gt;

&lt;p&gt;Here is a practical guide to help you decide which license to use and why.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why is a license fundamental?
In the Open Source world, a license is what differentiates "public code" from "free software." It serves to:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Protect you: It exempts the author from liability (warranty) in case the code causes issues.&lt;/p&gt;

&lt;p&gt;Grant permission: It explicitly authorizes the use, modification, and distribution.&lt;/p&gt;

&lt;p&gt;Set limits: It establishes whether the code can be used in commercial projects or if modifications must also be kept open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Most Common License Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can divide licenses into two major categories: Permissive and Copyleft.&lt;/p&gt;

&lt;p&gt;Permissive Licenses (Total Freedom)&lt;br&gt;
These focus on simplicity. You allow others to do almost anything with your code, as long as they give you credit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MIT: The darling of GitHub. It’s extremely short and says: "Do whatever you want, just don't sue me and keep my name in the credits." It is ideal for libraries that you want everyone to use, including companies in closed-source products.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apache 2.0: Similar to MIT, but offers extra protection regarding patents. It is the default choice for large corporate projects (like Android).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Copyleft Licenses (Reciprocity)&lt;br&gt;
These focus on preserving software freedom.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPLv3: If someone modifies your code and distributes it, they must release those modifications under the same license. This ensures the software stays free forever.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Quick Comparison&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8fqas5rs31husl6jynqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8fqas5rs31husl6jynqe.png" alt=" " width="600" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Which one to choose? (Decision Guide)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;"I want it to be as simple as possible": Go with MIT.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"I want my code used by companies without fear of lawsuits": Go with Apache 2.0.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"I want to ensure that whoever improves my code shares those improvements": Go with GPLv3.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"I don't care about anything, do whatever you want": Use Unlicense (Public Domain).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhac08782mswmjqoljbly.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhac08782mswmjqoljbly.png" alt=" " width="601" height="1318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Golden Tip: How to apply it on GitHub&lt;/p&gt;

&lt;p&gt;GitHub makes this process very easy. When creating a repository or adding a new file named &lt;code&gt;LICENSE&lt;/code&gt;, it offers a selector with summaries of each license.&lt;/p&gt;

&lt;p&gt;Remember: Choosing a license is not just bureaucracy; it is a statement of intent about the future of your community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/filipedeschamps/tabnews.com.br/issues/64" rel="noopener noreferrer"&gt;Guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why study Java or C#</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Sat, 17 Jan 2026 16:30:28 +0000</pubDate>
      <link>https://forem.com/doccaio/why-study-java-or-c-dog</link>
      <guid>https://forem.com/doccaio/why-study-java-or-c-dog</guid>
      <description>&lt;p&gt;In a world where new languages emerge constantly, deciding where to start or where to migrate your tech career is a challenge. However, if you are looking for stability, high salaries, and robustness, the path almost always leads to two names: Java and C#.&lt;/p&gt;

&lt;p&gt;In this article, we will explore why these languages remain the pillars of modern software development.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Where the Money Is: High Demand&lt;/strong&gt; 💰
&lt;/h3&gt;

&lt;p&gt;Java and C# are not just languages; they are the engines of large corporations. If you use a banking app, shop at a major e-commerce store, or access government systems, there is a massive chance that Java or C# is running the backend.&lt;/p&gt;

&lt;p&gt;Corporate Market: Established companies prefer technologies with long-term support.&lt;/p&gt;

&lt;p&gt;Career: Skilled professionals in these languages are rarely unemployed.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Maturity: The "Fine Wine" of Code&lt;/strong&gt; 🍷
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Both languages have decades of evolution behind them. This means that the problems you encounter today have likely already been solved and documented by someone else.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security: Constant updates to handle modern vulnerabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance: Highly optimized compilers and virtual machines (JVM and CLR).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;The School of Programming: Object-Oriented Programming (OOP)&lt;/strong&gt; 🏗️
&lt;/h3&gt;

&lt;p&gt;If you want to learn to program "the right way," Java and C# are excellent teachers. They force you to understand fundamental concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encapsulation&lt;/li&gt;
&lt;li&gt;Inheritance&lt;/li&gt;
&lt;li&gt;Polymorphism&lt;/li&gt;
&lt;li&gt;Abstraction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mastering these pillars makes it easier to learn almost any other modern language later on.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Gigantic Ecosystems and Powerful Frameworks&lt;/strong&gt; 🛠️
&lt;/h3&gt;

&lt;p&gt;You will never be alone. The available tools are professional-grade:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Java ecosystem: Spring Boot revolutionized the creation of microservices.&lt;/li&gt;
&lt;li&gt;In the C# ecosystem: .NET is a "Swiss Army Knife" solution for web, desktop, mobile, and even games.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Versatility: From Mobile Apps to AAA Games&lt;/strong&gt; 🎮
&lt;/h3&gt;

&lt;p&gt;The choice between one or the other may depend on your ultimate goal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java: A leader in complex backend systems and the foundation of native Android development.&lt;/li&gt;
&lt;li&gt;C#: Dominates Windows development, corporate web with ASP.NET, and is the official language of Unity, the largest game engine in the world.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;A Great Choice for Beginners&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Despite being powerful languages, Java and C# have clear, well-structured syntax, which facilitates learning. They help students develop good programming practices from the start, such as code organization and the correct use of design patterns.&lt;/p&gt;

&lt;p&gt;Which one to choose? 🤔&lt;br&gt;
The truth is that both are very similar in terms of syntax and power. The choice usually comes down to:&lt;/p&gt;

&lt;p&gt;Choose Java if you like open ecosystems, want to work in large banks, or the Android world.&lt;/p&gt;

&lt;p&gt;Choose C# if you like integrated tools (Visual Studio), want to develop for the Microsoft ecosystem, or dream of creating games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Studying Java or C# is not just about learning syntax; it’s an investment in a solid foundation that stands the test of time. Regardless of your choice, you will be prepared for the challenges of real-world software development.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>backend</category>
      <category>java</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Porque estudar Java ou C#</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Wed, 14 Jan 2026 16:14:44 +0000</pubDate>
      <link>https://forem.com/doccaio/porque-estudar-java-ou-c-11md</link>
      <guid>https://forem.com/doccaio/porque-estudar-java-ou-c-11md</guid>
      <description>&lt;p&gt;Em um mundo de novas linguagens surgindo a todo momento, decidir por onde começar ou para onde migrar na carreira de tecnologia é um desafio. No entanto, se você busca estabilidade, altos salários e robustez, o caminho quase sempre leva a dois nomes: Java e C#.&lt;/p&gt;

&lt;p&gt;Neste artigo, vamos explorar por que essas linguagens continuam sendo pilares do desenvolvimento de software moderno.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Onde o dinheiro está: Alta demanda&lt;/strong&gt;💰
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Java e C# não são apenas linguagens; são os motores das grandes corporações. Se você utiliza um aplicativo bancário, faz compras em um grande e-commerce ou acessa sistemas governamentais, há uma chance enorme de haver Java ou C# no backend.&lt;/li&gt;
&lt;li&gt;Mercado Corporativo: Empresas consolidadas preferem tecnologias com suporte de longo prazo.&lt;/li&gt;
&lt;li&gt;Carreira: Profissionais qualificados nessas linguagens raramente ficam desempregados.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Maturidade: O "Vinho Fino" do Código&lt;/strong&gt; 🍷
&lt;/h3&gt;

&lt;p&gt;Ambas as linguagens possuem décadas de evolução. Isso significa que os problemas que você encontrar hoje provavelmente já foram resolvidos e documentados por alguém.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Segurança: Atualizações constantes para lidar com vulnerabilidades modernas.&lt;/li&gt;
&lt;li&gt;Performance: Compiladores e máquinas virtuais (JVM e CLR) extremamente otimizados.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;A Escola da Programação: Orientação a Objetos (POO)&lt;/strong&gt; 🏗️
&lt;/h3&gt;

&lt;p&gt;Se você quer aprender a programar direito, Java e C# são excelentes professoras. Elas forçam você a entender conceitos fundamentais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encapsulamento&lt;/li&gt;
&lt;li&gt;Herança&lt;/li&gt;
&lt;li&gt;Polimorfismo&lt;/li&gt;
&lt;li&gt;Abstração&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dominar esses pilares facilita o aprendizado de quase qualquer outra linguagem moderna posteriormente.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Ecossistemas Gigantescos e Frameworks Poderosos&lt;/strong&gt; 🛠️
&lt;/h3&gt;

&lt;p&gt;Você nunca estará sozinho. As ferramentas disponíveis são de nível profissional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No ecossistema Java: O Spring Boot revolucionou a criação de microsserviços.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No ecossistema C#: O .NET é uma solução "canivete suíço" para web, desktop, mobile e até jogos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Versatilidade: De Apps de Celular a Jogos AAA&lt;/strong&gt; 🎮
&lt;/h3&gt;

&lt;p&gt;A escolha entre uma ou outra pode depender do seu objetivo final:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java: Líder em sistemas backend complexos e a base do desenvolvimento Android nativo.&lt;/li&gt;
&lt;li&gt;C#: Domina o desenvolvimento Windows, web corporativa com ASP.NET e é a linguagem oficial da Unity, a maior engine de jogos do mundo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;Boa escolha para iniciantes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Apesar de serem linguagens poderosas, Java e C# possuem sintaxe clara e bem estruturada, o que facilita o aprendizado. Elas ajudam o estudante a desenvolver boas práticas de programação desde o início, como organização de código e uso correto de padrões de projeto.&lt;/p&gt;

&lt;p&gt;Qual escolher? 🤔&lt;br&gt;
A verdade é que as duas são muito parecidas em sintaxe e poder. A escolha geralmente se resume a:&lt;/p&gt;

&lt;p&gt;Escolha Java se você gosta de ecossistemas abertos, quer trabalhar em grandes bancos ou no mundo Android.&lt;/p&gt;

&lt;p&gt;Escolha C# se você gosta de ferramentas integradas (Visual Studio), quer desenvolver para o ecossistema Microsoft ou sonha em criar jogos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusão&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Estudar Java ou C# não é apenas aprender uma sintaxe; é investir em uma base sólida que resiste ao tempo. Independentemente da sua escolha, você estará preparado para os desafios do desenvolvimento de software real.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>braziliandevs</category>
      <category>java</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Data package</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Sat, 01 Nov 2025 12:43:10 +0000</pubDate>
      <link>https://forem.com/doccaio/data-package-3hcg</link>
      <guid>https://forem.com/doccaio/data-package-3hcg</guid>
      <description>&lt;p&gt;Just like me, many people use these package managers, but often we don't know the differences and advantages of each one. In this article, I hope to clarify those distinctions.&lt;br&gt;
Comparing &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt;, and &lt;code&gt;pnpm&lt;/code&gt;: Differences in Package Management for &lt;code&gt;Node.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;JavaScript&lt;/code&gt; ecosystem, package management is a crucial part of the development workflow. Tools like npm, &lt;code&gt;Yarn&lt;/code&gt;, and pnpm are widely used to simplify the installation, management, and maintenance of project dependencies. Each of these tools has its own features, advantages, and disadvantages, offering different approaches to solving common problems in &lt;code&gt;JavaScript&lt;/code&gt; development.&lt;/p&gt;

&lt;p&gt;Let’s explore the main differences between &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt;, and &lt;code&gt;pnpm&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;(Node Package Manager)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;npm&lt;/code&gt; is the default package manager for &lt;code&gt;Node.js&lt;/code&gt;. It was released in 2010 and is used by millions of developers worldwide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Part of &lt;code&gt;Node.js&lt;/code&gt;: &lt;code&gt;npm&lt;/code&gt; comes bundled with &lt;code&gt;Node.js&lt;/code&gt; and is available by default.&lt;/p&gt;

&lt;p&gt;Command Line Interface (CLI): The CLI is simple and easy to use, with commands like &lt;code&gt;npm install&lt;/code&gt;, &lt;code&gt;npm update&lt;/code&gt;, &lt;code&gt;npm uninstall&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Package registry: npm uses the &lt;code&gt;npm&lt;/code&gt; registry — a central repository for public and private packages.&lt;/p&gt;

&lt;p&gt;Dependencies in &lt;code&gt;node_modules&lt;/code&gt;: It installs dependencies directly into the &lt;code&gt;node_modules&lt;/code&gt; folder, which can lead to deep directory structures, especially with many transitive dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Popularity and support: As the official tool, npm has the largest user base and package registry.&lt;/p&gt;

&lt;p&gt;Ease of use: The CLI is straightforward with extensive documentation and support across platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Performance: Older versions of npm had performance issues and dependency duplication. Since &lt;code&gt;npm v5&lt;/code&gt;, performance has improved significantly, but it still lags behind other tools in some scenarios.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Yarn&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;Yarn&lt;/code&gt;was released in 2016 by the Facebook team to address some of the challenges developers faced with &lt;code&gt;npm&lt;/code&gt;, particularly around speed and installation consistency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Local caching: &lt;code&gt;Yarn&lt;/code&gt; caches packages locally, meaning it can install dependencies faster after the first download.&lt;/p&gt;

&lt;p&gt;Deterministic installs: Uses a &lt;code&gt;yarn.lock&lt;/code&gt; file to ensure the same versions of dependencies are installed across all environments.&lt;/p&gt;

&lt;p&gt;Parallel installations: Installs packages in parallel, which improves speed for larger projects.&lt;/p&gt;

&lt;p&gt;Command syntax: Many commands are similar to npm, but with some differences (e.g., &lt;code&gt;yarn add&lt;/code&gt; vs &lt;code&gt;npm install&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Speed: Thanks to caching and parallelization, &lt;code&gt;Yarn&lt;/code&gt; is faster than npm in many scenarios.&lt;/p&gt;

&lt;p&gt;Determinism: The &lt;code&gt;yarn.lock&lt;/code&gt; file ensures consistent environments across development machines, avoiding the "works on my machine" problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Slower evolution: As &lt;code&gt;npm&lt;/code&gt; has improved significantly, &lt;code&gt;Yarn&lt;/code&gt; has lost some of its edge.&lt;/p&gt;

&lt;p&gt;Dependency duplication: Despite better version handling, it still installs packages in a traditional way inside &lt;code&gt;node_modules&lt;/code&gt;, which can lead to duplicated dependencies.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;pnpm&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;pnpm&lt;/code&gt; is a newer tool that stands out for its unique approach to package management. It was designed to solve performance and storage issues by using a different system than the other two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shared storage with hard links: &lt;code&gt;pnpm&lt;/code&gt; uses a shared global store with hard links to the project directory, which saves disk space and avoids duplication.&lt;/p&gt;

&lt;p&gt;Fast and efficient: Typically faster than npm and Yarn, especially for large projects, thanks to global caching and linking.&lt;/p&gt;

&lt;p&gt;Deterministic installs: Uses a lockfile (&lt;code&gt;pnpm-lock.yaml&lt;/code&gt;) to ensure consistent dependency versions across environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Space efficiency: Its shared storage model and linking mechanism significantly reduce disk space usage.&lt;/p&gt;

&lt;p&gt;Performance: Extremely fast, especially for large projects with many shared dependencies.&lt;/p&gt;

&lt;p&gt;Precise dependency resolution: Ensures a more accurate dependency tree, reducing version conflicts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compatibility issues: Some packages may not work as expected due to assumptions about traditional &lt;code&gt;node_modules&lt;/code&gt; structure. These issues are rare but can happen.&lt;/p&gt;

&lt;p&gt;Smaller adoption: While growing in popularity, pnpm still has a smaller community compared to npm and &lt;code&gt;Yarn&lt;/code&gt;, which may make it harder to find support for specific problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Each tool has its own strengths and may be the best choice depending on your specific use case:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm&lt;/code&gt;: Ideal for beginners who want a straightforward tool that comes with &lt;code&gt;Node.js&lt;/code&gt;. Its simplicity and widespread adoption are major advantages.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Yarn&lt;/code&gt;: Great for those who need faster and deterministic installations. Its caching and parallelism are beneficial for large projects.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pnpm&lt;/code&gt;: Best suited for large-scale projects or those with many shared dependencies. Its efficient storage and superior performance are key benefits.&lt;/p&gt;

&lt;p&gt;The choice between &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt;, and pnpm depends on your project needs, team preferences, and workflow style. In many cases, performance differences can be a deciding factor, but all three offer the essential features for modern package management.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Sources:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;npm Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Official &lt;code&gt;npm documentation&lt;/code&gt;&lt;br&gt;
– Here you can find details on how to use &lt;code&gt;npm&lt;/code&gt;, the &lt;code&gt;package.json&lt;/code&gt; file, and how dependency resolution works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yarn Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Official &lt;code&gt;Yarn&lt;/code&gt; documentation&lt;br&gt;
– Explains how to configure and use &lt;code&gt;Yarn&lt;/code&gt;, including how &lt;code&gt;yarn.lock&lt;/code&gt; ensures consistency across environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;pnpm Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Official pnpm documentation&lt;br&gt;
– Details how &lt;code&gt;pnpm&lt;/code&gt; resolves dependencies more efficiently through its shared storage system.&lt;/p&gt;

&lt;p&gt;Comparison between &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt;, and &lt;code&gt;pnpm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Comparison article from DigitalOcean&lt;br&gt;
– Explains performance and design differences between the three tools.&lt;/p&gt;

&lt;p&gt;Performance article on &lt;code&gt;pnpm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Smashing Magazine article&lt;br&gt;
– Explores the philosophy and performance benefits of &lt;code&gt;pnpm&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;GitHub Repositories&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/npm/cli" rel="noopener noreferrer"&gt;npm Repository&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/yarnpkg/yarn" rel="noopener noreferrer"&gt;Yarn Repository&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/pnpm/pnpm" rel="noopener noreferrer"&gt;pnpm Repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>node</category>
      <category>npm</category>
    </item>
    <item>
      <title>Pacote de dados</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Wed, 15 Oct 2025 12:39:01 +0000</pubDate>
      <link>https://forem.com/doccaio/pacote-de-dados-52de</link>
      <guid>https://forem.com/doccaio/pacote-de-dados-52de</guid>
      <description>&lt;p&gt;Assim como eu muitos usam esses pacotes de dados mas muitas vezes não sabemos as diferenças e vantagens de cada um, neste artigo espero esclarecer as diferenças.&lt;/p&gt;

&lt;p&gt;Comparando &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt; e &lt;code&gt;pnpm&lt;/code&gt;: Diferenças no Gerenciamento de Pacotes no &lt;code&gt;Node.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;No ecossistema &lt;code&gt;JavaScript&lt;/code&gt;, o gerenciamento de pacotes é uma parte crucial do fluxo de desenvolvimento. Ferramentas como o&lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt; e &lt;code&gt;pnpm&lt;/code&gt; são amplamente usadas para facilitar a instalação, gerenciamento e manutenção de dependências de projetos. Cada uma dessas ferramentas possui suas características, vantagens e desvantagens, oferecendo diferentes abordagens para resolver problemas comuns no desenvolvimento com &lt;code&gt;JavaScript&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A seguir, vamos explorar as principais diferenças entre o npm, Yarn e pnpm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt; (Node Package Manager)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;O &lt;code&gt;npm&lt;/code&gt; é o gerenciador de pacotes padrão do &lt;code&gt;Node.js&lt;/code&gt;. Ele foi lançado em 2010 e é utilizado por milhões de desenvolvedores ao redor do mundo.&lt;/p&gt;

&lt;p&gt;Características principais:&lt;/p&gt;

&lt;p&gt;Faz parte do &lt;code&gt;Node.js&lt;/code&gt;: O &lt;code&gt;npm&lt;/code&gt; é instalado junto com o &lt;code&gt;Node.js&lt;/code&gt; e está disponível por padrão.&lt;/p&gt;

&lt;p&gt;Interface de linha de comando (CLI): A CLI do &lt;code&gt;npm&lt;/code&gt; é simples de usar, com comandos como &lt;code&gt;npm install&lt;/code&gt;, &lt;code&gt;npm update&lt;/code&gt;, &lt;code&gt;npm uninstall&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Registro de pacotes: O &lt;code&gt;npm&lt;/code&gt; usa o &lt;code&gt;npm registry&lt;/code&gt;, um repositório central de pacotes públicos e privados.&lt;/p&gt;

&lt;p&gt;Dependências no &lt;code&gt;node_modules&lt;/code&gt;: Instala as dependências diretamente na pasta &lt;code&gt;node_modules&lt;/code&gt;, o que pode gerar estruturas de diretórios profundas, especialmente quando há muitas dependências transitivas.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Vantagens:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Popularidade e suporte: Sendo a ferramenta oficial, o &lt;code&gt;npm&lt;/code&gt; tem a maior base de usuários e o maior repositório de pacotes.&lt;/p&gt;

&lt;p&gt;Fácil de usar: A CLI é direta e simples, com uma documentação rica e suporte em várias plataformas.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Desvantagens:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Performance: Em versões mais antigas, o &lt;code&gt;npm&lt;/code&gt; tinha problemas de performance e duplicação de dependências. No entanto, a partir do &lt;code&gt;npm v5&lt;/code&gt;, o desempenho melhorou significativamente, mas ainda fica atrás de outras ferramentas em alguns casos.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Yarn&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;O &lt;code&gt;Yarn&lt;/code&gt; foi lançado em 2016 pelo time do Facebook com o objetivo de resolver alguns problemas que os desenvolvedores enfrentavam com o &lt;code&gt;npm&lt;/code&gt;, especialmente relacionados à velocidade e consistência nas instalações.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Características principais:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Cache local: O &lt;code&gt;Yarn&lt;/code&gt; armazena pacotes em cache localmente, o que significa que, após a primeira instalação, o &lt;code&gt;Yarn&lt;/code&gt; pode instalar dependências mais rapidamente, evitando downloads repetidos.&lt;/p&gt;

&lt;p&gt;Instalação determinística: O &lt;code&gt;Yarn&lt;/code&gt; usa um arquivo chamado &lt;code&gt;yarn.lock&lt;/code&gt;, que garante que as mesmas versões de dependências sejam instaladas em todos os ambientes, evitando erros causados por diferenças de versão.&lt;/p&gt;

&lt;p&gt;Paralelização: O &lt;code&gt;Yarn&lt;/code&gt; instala pacotes em paralelo, o que melhora a velocidade de instalação em projetos grandes.&lt;/p&gt;

&lt;p&gt;Semântica de comando: Muitos comandos do &lt;code&gt;Yarn&lt;/code&gt;são semelhantes aos do npm, mas com algumas diferenças (por exemplo, &lt;code&gt;yarn add&lt;/code&gt; em vez de &lt;code&gt;npm install&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Vantagens:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Velocidade: Devido ao cache e ao uso de paralelização, o &lt;code&gt;Yarn&lt;/code&gt;é significativamente mais rápido do que o &lt;code&gt;npm&lt;/code&gt; na instalação de pacotes.&lt;/p&gt;

&lt;p&gt;Determinismo: O uso do arquivo &lt;code&gt;yarn.lock&lt;/code&gt; garante que todos os desenvolvedores em uma equipe estejam utilizando exatamente as mesmas versões de dependências, evitando "works on my machine".&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Desvantagens:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Mudanças e melhorias mais lentas: Como o &lt;code&gt;npm&lt;/code&gt; passou a melhorar muito suas performances nas versões mais recentes, o &lt;code&gt;Yarn&lt;/code&gt; perdeu um pouco do seu diferencial.&lt;/p&gt;

&lt;p&gt;Duplicação de dependências: Embora o &lt;code&gt;Yarn&lt;/code&gt; ajude a evitar problemas de versão, ele ainda instala pacotes de forma mais tradicional no &lt;code&gt;node_modules&lt;/code&gt;, o que pode gerar a duplicação de dependências.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;pnpm&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;pnpm&lt;/code&gt; é uma ferramenta mais recente, mas que tem se destacado pela sua abordagem única de gerenciamento de pacotes. Ele foi projetado para resolver problemas de performance e eficiência de armazenamento, usando um sistema diferente dos outros dois.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Características principais:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Armazenamento compartilhado (hard links): O &lt;code&gt;pnpm&lt;/code&gt; utiliza uma estratégia de armazenamento compartilhado, onde as dependências são armazenadas em um único diretório global e links simbólicos são usados para instalar dependências no projeto. Isso economiza espaço em disco e evita a duplicação de pacotes.&lt;/p&gt;

&lt;p&gt;Rápido e eficiente: O &lt;code&gt;pnpm&lt;/code&gt; é geralmente mais rápido que o &lt;code&gt;npm&lt;/code&gt; e o &lt;code&gt;Yarn&lt;/code&gt;, principalmente em projetos com muitas dependências, graças ao seu uso de links simbólicos e ao cache global.&lt;/p&gt;

&lt;p&gt;Determinismo: Assim como o &lt;code&gt;Yarn&lt;/code&gt;, o &lt;code&gt;pnpm&lt;/code&gt; também utiliza um arquivo de lock (&lt;code&gt;pnpm-lock.yaml&lt;/code&gt;), que garante a instalação consistente de pacotes entre diferentes ambientes de desenvolvimento.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Vantagens:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Eficiência de espaço: Como o &lt;code&gt;pnpm&lt;/code&gt; usa um único diretório global para armazenar pacotes e links simbólicos, ele pode economizar bastante espaço no disco em comparação com o npm e o &lt;code&gt;Yarn&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Desempenho: O &lt;code&gt;pnpm&lt;/code&gt; é extremamente rápido, especialmente em projetos grandes ou quando há muitas dependências compartilhadas.&lt;/p&gt;

&lt;p&gt;Resolução de dependências mais precisa: A abordagem do &lt;code&gt;pnpm&lt;/code&gt; garante que a árvore de dependências seja mais precisa, evitando conflitos de versões.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Desvantagens:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Compatibilidade: O &lt;code&gt;pnpm&lt;/code&gt; pode ter problemas de compatibilidade com alguns pacotes que esperam um modelo tradicional de instalação de pacotes (onde as dependências são diretamente no&lt;code&gt;node_modules&lt;/code&gt;), o que pode gerar erros em casos raros.&lt;/p&gt;

&lt;p&gt;Adoção menor: Embora esteja crescendo em popularidade, o &lt;code&gt;pnpm&lt;/code&gt; ainda não tem a mesma base de usuários do &lt;code&gt;npm&lt;/code&gt; ou &lt;code&gt;Yarn&lt;/code&gt;, o que pode ser um problema se você precisar de suporte ou ajuda para resolver problemas específicos.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusão&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Cada ferramenta tem suas próprias vantagens e pode ser a melhor escolha dependendo do seu caso de uso específico:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm&lt;/code&gt;: Ideal para quem está começando e não quer se preocupar com outras ferramentas, já que vem embutido com o &lt;code&gt;Node.js&lt;/code&gt;. Sua simplicidade e popularidade são seus maiores trunfos.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Yarn&lt;/code&gt;: Ótimo para quem precisa de uma instalação mais rápida e determinística. Seu cache e a paralelização são muito úteis em projetos grandes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pnpm&lt;/code&gt;: Melhor para projetos grandes ou aqueles com muitas dependências compartilhadas. Sua abordagem de armazenamento eficiente e desempenho superior são seus maiores destaques.&lt;/p&gt;

&lt;p&gt;A escolha entre &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt; e &lt;code&gt;pnpm&lt;/code&gt; depende das necessidades do seu projeto, da equipe e do tipo de fluxo de trabalho que você prefere. Em muitos casos, a diferença de performance pode ser um fator decisivo, mas todos oferecem as funcionalidades básicas necessárias para o gerenciamento de pacotes.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Fontes:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;npm Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Documentação oficial do &lt;code&gt;npm&lt;/code&gt;&lt;br&gt;
 – Aqui você pode encontrar detalhes sobre como usar o &lt;code&gt;npm&lt;/code&gt;, o arquivo &lt;code&gt;package.json&lt;/code&gt;, e como ele resolve dependências.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yarn Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Documentação oficial do &lt;code&gt;Yarn&lt;/code&gt;&lt;br&gt;
 – A documentação do &lt;code&gt;Yarn&lt;/code&gt; explica como configurar e usar o &lt;code&gt;Yarn&lt;/code&gt;, incluindo o uso do &lt;code&gt;yarn.lock&lt;/code&gt; para garantir consistência entre os ambientes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;pnpm Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Documentação oficial do &lt;code&gt;pnpm&lt;/code&gt;&lt;br&gt;
 – A documentação do &lt;code&gt;pnpm&lt;/code&gt; detalha como ele resolve dependências de maneira mais eficiente com seu sistema de armazenamento compartilhado.&lt;/p&gt;

&lt;p&gt;Comparação entre &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt; e &lt;code&gt;pnpm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Comparando &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt; e &lt;code&gt;pnpm&lt;/code&gt;&lt;br&gt;
 – Artigo no DigitalOcean explicando as diferenças de desempenho e design entre as três ferramentas.&lt;/p&gt;

&lt;p&gt;Artigo sobre performance do &lt;code&gt;pnpm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A performance do &lt;code&gt;pnpm&lt;/code&gt;&lt;br&gt;
 – Artigo do Smashing Magazine explorando a filosofia e os benefícios de performance do &lt;code&gt;pnpm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artigos qeu usei como fonte&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://luby.com.br/gerenciador-de-pacotes/" rel="noopener noreferrer"&gt;Luby&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.alura.com.br/artigos/npm-vs-yarn?srsltid=AfmBOorl8-Ip_Lu6_EgASoWnTTYdXj5BuojNb3LrKPvvLqbYHethQfjP" rel="noopener noreferrer"&gt;Alura&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;GitHub Repositories&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/npm/cli" rel="noopener noreferrer"&gt;Repositório do npm &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yarnpkg/yarn" rel="noopener noreferrer"&gt;Repositório do Yarn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pnpm/pnpm" rel="noopener noreferrer"&gt;Repositório do pnpm&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>npm</category>
      <category>node</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Commit Patterns</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Fri, 01 Aug 2025 09:56:37 +0000</pubDate>
      <link>https://forem.com/doccaio/commit-patterns-2dep</link>
      <guid>https://forem.com/doccaio/commit-patterns-2dep</guid>
      <description>&lt;p&gt;Commit Patterns are a set of rules and conventions that guide how commit messages are written in version control systems like Git. The primary goal is to make the project history clearer, more organized, and easier to understand for all team members and for the developer themselves in the future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why use Commit Patterns?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Transparency&lt;/code&gt;: Each commit becomes a small story, concisely describing what was changed and why.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Collaboration&lt;/code&gt;: It facilitates understanding of changes by other developers, speeding up code reviews and the integration of new features.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Traceability&lt;/code&gt;: It allows you to quickly locate specific changes, identify bugs, and understand the project's evolution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Automation&lt;/code&gt;: Tools can be configured to automatically generate changelogs (lists of changes), version the software (semantic versioning), and even trigger CI/CD pipelines based on the types of commits.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Code Quality&lt;/code&gt;: Encourages smaller, more focused commits, which generally leads to cleaner and more modular code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Conventional Commits Standard&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most popular and widely adopted standard is Conventional Commits. It proposes a clear and standardized structure for commit messages, typically following this format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;optional&lt;/span&gt; &lt;span class="nx"&gt;scope&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;optional&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;optional&lt;/span&gt; &lt;span class="nf"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Let’s break down each part:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Type (&lt;code&gt;&amp;lt;type&amp;gt;&lt;/code&gt;)&lt;br&gt;
This is the required prefix that indicates the nature of the change. Some of the most common types include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;feat&lt;/code&gt;: A new feature. Example: feat: adds login screen&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;fix&lt;/code&gt;: A bug fix. Example: fix: corrects validation error in signup form&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;docs&lt;/code&gt;: Changes to documentation. Example: docs: updates README with installation instructions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;style&lt;/code&gt;: Changes that don’t affect the meaning of the code (formatting, spacing, etc.). Example: style: formats code structure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;refactor&lt;/code&gt;: Refactoring code that doesn’t add a feature or fix a bug. Example: refactor: restructures authentication components&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;test&lt;/code&gt;: Adding or fixing tests. Example: test: adds unit tests for user service&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;chore&lt;/code&gt;: Changes to build process or auxiliary tools (e.g., updating dependencies, scripts). Example: chore: updates project dependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;perf&lt;/code&gt;: Code changes that improve performance. Example: perf: optimizes product search query&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;build&lt;/code&gt;: Changes that affect the build system or external dependencies (e.g., npm, gulp). Example: build: updates webpack version&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ci&lt;/code&gt;: Changes to CI configuration files. Example: ci: configures automatic deploy pipeline&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;revert&lt;/code&gt;: Reverts a previous commit. Example: revert: reverts layout change commit&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2 Optional Scope (&lt;code&gt;&amp;lt;optional scope&amp;gt;&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;Provides more specific context for the change. Usually indicates which part of the project was affected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;feat(&lt;code&gt;login&lt;/code&gt;): adds login functionality (scope is login)&lt;br&gt;
fix(api): fixes error in user routes (scope is api)&lt;/p&gt;

&lt;p&gt;Description (&lt;code&gt;&amp;lt;description&amp;gt;&lt;/code&gt;)&lt;br&gt;
A brief and concise description of the change, written in the imperative mood and present tense (as if giving an order). It is recommended to keep it under 70 characters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;feat&lt;/code&gt;: adds favorites button (and not "added a favorites button" or "adds a button for favorites").&lt;/p&gt;

&lt;p&gt;Optional Body ([&lt;code&gt;optional body]&lt;/code&gt;)&lt;br&gt;
A more detailed paragraph explaining the “why” and “how” of the change. It's helpful to provide additional context, justification, or technical details.&lt;/p&gt;

&lt;p&gt;Optional Footer(s) ([&lt;code&gt;optional footer(s)&lt;/code&gt;])&lt;br&gt;
This may include information such as:&lt;/p&gt;

&lt;p&gt;Breaking Changes: Used to indicate changes that might affect the operation of existing parts of the system or other modules. It is common to use BREAKING CHANGE: followed by a description.&lt;/p&gt;

&lt;p&gt;References to issues or tasks: Links to project management tickets (e.g., &lt;code&gt;Closes #123&lt;/code&gt;, &lt;code&gt;Refs #456&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of a Standard Commit&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feat(authentication): implements Google OAuth login system

This change adds support for user authentication via Google OAuth.
Users can now register and log in using their Google account,
streamlining the onboarding process.

`BREAKING CHANGE`: The `loginWithEmail` method has been deprecated
in favor of the new authentication structure.

Closes #42
Refs #18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tools to Assist&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There are tools that can help enforce and validate commit patterns in your projects:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Commitlint&lt;/code&gt;: Helps validate commit messages when they are created, ensuring they follow the defined rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Commitizen&lt;/code&gt;: Provides an interactive command-line interface to help construct standardized commit messages, guiding the developer through the fields.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Husky&lt;/code&gt;: Allows setting up Git hooks, such as pre-commit, to run tasks like commit validation before they are finalized in the repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adopting commit patterns is a practice that elevates the organization and efficiency of any software development project, especially in teams. Getting started may require a small adjustment in the workflow, but the long-term benefits in clarity and code maintenance are undeniable.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bonus: Emojis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Commit Type&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Commit Type&lt;/th&gt;
&lt;th&gt;Emojis&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Initial commit&lt;/td&gt;
&lt;td&gt;🎉 &lt;code&gt;:tada:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version tag&lt;/td&gt;
&lt;td&gt;🔖 &lt;code&gt;:bookmark:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New feature&lt;/td&gt;
&lt;td&gt;✨ &lt;code&gt;:sparkles:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;To-do list (tasks)&lt;/td&gt;
&lt;td&gt;🔜 &lt;code&gt;:soon:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bugfix&lt;/td&gt;
&lt;td&gt;🐛 &lt;code&gt;:bug:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Documentation&lt;/td&gt;
&lt;td&gt;📚 &lt;code&gt;:books:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testes&lt;/td&gt;
&lt;td&gt;🧪 &lt;code&gt;:test_tube&lt;/code&gt;:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adding a test&lt;/td&gt;
&lt;td&gt;✅ &lt;code&gt;:white_check_mark:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Passing test&lt;/td&gt;
&lt;td&gt;✔️ &lt;code&gt;:heavy_check_mark:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility&lt;/td&gt;
&lt;td&gt;♿ &lt;code&gt;:wheelchair:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text (or content)&lt;/td&gt;
&lt;td&gt;📝 &lt;code&gt;:pencil:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Package.json em JS&lt;/td&gt;
&lt;td&gt;📦 &lt;code&gt;:package:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Work in progress&lt;/td&gt;
&lt;td&gt;🚧 &lt;code&gt;:construction:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration files&lt;/td&gt;
&lt;td&gt;🔧 &lt;code&gt;:wrench:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Removing a dependency&lt;/td&gt;
&lt;td&gt;➖ &lt;code&gt;:heavy_minus_sign:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adding a dependency&lt;/td&gt;
&lt;td&gt;➕ &lt;code&gt;:heavy_plus_sign:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reverting changes&lt;/td&gt;
&lt;td&gt;💥 &lt;code&gt;:boom:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code review changes&lt;/td&gt;
&lt;td&gt;👌 &lt;code&gt;:ok_hand:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refactoring&lt;/td&gt;
&lt;td&gt;♻️ &lt;code&gt;:recycle:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Move/Rename&lt;/td&gt;
&lt;td&gt;🚚 &lt;code&gt;:truck:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Examples of use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:tada: Starting project&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;heavy_plus_sign: build: Installing dependencies&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:sparkles: feat (header): Adding and positioning icons&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;books: docs (readme): Creating project documentation&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the 4 commits above we have the following history:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frndnmfxv780he952woav.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frndnmfxv780he952woav.webp" alt=" " width="800" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Translation of the image above&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;docs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;readme&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Criando&lt;/span&gt; &lt;span class="nx"&gt;documentação&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="nx"&gt;projeto&lt;/span&gt; &lt;span class="nx"&gt;RENATOADORNO&lt;/span&gt; &lt;span class="nx"&gt;committed&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="nx"&gt;minutes&lt;/span&gt; &lt;span class="nx"&gt;ago&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;feat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Adicionando&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="nx"&gt;posicionando&lt;/span&gt; &lt;span class="nx"&gt;os&lt;/span&gt; &lt;span class="nx"&gt;icones&lt;/span&gt; &lt;span class="nx"&gt;RENATOADORNO&lt;/span&gt; &lt;span class="nx"&gt;committed&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nx"&gt;minutes&lt;/span&gt; &lt;span class="nx"&gt;ago&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Instalando&lt;/span&gt; &lt;span class="nx"&gt;dependencias&lt;/span&gt;
&lt;span class="nx"&gt;RENATOADORNO&lt;/span&gt; &lt;span class="nx"&gt;committed&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="nx"&gt;minutes&lt;/span&gt; &lt;span class="nx"&gt;ago&lt;/span&gt;
&lt;span class="nx"&gt;Iniciando&lt;/span&gt; &lt;span class="nx"&gt;projeto&lt;/span&gt;
&lt;span class="nx"&gt;RENATOADORNO&lt;/span&gt; &lt;span class="nx"&gt;committed&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="nx"&gt;minutes&lt;/span&gt; &lt;span class="nx"&gt;ago&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reference: &lt;a href="https://www.conventionalcommits.org/en/v1.0.0/" rel="noopener noreferrer"&gt;conventionalcommits&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Padrões de Commits (Commit Patterns)</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Fri, 25 Jul 2025 11:55:32 +0000</pubDate>
      <link>https://forem.com/doccaio/padroes-de-commits-commit-patterns-356p</link>
      <guid>https://forem.com/doccaio/padroes-de-commits-commit-patterns-356p</guid>
      <description>&lt;p&gt;Os Padrões de Commits (Commit Patterns) são um conjunto de regras e convenções que guiam a forma como as mensagens de commit são escritas em sistemas de controle de versão, como o Git. O objetivo principal é tornar o histórico do projeto mais claro, organizado e fácil de entender para todos os membros da equipe e para o próprio desenvolvedor no futuro.&lt;/p&gt;

&lt;p&gt;Os Padrões de Commits (Commit Patterns) são um conjunto de regras e convenções que guiam a forma como as mensagens de commit são escritas em sistemas de controle de versão, como o Git. O objetivo principal é tornar o histórico do projeto mais claro, organizado e fácil de entender para todos os membros da equipe e para o próprio desenvolvedor no futuro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que usar Padrões de Commits?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Transparência: Cada commit se torna uma pequena história, descrevendo de forma concisa o que foi alterado e por quê.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Colaboração: Facilita a compreensão das mudanças por outros desenvolvedores, agilizando revisões de código e a integração de novas funcionalidades.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rastreabilidade: Permite localizar rapidamente alterações específicas, identificar bugs e entender a evolução do projeto.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automação: Ferramentas podem ser configuradas para gerar changelogs (listas de alterações) automaticamente, versionar o software (semantic versioning) e até mesmo disparar pipelines de CI/CD com base nos tipos de commit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Qualidade do Código: Incentiva commits menores e mais focados, o que geralmente leva a um código mais limpo e modular.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;O Padrão Conventional Commits&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O padrão mais popular e amplamente adotado é o Conventional Commits. Ele propõe uma estrutura clara e padronizada para as mensagens de commit, geralmente seguindo o formato:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;tipo&amp;gt;(&amp;lt;escopo opcional&amp;gt;): &amp;lt;descrição&amp;gt;

[corpo opcional]

[rodapé(s) opcional(is)]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vamos detalhar cada parte:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tipo (&lt;code&gt;&amp;lt;tipo&amp;gt;&lt;/code&gt;)
É o prefixo obrigatório que indica a natureza da mudança. Alguns dos tipos mais comuns incluem:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;feat&lt;/code&gt;: Uma nova funcionalidade. Ex: &lt;code&gt;feat: adiciona tela de login&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;fix&lt;/code&gt;: Uma correção de bug. Ex: &lt;code&gt;fix: corrige erro de validação no formulário de cadastro&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;docs&lt;/code&gt;: Alterações na documentação. Ex: &lt;code&gt;docs: atualiza README com instruções de instalação&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;style&lt;/code&gt;: Mudanças que não afetam o significado do código (formatação, espaçamento, etc.). Ex: &lt;code&gt;style: formata código-fonte&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;refactor&lt;/code&gt;: Uma refatoração de código que não adiciona uma funcionalidade nem corrige um bug. Ex: &lt;code&gt;refactor: reestrutura componentes de autenticação&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;test&lt;/code&gt;: Adição ou correção de testes. Ex: &lt;code&gt;test: adiciona testes unitários para o serviço de usuário&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;chore&lt;/code&gt;: Mudanças no processo de build ou ferramentas auxiliares (ex: configuração de dependências, scripts). Ex: &lt;code&gt;chore: atualiza dependências do projeto&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;perf&lt;/code&gt;: Uma mudança de código que melhora o desempenho. Ex: &lt;code&gt;perf: otimiza query de busca de produtos&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;build&lt;/code&gt;: Mudanças que afetam o sistema de build ou dependências externas (ex: npm, gulp). Ex: &lt;code&gt;build: atualiza versão do webpack&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ci&lt;/code&gt;: Alterações nos arquivos de configuração de CI (Integração Contínua). Ex: &lt;code&gt;ci: configura pipeline de deploy automático&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;revert&lt;/code&gt;: Reverte um commit anterior. Ex: revert: &lt;code&gt;reverte commit de alteração de layout&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Escopo Opcional ((&lt;code&gt;&amp;lt;escopo opcional&amp;gt;&lt;/code&gt;))&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fornece um contexto mais específico para a mudança. Geralmente indica a parte do projeto que foi afetada.&lt;/p&gt;

&lt;p&gt;Ex: &lt;code&gt;feat(login): adiciona funcionalidade de login&lt;/code&gt; (o escopo é &lt;code&gt;login&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;Ex: &lt;code&gt;fix(api): corrige erro na rota de usuários&lt;/code&gt; (o escopo é &lt;code&gt;api&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Descrição (&lt;code&gt;&amp;lt;descrição&amp;gt;&lt;/code&gt;)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uma breve e sucinta descrição da mudança, escrita no imperativo e no presente (como se você estivesse dando uma ordem). É recomendado que tenha no máximo 70 caracteres.&lt;/p&gt;

&lt;p&gt;Ex: &lt;code&gt;feat: adiciona botão de favoritos&lt;/code&gt; (e não "adicionei botão de favoritos" ou "adiciona um botão de favoritos").&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Corpo Opcional (&lt;code&gt;[corpo opcional]&lt;/code&gt;)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Um parágrafo mais detalhado sobre a mudança, explicando o "porquê" e o "como". É útil para fornecer contexto adicional, justificativas ou detalhes técnicos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Rodapé(s) Opcional(is) ([rodapé(s) opcional(is)])&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pode incluir informações como:&lt;/p&gt;

&lt;p&gt;Quebras de compatibilidade (Breaking Changes): Usado para indicar mudanças que podem afetar o funcionamento de partes existentes do sistema ou de outros módulos. É comum usar &lt;code&gt;BREAKING CHANGE&lt;/code&gt;: seguido de uma descrição.&lt;/p&gt;

&lt;p&gt;Referências a issues ou tarefas: Links para tickets de gerenciamento de projetos (ex: &lt;code&gt;Closes #123&lt;/code&gt;, &lt;code&gt;Refs #456&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Exemplo de Commit Padronizado&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feat(autenticacao): Implementa sistema de login com Google OAuth

Esta alteração adiciona o suporte para autenticação de usuários
usando a conta do Google OAuth. Os usuários agora podem se
registrar e fazer login através da plataforma do Google,
simplificando o processo de onboarding.

BREAKING CHANGE: O método `loginWithEmail` foi descontinuado
em favor da nova estrutura de autenticação.

Closes #42
Refs #18

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ferramentas para Auxiliar&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Existem ferramentas que podem ajudar a aplicar e validar os padrões de commit em seus projetos:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commitlint: Ajuda a validar as mensagens de commit no momento em que são criadas, garantindo que sigam as regras definidas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commitizen: Fornece uma interface de linha de comando interativa para ajudar a construir mensagens de commit padronizadas, guiando o desenvolvedor através dos campos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Husky: Permite configurar "hooks" do Git, como pré-commit, para executar tarefas como a validação de commits antes que eles sejam efetivados no repositório.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A adoção de padrões de commits é uma prática que eleva a organização e a eficiência de qualquer projeto de desenvolvimento de software, especialmente em equipes. Começar a utilizá-los pode exigir um pequeno ajuste no fluxo de trabalho, mas os benefícios a longo prazo em clareza e manutenção do código são inegáveis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus: Emojis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tipo de commit&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo de commit&lt;/th&gt;
&lt;th&gt;Emojis&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Commit inicial&lt;/td&gt;
&lt;td&gt;🎉 &lt;code&gt;:tada:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tag de versão&lt;/td&gt;
&lt;td&gt;🔖 &lt;code&gt;:bookmark:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Novo recurso&lt;/td&gt;
&lt;td&gt;✨ &lt;code&gt;:sparkles:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lista de ideias (tasks)&lt;/td&gt;
&lt;td&gt;🔜 &lt;code&gt;:soon:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bugfix&lt;/td&gt;
&lt;td&gt;🐛 &lt;code&gt;:bug:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Documentação&lt;/td&gt;
&lt;td&gt;📚 &lt;code&gt;:books:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testes&lt;/td&gt;
&lt;td&gt;🧪 &lt;code&gt;:test_tube&lt;/code&gt;:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adicionando um teste&lt;/td&gt;
&lt;td&gt;✅ &lt;code&gt;:white_check_mark:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Teste de aprovação&lt;/td&gt;
&lt;td&gt;✔️ &lt;code&gt;:heavy_check_mark:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Acessibilidade&lt;/td&gt;
&lt;td&gt;♿ &lt;code&gt;:wheelchair:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Texto&lt;/td&gt;
&lt;td&gt;📝 &lt;code&gt;:pencil:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Package.json em JS&lt;/td&gt;
&lt;td&gt;📦 &lt;code&gt;:package:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Em progresso&lt;/td&gt;
&lt;td&gt;🚧 &lt;code&gt;:construction:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arquivos de configuração&lt;/td&gt;
&lt;td&gt;🔧 &lt;code&gt;:wrench:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Removendo uma dependência&lt;/td&gt;
&lt;td&gt;➖ &lt;code&gt;:heavy_minus_sign:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adicionando uma dependência&lt;/td&gt;
&lt;td&gt;➕ &lt;code&gt;:heavy_plus_sign:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revertendo mudanças&lt;/td&gt;
&lt;td&gt;💥 &lt;code&gt;:boom:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alterações de revisão de código&lt;/td&gt;
&lt;td&gt;👌 &lt;code&gt;:ok_hand:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refatoração&lt;/td&gt;
&lt;td&gt;♻️ &lt;code&gt;:recycle:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mover/Renomear&lt;/td&gt;
&lt;td&gt;🚚 &lt;code&gt;:truck:&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Exemplos de utilização&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:tada: Iniciando projeto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;heavy_plus_sign: build: Instalando dependencias&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:sparkles: feat (header): Adicionando e posicionando os icones&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;books: docs (readme): Criando documentação do projeto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com os 4 commits a cima teremos o seguinte histórico:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiysa07uzpnkcmlm9ypea.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiysa07uzpnkcmlm9ypea.webp" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Referencia: &lt;a href="https://www.conventionalcommits.org/en/v1.0.0/" rel="noopener noreferrer"&gt;conventionalcommits&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Execution Policy Error in npm</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Tue, 10 Jun 2025 19:56:23 +0000</pubDate>
      <link>https://forem.com/doccaio/execution-policy-error-in-npm-2a52</link>
      <guid>https://forem.com/doccaio/execution-policy-error-in-npm-2a52</guid>
      <description>&lt;p&gt;Have you ever encountered an error when trying to run the npm install command, also known as npm i, and the process simply doesn’t work as expected?&lt;/p&gt;

&lt;p&gt;This type of problem is more common than it seems and can arise for several reasons, such as incorrect environment configurations, system permissions, or even issues related to conflicting dependencies. In this article, we will explore the most common causes of this error and, most importantly, how to fix it so you can get back to development without any more issues.&lt;/p&gt;

&lt;p&gt;This happens due to the PowerShell execution policy settings. Here is a step-by-step guide to resolve the problem:&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 Step-by-Step Guide to Fix the Issue:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1- Open PowerShell as Administrator:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;● Search for "PowerShell" in the Start menu.&lt;/p&gt;

&lt;p&gt;● Right-click on "Windows PowerShell" and select "Run as administrator."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2-Change the Execution Policy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In PowerShell, type the following command to allow the execution of scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set-ExecutionPolicy RemoteSigned
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Press "Enter" and, when prompted, type "Y" to confirm the change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3- Check the Execution Policy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To make sure the change was applied correctly, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Get-ExecutionPolicy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It should return the RemoteSigned policy, which allows local scripts and remote scripts that are signed to run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4- Run the npm install Command Again:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, you can try running the command again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm create vite@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should resolve the script-blocking issue and allow the installation to complete successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reverting to the Default Policy (Optional):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you prefer to revert the execution policy to the more secure default after the installation, just run the following command:&lt;/p&gt;

&lt;p&gt;⚠️ Important: Always be cautious when changing the execution policy. Only run scripts from trusted sources. To revert to the default policy, use the following command:&lt;/p&gt;

&lt;p&gt;🚨 The last command &lt;code&gt;npm create vite@latest&lt;/code&gt; is only needed if you are using &lt;code&gt;vite&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Source:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/63423584/how-to-fix-error-nodemon-ps1-cannot-be-loaded-because-running-scripts-is-disabl" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>npm</category>
      <category>programming</category>
      <category>webdev</category>
      <category>help</category>
    </item>
    <item>
      <title>Erro de política de execução npm</title>
      <dc:creator>Caio</dc:creator>
      <pubDate>Tue, 10 Jun 2025 19:56:04 +0000</pubDate>
      <link>https://forem.com/doccaio/erro-de-politica-de-execucao-npm-le5</link>
      <guid>https://forem.com/doccaio/erro-de-politica-de-execucao-npm-le5</guid>
      <description>&lt;p&gt;Você já se deparou com algum erro ao tentar rodar o comando &lt;code&gt;npm install&lt;/code&gt;, também conhecido como &lt;code&gt;npm i&lt;/code&gt;, e o processo simplesmente não funciona como esperado? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrur7gcq83066b8qc7l6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrur7gcq83066b8qc7l6.png" alt=" " width="689" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse tipo de problema é mais comum do que parece, e pode surgir por diversos motivos, como configurações incorretas do ambiente, permissões de sistema ou até questões relacionadas a dependências conflitantes. Neste artigo, vamos explorar as causas mais frequentes desse erro e, o mais importante, como corrigi-lo para que você possa voltar ao desenvolvimento sem mais problemas.&lt;/p&gt;

&lt;p&gt;Isso acontece devido às configurações de política de execução do &lt;code&gt;PowerShell&lt;/code&gt;. Aqui está um guia passo a passo para resolver o problema:&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 Passo a Passo para Resolver o Problema:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Abra o PowerShell como Administrador:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;● Pesquise por "PowerShell" no menu Iniciar.&lt;/p&gt;

&lt;p&gt;● Clique com o botão direito em "Windows PowerShell" e selecione "Executar como administrador".&lt;/p&gt;

&lt;p&gt;Altere a Política de Execução:&lt;/p&gt;

&lt;p&gt;No PowerShell, digite o seguinte comando para permitir a execução de scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set-ExecutionPolicy RemoteSigned
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pressione "Enter" e, quando solicitado, digite "Y" para confirmar a alteração.&lt;/p&gt;

&lt;p&gt;Verifique a Política de Execução:&lt;/p&gt;

&lt;p&gt;Para garantir que a alteração foi feita corretamente, execute o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Get-ExecutionPolicy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ele deve retornar a política RemoteSigned, que permite a execução de scripts locais e de scripts remotos que sejam assinados.&lt;/p&gt;

&lt;p&gt;Execute o Comando &lt;code&gt;npm install&lt;/code&gt;Novamente:&lt;/p&gt;

&lt;p&gt;Agora, você pode tentar rodar o comando novamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm create vite@latest

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso deve resolver o problema de bloqueio de scripts e permitir que a instalação seja concluída com sucesso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Revertendo para a Política Padrão (Opcional):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se você preferir reverter a política de execução para o padrão de segurança mais rígido após a instalação, basta rodar o comando:&lt;/p&gt;

&lt;p&gt;⚠️ Importante: Sempre tenha cuidado ao alterar a política de execução. Execute apenas scripts de fontes confiáveis. Para reverter para a política padrão, use o seguinte comando.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set-ExecutionPolicy Restricted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚨 Esse ultimo comando &lt;code&gt;npm create vite@latest&lt;/code&gt;seria somente no caso de  você estiver usando &lt;code&gt;vite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fonte:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/63423584/how-to-fix-error-nodemon-ps1-cannot-be-loaded-because-running-scripts-is-disabl" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>npm</category>
      <category>programming</category>
      <category>webdev</category>
      <category>help</category>
    </item>
  </channel>
</rss>
