<?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: Gustavo Scarpim</title>
    <description>The latest articles on DEV Community by Gustavo Scarpim (@guscarpim).</description>
    <link>https://dev.to/guscarpim</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%2F520818%2Fd6057406-4c64-4f96-acb7-fcbe89a76840.jpg</url>
      <title>DEV Community: Gustavo Scarpim</title>
      <link>https://dev.to/guscarpim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guscarpim"/>
    <language>en</language>
    <item>
      <title>🚀 Elementar Pocket-Sized Logic Challenge! Meet Elementar: Your New Favorite Puzzle Game – Free and Offline! [EN]</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Sun, 22 Jun 2025 17:38:06 +0000</pubDate>
      <link>https://dev.to/guscarpim/pocket-sized-logic-challenge-meet-elementar-your-new-favorite-puzzle-game-free-and-offline-5b1g</link>
      <guid>https://dev.to/guscarpim/pocket-sized-logic-challenge-meet-elementar-your-new-favorite-puzzle-game-free-and-offline-5b1g</guid>
      <description>&lt;p&gt;Hey everyone! Who doesn’t love a good puzzle game to pass the time — whether you're in line, on the bus, or anywhere else?&lt;/p&gt;

&lt;p&gt;That’s exactly why I decided to create Elementar!&lt;/p&gt;

&lt;p&gt;I was inspired by classic logic games like Tohu wa-bohu and even the famous LinkedIn Tango, but I added some unique twists and exclusive modes to make the experience even more fun and engaging!&lt;/p&gt;

&lt;p&gt;The core challenge is simple: fill the grid with an equal number of Fire 🔥 and Water 💧 symbols in each row and column. But watch out — you can’t place 3 of the same symbol in a row, either horizontally or vertically. That’s the golden rule!&lt;/p&gt;

&lt;p&gt;And the best part? I built Elementar as a Progressive Web App (PWA), so you can install it directly on your phone and play offline anytime — or just open it in your browser! 📱💻&lt;/p&gt;

&lt;p&gt;You’ll find the full rules and mode details on the game’s page. Try it out and let me know what you think!&lt;/p&gt;

&lt;p&gt;👉 Play Elementar now: &lt;a href="https://elementar.vercel.app" rel="noopener noreferrer"&gt;https://elementar.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Got ideas for new modes, improvements, or puzzles you'd love to see? Feel free to message me here!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Sun, 22 Jun 2025 17:37:14 +0000</pubDate>
      <link>https://dev.to/guscarpim/-44fe</link>
      <guid>https://dev.to/guscarpim/-44fe</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/guscarpim/desafio-logico-no-seu-bolso-conheca-elementar-seu-novo-puzzle-game-favorito-offline-e-gratis-6gm" class="crayons-story__hidden-navigation-link"&gt;🚀 Elementar Desafio Lógico no seu Bolso! Conheça Elementar: Seu Novo Puzzle Game Favorito, Offline e Grátis! [PT-BR]&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/guscarpim" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F520818%2Fd6057406-4c64-4f96-acb7-fcbe89a76840.jpg" alt="guscarpim profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/guscarpim" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Gustavo Scarpim
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Gustavo Scarpim
                
              
              &lt;div id="story-author-preview-content-2615680" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/guscarpim" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F520818%2Fd6057406-4c64-4f96-acb7-fcbe89a76840.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Gustavo Scarpim&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/guscarpim/desafio-logico-no-seu-bolso-conheca-elementar-seu-novo-puzzle-game-favorito-offline-e-gratis-6gm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 22 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/guscarpim/desafio-logico-no-seu-bolso-conheca-elementar-seu-novo-puzzle-game-favorito-offline-e-gratis-6gm" id="article-link-2615680"&gt;
          🚀 Elementar Desafio Lógico no seu Bolso! Conheça Elementar: Seu Novo Puzzle Game Favorito, Offline e Grátis! [PT-BR]
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/gamedev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;gamedev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/guscarpim/desafio-logico-no-seu-bolso-conheca-elementar-seu-novo-puzzle-game-favorito-offline-e-gratis-6gm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>programming</category>
      <category>gamedev</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>🚀 Elementar Desafio Lógico no seu Bolso! Conheça Elementar: Seu Novo Puzzle Game Favorito, Offline e Grátis! [PT-BR]</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Sun, 22 Jun 2025 17:36:23 +0000</pubDate>
      <link>https://dev.to/guscarpim/desafio-logico-no-seu-bolso-conheca-elementar-seu-novo-puzzle-game-favorito-offline-e-gratis-6gm</link>
      <guid>https://dev.to/guscarpim/desafio-logico-no-seu-bolso-conheca-elementar-seu-novo-puzzle-game-favorito-offline-e-gratis-6gm</guid>
      <description>&lt;p&gt;[PT - BR]&lt;br&gt;
Fala, pessoal! Quem não adora um bom puzzle game para passar o tempo, seja na fila, no ônibus ou em qualquer outro lugar?&lt;/p&gt;

&lt;p&gt;Pensando exatamente nisso, resolvi desenvolver o Elementar! &lt;/p&gt;

&lt;p&gt;Me inspirei em jogos clássicos de lógica como Tohu wa-bohu e até no famoso Tango do LinkedIn, mas adicionei algumas modificações e modos exclusivos para deixar a experiência mais interessante!&lt;/p&gt;

&lt;p&gt;Basicamente, o desafio é preencher as grades com a mesma quantidade de símbolos de Fogo 🔥 e Água 💧 por linha e coluna, com uma regra crucial: nunca deixe 3 símbolos iguais juntos na horizontal ou vertical. Simples assim!&lt;/p&gt;

&lt;p&gt;E a melhor parte? Desenvolvi o Elementar como PWA (Progressive Web App), então você pode baixá-lo diretamente no seu celular para jogar offline a qualquer momento, ou acessar e jogar direto pelo navegador! 📱💻&lt;/p&gt;

&lt;p&gt;As regras completas e todos os detalhes dos modos estão na página do jogo.Vem jogar e me contar o que achou!&lt;/p&gt;

&lt;p&gt;👉 Jogue Elementar agora: &lt;a href="https://elementar.vercel.app" rel="noopener noreferrer"&gt;https://elementar.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se tiverem sugestões de novos modos, melhorias ou quebra-cabeças que adorariam ver, me mandem uma mensagem por aqui! &lt;/p&gt;

&lt;h1&gt;
  
  
  ElementarGame #PuzzleGame #JogosDeLogica #DesenvolvimentoDeJogos #PWA #OfflineGame #Frontend #Angular #Vue #React #Next #WebDevelopment #Passatempo #BrainTeaser;
&lt;/h1&gt;

</description>
      <category>programming</category>
      <category>gamedev</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>Layout Patterns - EN</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Wed, 10 Jan 2024 21:07:18 +0000</pubDate>
      <link>https://dev.to/guscarpim/layout-patterns-en-2p27</link>
      <guid>https://dev.to/guscarpim/layout-patterns-en-2p27</guid>
      <description>&lt;h2&gt;
  
  
  Hello, my name is &lt;strong&gt;Gustavo Scarpim&lt;/strong&gt;, and today I will talk a about &lt;strong&gt;Layout Patterns&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;Post in PT-BR: &lt;a href="https://dev.to/guscarpim/layout-patterns-pt-45c5"&gt;https://dev.to/guscarpim/layout-patterns-pt-45c5&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What are &lt;strong&gt;Layout Patterns?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Layout Patterns&lt;/strong&gt; are best practices in design approaches used to organize elements in a user interface.&lt;/p&gt;

&lt;p&gt;These patterns are excellent solutions in the field of web design, whether for websites, applications, or other digital products. They are fundamental standards to provide a consistent and intuitive experience for users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use &lt;strong&gt;layout patterns&lt;/strong&gt;?
&lt;/h3&gt;

&lt;p&gt;Using a layout pattern in your project offers several benefits, such as:&lt;/p&gt;

&lt;p&gt;Why Use&lt;/p&gt;

&lt;p&gt;Using a layout pattern in your project offers several benefits, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual Consistency&lt;/li&gt;
&lt;li&gt;Usability&lt;/li&gt;
&lt;li&gt;Design Efficiency&lt;/li&gt;
&lt;li&gt;Adaptability&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accessibility&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;User Acceptance&lt;/li&gt;
&lt;li&gt;Development Efficiency&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Some Examples of Layout Patterns
&lt;/h3&gt;




&lt;h2&gt;
  
  
  Mostly Fluid
&lt;/h2&gt;

&lt;p&gt;The Mostly Fluid layout provides a dynamic grid with ample margins, smoothly adapting to the screen's width. It allows a continuous response to size changes, ensuring a visually pleasing experience across various devices and resolutions.&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%2Fe90x2pmb5cxpaqp9csr3.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%2Fe90x2pmb5cxpaqp9csr3.png" alt="Mostly Fluid" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://layoutpatterns.netlify.app/" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Collumn Drop
&lt;/h2&gt;

&lt;p&gt;This layout involves multiple columns that stack as the screen width decreases, condensing into a single column on devices with limited space. &lt;br&gt;
On desktop, it expands to occupy the full width of the available column.&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%2F7m0vy0vvcbnu6c6yn9xg.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%2F7m0vy0vvcbnu6c6yn9xg.png" alt="Collumn Drop" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://layoutpatterns.netlify.app/column-drop" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/column-drop&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Layout Shifter
&lt;/h2&gt;

&lt;p&gt;The Layout Shifter adjusts in distinct ways on large, medium, and small screens. It is more complex to implement due to the need for a specific design for each screen size, ensuring a consistent and optimized experience across various resolutions.&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%2Fchoysnuo2568rb2zvusd.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%2Fchoysnuo2568rb2zvusd.png" alt="Layout Shifter" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://layoutpatterns.netlify.app/shifter" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/shifter&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Off Canvas
&lt;/h2&gt;

&lt;p&gt;The Off-Canvas Layout consists of columns that hide certain sections as the device width decreases, allowing the user to efficiently switch between these diverse sections.&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%2Fy7x9yqc9q1bwc5fg62qi.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%2Fy7x9yqc9q1bwc5fg62qi.png" alt="Off Canvas" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://layoutpatterns.netlify.app/off-canvas" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/off-canvas&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tiny Tweaks
&lt;/h2&gt;

&lt;p&gt;The Tiny Tweaks layout is one of the simplest, making small adjustments to content and confining itself to a few elements in a single column. Its simplicity promotes a minimalist experience, ideal for emphasizing crucial information in a direct and effective manner.&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%2Fqjttg9u6dson9j5eync8.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%2Fqjttg9u6dson9j5eync8.png" alt="Tiny Tweaks" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://layoutpatterns.netlify.app/tiny-tweaks" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/tiny-tweaks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub repo: Design Patterns - &lt;a href="https://github.com/GuScarpim/Layout-Patterns" rel="noopener noreferrer"&gt;https://github.com/GuScarpim/Layout-Patterns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading.&lt;br&gt;
See you soon!&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://gustavoscarpim.com/" rel="noopener noreferrer"&gt;https://gustavoscarpim.com/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/GuScarpim" rel="noopener noreferrer"&gt;https://github.com/GuScarpim&lt;/a&gt;&lt;br&gt;
Linkedin: &lt;a href="https://www.linkedin.com/in/gustavoscarpim/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/gustavoscarpim/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>learning</category>
      <category>architecture</category>
      <category>pattern</category>
    </item>
    <item>
      <title>Layout Patterns - PT</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Wed, 10 Jan 2024 21:07:12 +0000</pubDate>
      <link>https://dev.to/guscarpim/layout-patterns-pt-45c5</link>
      <guid>https://dev.to/guscarpim/layout-patterns-pt-45c5</guid>
      <description>&lt;h2&gt;
  
  
  Olá, me chamo &lt;strong&gt;Gustavo Scarpim&lt;/strong&gt; e hoje irei falar um pouco sobre &lt;strong&gt;Layout Patterns&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;Post em Inglês: &lt;a href="https://dev.to/guscarpim/layout-patterns-en-2p27"&gt;https://dev.to/guscarpim/layout-patterns-en-2p27&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  O que são &lt;strong&gt;Layout Patterns?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Layout Patterns&lt;/strong&gt; são boas práticas de abordagens de design que são utilizadas para organizar elementos em uma interface de usuário.&lt;/p&gt;

&lt;p&gt;Esses padrões são ótimas soluções no campo de web design, sendo websites, aplicativos e outros produtos digitais, eles são padrões fundamentais para proporcionar uma experiência consistente e intuitiva aos usuários.&lt;/p&gt;

&lt;h3&gt;
  
  
  Porque utilizar &lt;strong&gt;layout patterns&lt;/strong&gt;?
&lt;/h3&gt;

&lt;p&gt;Utilizar um layout patterns no seu projeto oferece uma série de benefícios, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistência Visual&lt;/li&gt;
&lt;li&gt;Usabilidade&lt;/li&gt;
&lt;li&gt;Eficiência no Design&lt;/li&gt;
&lt;li&gt;Adaptabilidade&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acessibilidade&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Aceitação do Usuário&lt;/li&gt;
&lt;li&gt;Eficiência no Desenvolvimento&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Alguns exemplos de layout patterns
&lt;/h3&gt;




&lt;h2&gt;
  
  
  Mostly Fluid
&lt;/h2&gt;

&lt;p&gt;O layout Mostly Fluid oferece uma grade dinâmica com amplas margens, adaptando-se de maneira fluida à largura da tela. Ele permite uma resposta contínua às mudanças de tamanho, garantindo um visual agradável em diferentes dispositivos e resoluções&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%2Fe90x2pmb5cxpaqp9csr3.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%2Fe90x2pmb5cxpaqp9csr3.png" alt="Mostly Fluid" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo: &lt;a href="https://layoutpatterns.netlify.app/" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Collumn Drop
&lt;/h2&gt;

&lt;p&gt;Esse layout envolve várias colunas que se empilham à medida que a largura da tela diminui, tornando-se uma única coluna em dispositivos com espaço reduzido. &lt;br&gt;
Em desktop, ele se expande para ocupar toda a largura da coluna disponível.&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%2F7m0vy0vvcbnu6c6yn9xg.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%2F7m0vy0vvcbnu6c6yn9xg.png" alt="Collumn Drop" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo: &lt;a href="https://layoutpatterns.netlify.app/column-drop" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/column-drop&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Layout Shifter
&lt;/h2&gt;

&lt;p&gt;O Layout Shifter se ajusta de maneiras distintas em telas grandes, médias e pequenas. Ele é mais complexo de se utilizar pela necessidade de um design específico para cada tamanho de tela,  garantindo uma experiência consistente e otimizada em diversas resoluções.&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%2Fchoysnuo2568rb2zvusd.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%2Fchoysnuo2568rb2zvusd.png" alt="Layout Shifter" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo: &lt;a href="https://layoutpatterns.netlify.app/shifter" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/shifter&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Off Canvas
&lt;/h2&gt;

&lt;p&gt;O Layout Off-Canvas consiste em colunas que ocultam determinadas seções à medida que a largura do dispositivo é reduzida, proporcionando ao usuário a capacidade de alternar entre essas diversas seções de forma eficiente.&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%2Fy7x9yqc9q1bwc5fg62qi.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%2Fy7x9yqc9q1bwc5fg62qi.png" alt="Off Canvas" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo: &lt;a href="https://layoutpatterns.netlify.app/off-canvas" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/off-canvas&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tiny Tweaks
&lt;/h2&gt;

&lt;p&gt;O Tiny Tweaks é um dos layouts mais simples, por realizar pequenos ajustes no conteúdo, restringindo-se a poucos elementos em uma única coluna. Sua simplicidade promove uma experiência minimalista, ideal para enfatizar informações cruciais de forma direta e eficaz.&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%2Fqjttg9u6dson9j5eync8.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%2Fqjttg9u6dson9j5eync8.png" alt="Tiny Tweaks" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo: &lt;a href="https://layoutpatterns.netlify.app/tiny-tweaks" rel="noopener noreferrer"&gt;https://layoutpatterns.netlify.app/tiny-tweaks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub repo: Design Patterns - &lt;a href="https://github.com/GuScarpim/Layout-Patterns" rel="noopener noreferrer"&gt;https://github.com/GuScarpim/Layout-Patterns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agradeço por ter lido até aqui.&lt;br&gt;
Até mais!&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://gustavoscarpim.com/" rel="noopener noreferrer"&gt;https://gustavoscarpim.com/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/GuScarpim" rel="noopener noreferrer"&gt;https://github.com/GuScarpim&lt;/a&gt;&lt;br&gt;
Linkedin: &lt;a href="https://www.linkedin.com/in/gustavoscarpim/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/gustavoscarpim/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>learning</category>
      <category>architecture</category>
      <category>pattern</category>
    </item>
    <item>
      <title>CSS Architecture (BEM - OOCSS - Functional CSS - CSS in Js) - EN</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Thu, 04 May 2023 01:00:29 +0000</pubDate>
      <link>https://dev.to/guscarpim/css-architecture-bem-ooscss-functional-css-css-in-js-en-5b9h</link>
      <guid>https://dev.to/guscarpim/css-architecture-bem-ooscss-functional-css-css-in-js-en-5b9h</guid>
      <description>&lt;p&gt;When talking about software architecture, we usually focus on the architecture of the frontend or backend, but there is an equally important architecture that developers often overlook: &lt;strong&gt;CSS architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Although many people believe that CSS is just a set of visual styling rules, the truth is that it also needs to be organized and structured in a clear and coherent way to ensure long-term code maintenance and evolution.&lt;/p&gt;

&lt;p&gt;CSS architecture involves defining standards and guidelines for organizing, naming, and structuring style rules in order to create cohesive and sustainable code. The most commonly used techniques include the use of methodologies such as BEM, OOCSS, Functional CSS, and CSS-in-JS, which propose ways to divide the code into reusable and independent modules, as well as the use of preprocessors such as Sass and Less, which allow for more modular and dynamic CSS writing.&lt;/p&gt;

&lt;p&gt;A good CSS architecture can bring many benefits to a project, such as reducing code duplication, making maintenance easier, increasing team productivity, and significantly improving application performance. Therefore, it is important to value CSS architecture and invest in good practices for organizing and structuring code.&lt;/p&gt;

&lt;p&gt;Here is an image summarizing some of the characteristics of each architecture:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Font: PUC&lt;/em&gt;&lt;br&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%2Fcm1064p1rbgg3ob6rqam.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%2Fcm1064p1rbgg3ob6rqam.png" alt="Image description" width="787" height="544"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  BEM Style Guide
&lt;/h2&gt;

&lt;p&gt;*&lt;em&gt;BEM *&lt;/em&gt;(Block-Element-Modifier) is a Style Guide where we do not need an external library and it has compatibility with any kind of frameworks. It is used to standardize class names:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Block&lt;/strong&gt;: Header, Container, Menu, Checkbox, Input...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Element&lt;/strong&gt;: Menu item, list item, header title...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modifier&lt;/strong&gt;: Disabled, Active, Fixed...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;style&amp;gt;
.main-nav {...}
.main-nav__item {...}
.main-nav__item--is-active {...}
&amp;lt;/style&amp;gt;

&amp;lt;nav class="main-nav" &amp;gt;
  &amp;lt;li class="main-nav__item"&amp;gt;Item menu&amp;lt;/li&amp;gt;
  &amp;lt;li class="main-nav__item--is-active"&amp;gt;Item menu Active&amp;lt;/li&amp;gt;
&amp;lt;/nav&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


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

&lt;ul&gt;
&lt;li&gt;Clear and intuitive organization&lt;/li&gt;
&lt;li&gt;Reusability&lt;/li&gt;
&lt;li&gt;Standardized and consistent naming&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Very verbose&lt;/li&gt;
&lt;li&gt;Overuse of BEM can lead to code redundancy&lt;/li&gt;
&lt;li&gt;The need to define many classes can lead to increased CSS file size&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  OOCSS Style Guide
&lt;/h2&gt;

&lt;p&gt;*&lt;em&gt;OOCSS *&lt;/em&gt;(Object Oriented CSS) is a CSS development methodology that focuses on creating reusable and context-independent classes. The idea is to separate the style properties into classes that can be applied to any HTML element, regardless of the context in which they appear.&lt;/p&gt;

&lt;p&gt;The goal of **OOCSS **is to create scalable, sustainable, and easy-to-maintain CSS code. It aims to reduce code duplication, improve code readability, and allow for more efficient creation of new styles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&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;&amp;lt;style&amp;gt;
.button {
  font-size: 14px;
  font-weight: 600;
}

.button--primary {
  background-color: #007bff;
  color: #fff;
}

.button--secondary {
  background-color: #fff;
  border: 1px solid #007bff;
  color: #007bff;
}

.button--alert {
  background-color: #dc3545;
  color: #fff;
}
&amp;lt;/style&amp;gt;

&amp;lt;button class="button button--primary"&amp;gt;primary&amp;lt;/button&amp;gt;
&amp;lt;button class="button button--secondary"&amp;gt;secondary&amp;lt;/button&amp;gt;
&amp;lt;button class="button button--alert"&amp;gt;alert&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OOCSS is a CSS writing methodology, not a library or framework. However, some CSS libraries adopt the principles of OOCSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Foundation&lt;/li&gt;
&lt;li&gt;Semantic UI&lt;/li&gt;
&lt;li&gt;Materialize CSS&lt;/li&gt;
&lt;li&gt;Bulma&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Code reusability&lt;/li&gt;
&lt;li&gt;Flexibility&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Maintainability&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Learning curve&lt;/li&gt;
&lt;li&gt;Complexity&lt;/li&gt;
&lt;li&gt;Inconsistency&lt;/li&gt;
&lt;li&gt;File size&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  CSS Functional Style Guide
&lt;/h2&gt;

&lt;p&gt;This Style Guide uses micro classes to compose other components, where each micro class modifies a single CSS property.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&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;.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1em;
}

.row {
  display: flex;
  flex-wrap: wrap;
  margin: 0 -0.5em;
}

.col {
  flex: 1;
  margin: 0 0.5em;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Algumas bibliotecas que utilizam o CSS Funcional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tachyons&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Basscss&lt;/li&gt;
&lt;li&gt;Functional CSS&lt;/li&gt;
&lt;li&gt;Primer CSS&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Reduced CSS file size&lt;/li&gt;
&lt;li&gt;Style reusability&lt;/li&gt;
&lt;li&gt;Flexibility&lt;/li&gt;
&lt;li&gt;Clarity&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;High learning curve&lt;/li&gt;
&lt;li&gt;Difficulty in control&lt;/li&gt;
&lt;li&gt;Limitations&lt;/li&gt;
&lt;li&gt;Need for planning&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Style-in-JS Style Guide
&lt;/h2&gt;

&lt;p&gt;This Style Guide is the styling technique using Javascript. Instead of separating CSS into an external file or embedding it in a separate HTML document, the style is created and applied directly to the component using a JavaScript styling library or framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example using Styled Components&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;import styled from 'styled-components';

const Button = styled.button`
  background-color: #007bff;
  &amp;amp;:hover {
    background-color: #0069d9;
  }
`

function App() {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;Button&amp;gt;Click me!&amp;lt;/Button&amp;gt;
    &amp;lt;/div&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some libraries that use CSS-IN-JS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;styled-components&lt;/li&gt;
&lt;li&gt;Emotion&lt;/li&gt;
&lt;li&gt;JSS&lt;/li&gt;
&lt;li&gt;Glamorous&lt;/li&gt;
&lt;li&gt;Radium&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How to improve the performance of your CSS code:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Avoid overriding repeated styles&lt;/li&gt;
&lt;li&gt;Avoid using !important as it causes multiple re-renders in the "Painting" phase&lt;/li&gt;
&lt;li&gt;Reduce the size of the CSS file&lt;/li&gt;
&lt;li&gt;Use specific selectors&lt;/li&gt;
&lt;li&gt;Use separate files&lt;/li&gt;
&lt;li&gt;Minimize the number of reflows and repaints&lt;/li&gt;
&lt;li&gt;Use caching techniques&lt;/li&gt;
&lt;li&gt;Always use image optimization techniques&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this has been helpful.&lt;/p&gt;

&lt;p&gt;Author: Gustavo Scarpim&lt;br&gt;
Linkedin: &lt;a href="https://www.linkedin.com/in/gustavoscarpim/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/gustavoscarpim/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/guscarpim" rel="noopener noreferrer"&gt;https://github.com/guscarpim&lt;/a&gt;&lt;br&gt;
Portfolio: &lt;a href="https://gustavoscarpim.com/" rel="noopener noreferrer"&gt;https://gustavoscarpim.com/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Arquitetura CSS (BEM - OOCSS - Functional CSS - CSS in Js) - PT</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Thu, 04 May 2023 00:51:40 +0000</pubDate>
      <link>https://dev.to/guscarpim/arquitetura-css-bem-ooscss-functional-css-css-in-js-pt-24a3</link>
      <guid>https://dev.to/guscarpim/arquitetura-css-bem-ooscss-functional-css-css-in-js-pt-24a3</guid>
      <description>&lt;p&gt;Ao falar sobre arquitetura de software, geralmente nos concentramos na arquitetura do frontend ou backend, mas há uma arquitetura igualmente importante que os desenvolvedores muitas vezes negligenciam: a &lt;strong&gt;arquitetura CSS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Embora muitas pessoas acreditem que o CSS seja apenas um conjunto de regras de estilo visual, a verdade é que ele também precisa ser organizado e estruturado de maneira clara e coerente para garantir a manutenção e evolução do código a longo prazo.&lt;/p&gt;

&lt;p&gt;A arquitetura CSS envolve a definição de padrões e diretrizes para a organização, nomenclatura e estruturação das regras de estilo, com o objetivo de criar um código coeso e sustentável. As técnicas mais utilizadas incluem o uso de metodologias como BEM, OOCSS, CSS Funcional e CSS-in-js, que propõem maneiras de dividir o código em módulos reutilizáveis e independentes, além do uso de pré-processadores como Sass e Less, que permitem escrever CSS de maneira mais modular e dinâmica.&lt;/p&gt;

&lt;p&gt;Uma boa &lt;strong&gt;arquitetura de CSS&lt;/strong&gt; pode trazer muitos benefícios para um projeto, como a redução de duplicação de código, maior facilidade de manutenção, aumento da produtividade da equipe e melhorias significativas na performance da aplicação. Por isso, é importante valorizar a arquitetura de CSS e investir em boas práticas de organização e estruturação do código.&lt;/p&gt;

&lt;p&gt;Aqui está uma imagem que resumo um pouco as características sobre cada uma delas:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Fonte: PUC&lt;/em&gt;&lt;br&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%2Fcm1064p1rbgg3ob6rqam.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%2Fcm1064p1rbgg3ob6rqam.png" alt="Image description" width="787" height="544"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  BEM Style Guide
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;BEM&lt;/strong&gt; (Block-Element-Modifier) é um &lt;strong&gt;Style Guide&lt;/strong&gt; onde não precisamos de uma lib externa e possuí uma compatibilidade com qualquer tipo de frameworks, ela serve para padronizar nomes de classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Block&lt;/strong&gt;: Header, Container, Menu, Checkbox, Input...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Element&lt;/strong&gt;: Menu item, list item, titulo de cabeçalho...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modifier&lt;/strong&gt;: Disabled, Active, Fixed...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exemplo&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;&amp;lt;style&amp;gt;
.main-nav {...}
.main-nav__item {...}
.main-nav__item--is-active {...}
&amp;lt;/style&amp;gt;

&amp;lt;nav class="main-nav" &amp;gt;
  &amp;lt;li class="main-nav__item"&amp;gt;Item menu&amp;lt;/li&amp;gt;
  &amp;lt;li class="main-nav__item--is-active"&amp;gt;Item menu Active&amp;lt;/li&amp;gt;
&amp;lt;/nav&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Prós&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organização clara e intuitiva&lt;/li&gt;
&lt;li&gt;Reutilização &lt;/li&gt;
&lt;li&gt;Nomenclatura padronizada e consistente&lt;/li&gt;
&lt;li&gt;Escalabilidade&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Muito verbose&lt;/li&gt;
&lt;li&gt;Uso excessivo de BEM pode levar a uma redundância de código&lt;/li&gt;
&lt;li&gt;A necessidade de definir muitas classes pode levar a um aumento do tamanho do arquivo CSS&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  OOCSS Style Guide
&lt;/h2&gt;

&lt;p&gt;OOCSS (Object Oriented CSS) é uma metodologia de desenvolvimento de CSS que se concentra na criação de classes reutilizáveis e independentes de contextos específicos. A ideia é separar as propriedades de estilo em classes que podem ser aplicadas a qualquer elemento no HTML, independentemente do contexto em que aparecem.&lt;/p&gt;

&lt;p&gt;O objetivo do OOCSS é criar um código CSS escalável, sustentável e fácil de manter. Ele busca reduzir as duplicações de códigos,  melhorar a legibilidade do código e permitir a criação de novos estilos de forma mais eficiente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo&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;&amp;lt;style&amp;gt;
.button {
  font-size: 14px;
  font-weight: 600;
}

.button--primary {
  background-color: #007bff;
  color: #fff;
}

.button--secondary {
  background-color: #fff;
  border: 1px solid #007bff;
  color: #007bff;
}

.button--alert {
  background-color: #dc3545;
  color: #fff;
}
&amp;lt;/style&amp;gt;

&amp;lt;button class="button button--primary"&amp;gt;primary&amp;lt;/button&amp;gt;
&amp;lt;button class="button button--secondary"&amp;gt;secondary&amp;lt;/button&amp;gt;
&amp;lt;button class="button button--alert"&amp;gt;alert&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OOCSS é uma metodologia de escrita de CSS, não uma biblioteca ou framework. Porém, algumas bibliotecas CSS adotam os princípios do OOCSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Foundation&lt;/li&gt;
&lt;li&gt;Semantic UI&lt;/li&gt;
&lt;li&gt;Materialize CSS&lt;/li&gt;
&lt;li&gt;Bulma&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prós&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reutilização de código&lt;/li&gt;
&lt;li&gt;Flexibilidade&lt;/li&gt;
&lt;li&gt;Escalabilidade&lt;/li&gt;
&lt;li&gt;Manutenção&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Curva de aprendizado&lt;/li&gt;
&lt;li&gt;Complexidade&lt;/li&gt;
&lt;li&gt;Inconsistência&lt;/li&gt;
&lt;li&gt;Tamanho do arquivo&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  CSS Funcional Style Guide
&lt;/h2&gt;

&lt;p&gt;Esse Style Guide utiliza &lt;strong&gt;micro classes&lt;/strong&gt;, para compor outros componentes, cada &lt;strong&gt;micro classe&lt;/strong&gt; altera uma única propriedade do CSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo&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;.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1em;
}

.row {
  display: flex;
  flex-wrap: wrap;
  margin: 0 -0.5em;
}

.col {
  flex: 1;
  margin: 0 0.5em;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Algumas bibliotecas que utilizam o CSS Funcional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tachyons&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Basscss&lt;/li&gt;
&lt;li&gt;Functional CSS&lt;/li&gt;
&lt;li&gt;Primer CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prós&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redução do tamanho do arquivo CSS&lt;/li&gt;
&lt;li&gt;Reutilização de estilos&lt;/li&gt;
&lt;li&gt;Flexibilidade&lt;/li&gt;
&lt;li&gt;Clareza&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Curva de aprendizado alta&lt;/li&gt;
&lt;li&gt;Dificuldade de controle&lt;/li&gt;
&lt;li&gt;Limitações&lt;/li&gt;
&lt;li&gt;Necessidade de planejamento&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Style-in-JS Style Guide
&lt;/h2&gt;

&lt;p&gt;Esse Style Guide é a técnica de estilização utilizando Javascript. Em vez de separar o CSS em um arquivo externo ou incorporá-lo em um documento HTML separado, o estilo é criado e aplicado diretamente no componente usando uma biblioteca ou framework de estilo em JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo utilizando Styled Components&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;import styled from 'styled-components';

const Button = styled.button`
  background-color: #007bff;
  &amp;amp;:hover {
    background-color: #0069d9;
  }
`

function App() {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;Button&amp;gt;Click me!&amp;lt;/Button&amp;gt;
    &amp;lt;/div&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Algumas bibliotecas que utilizam CSS-IN-JS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;styled-components&lt;/li&gt;
&lt;li&gt;Emotion&lt;/li&gt;
&lt;li&gt;JSS&lt;/li&gt;
&lt;li&gt;Glamorous&lt;/li&gt;
&lt;li&gt;Radium&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Como melhorar a performance do seu código css
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Evitando overrides de estilos repetidos&lt;/li&gt;
&lt;li&gt;Evitar sempre de utilizar !important porque ele causa um número de re-render na fase de "Painting"&lt;/li&gt;
&lt;li&gt;Reduza o tamanho do arquivo CSS&lt;/li&gt;
&lt;li&gt;Use seletores específicos&lt;/li&gt;
&lt;li&gt;Utilize arquivos separados&lt;/li&gt;
&lt;li&gt;Minimize o número de reflows e repaints&lt;/li&gt;
&lt;li&gt;Utilize técnicas de cache&lt;/li&gt;
&lt;li&gt;Sempre utilize técnicas de otimização de imagens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Espero que tenha agregado em algo.&lt;/p&gt;

&lt;p&gt;Autor: Gustavo Scarpim&lt;br&gt;
Linkedin: &lt;a href="https://www.linkedin.com/in/gustavoscarpim/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/gustavoscarpim/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/guscarpim" rel="noopener noreferrer"&gt;https://github.com/guscarpim&lt;/a&gt;&lt;br&gt;
Portfolio: &lt;a href="https://gustavoscarpim.com/" rel="noopener noreferrer"&gt;https://gustavoscarpim.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>architecture</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Animation React - Bem-te-vi</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Fri, 03 Sep 2021 03:09:54 +0000</pubDate>
      <link>https://dev.to/guscarpim/react-animation-bem-te-vi-ojl</link>
      <guid>https://dev.to/guscarpim/react-animation-bem-te-vi-ojl</guid>
      <description>&lt;p&gt;Today I'm bringing another animation made with GSAP / React, you can see in my github all the code.&lt;/p&gt;

&lt;p&gt;This animation is for those who like the bird "Bem-te-vi", if you have ideas for improvements, the code is open, I'll be happy to receive your PR.&lt;/p&gt;

&lt;p&gt;When accessing the site, I recommend opening the sound.&lt;/p&gt;

&lt;p&gt;Hope you like it:&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%2Fplakf88rcrvd0c0xfgfr.gif" 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%2Fplakf88rcrvd0c0xfgfr.gif" alt="Gustavo Scarpim" width="600" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the complete code here on GitHub &lt;a href="https://github.com/GuScarpim/bird-animation" rel="noopener noreferrer"&gt;&lt;b&gt;Click here&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out the Project in action &lt;a href="https://bem-te-vi.netlify.app/" rel="noopener noreferrer"&gt;&lt;b&gt;Deploy&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>design</category>
    </item>
    <item>
      <title>Animation React</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Sat, 21 Aug 2021 18:08:27 +0000</pubDate>
      <link>https://dev.to/guscarpim/animation-react-2old</link>
      <guid>https://dev.to/guscarpim/animation-react-2old</guid>
      <description>&lt;p&gt;Today I'm bringing an animation made with GSAP/React, I won't post the entire code because it got a little big, but you can see in my github all the code.&lt;/p&gt;

&lt;p&gt;GSAP is a library that facilitates the creation of animations, making it simple and intuitive.&lt;br&gt;
With it we can animate (CSS properties, canvas library objects, SVG, React, Vue, Angular, generic objects, whatever) and also resolve countless browser inconsistencies, all with incredible speed (up to 20x faster than jQuery ), including automatic GPU acceleration of transforms.&lt;/p&gt;

&lt;p&gt;The GSAP community is very active, and for those who have doubts about creating some animation, I recommend posting it on the GSAP forum &lt;a href="https://greensock.com/forums/" rel="noopener noreferrer"&gt;https:/ /greensock.com/forums/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's an example of an animation that I managed to create using GSAP to help me, I hope you like it:&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%2Fkxy0wnii3wnw800jk43t.gif" 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%2Fkxy0wnii3wnw800jk43t.gif" alt="Gustavo Scarpim" width="597" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the complete code here on GitHub &lt;a href="https://github.com/GuScarpim/Cat-Animation/" rel="noopener noreferrer"&gt;&lt;b&gt;Click here&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out the Project in action &lt;a href="https://cat-animation.netlify.app/" rel="noopener noreferrer"&gt;&lt;b&gt;Deploy&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>gsap</category>
    </item>
    <item>
      <title>How to deploy Netlify</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Wed, 02 Jun 2021 02:12:26 +0000</pubDate>
      <link>https://dev.to/guscarpim/how-do-i-deploy-to-netlify-45pc</link>
      <guid>https://dev.to/guscarpim/how-do-i-deploy-to-netlify-45pc</guid>
      <description>&lt;p&gt;Heeeeey guys, quick tip for those of you who need to deploy your app, there are several ways to deploy your app for free, but what I like the most is Netlify because it's so simple and fast:&lt;/p&gt;

&lt;p&gt;1- Once logged in, click on&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;New site from Git&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 to be able to choose which site you want to upload:&lt;br&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%2F7n6ty4jcw31gnepfnvoq.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%2F7n6ty4jcw31gnepfnvoq.png" alt="Alt Text" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Choose where your code is stored:&lt;br&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%2Ffisvylffmmmgbib7zf4g.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%2Ffisvylffmmmgbib7zf4g.png" alt="Alt Text" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- Choose your repository (GitHub):&lt;br&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%2Ff9t74m8zol6tv6cj77e3.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%2Ff9t74m8zol6tv6cj77e3.png" alt="Alt Text" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4- He will ask to set up your build information in&lt;b&gt;Base directory&lt;/b&gt; you must put the path to your main page,, &lt;b&gt;Build command&lt;/b&gt; this is where you put the command that will generate your project build, I always put it &lt;b&gt;CI= npm run build&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;CI = &amp;lt;b&amp;gt;CI&amp;lt;/b&amp;gt; means continuous integration&lt;/code&gt;&lt;br&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%2Fgizplmq4x9dkbslxn4o6.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%2Fgizplmq4x9dkbslxn4o6.png" alt="Alt Text" width="800" height="961"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5- If everything is ok, it will show this page saying that your application was successfully uploaded.&lt;br&gt;
To change your domain name, click on Domain settings:&lt;br&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%2Fijm77pszfp490fg15ozo.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%2Fijm77pszfp490fg15ozo.png" alt="Alt Text" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- Click Add custom domain to place a domain you have purchased or click &lt;b&gt;Edit site name&lt;/b&gt; to change only the Netlify domain name:&lt;br&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%2Fpxf595xuo6bdnu6ebvf2.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%2Fpxf595xuo6bdnu6ebvf2.png" alt="Alt Text" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And voila, your application is already online and 100% free.&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%2F8vgkbp34j7hu4wioz9tk.gif" 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%2F8vgkbp34j7hu4wioz9tk.gif" alt="Alt Text" width="220" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Context Api React</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Sat, 17 Apr 2021 04:40:39 +0000</pubDate>
      <link>https://dev.to/guscarpim/context-api-react-49p7</link>
      <guid>https://dev.to/guscarpim/context-api-react-49p7</guid>
      <description>&lt;p&gt;Heeeeeey guys!&lt;/p&gt;

&lt;p&gt;My name is &lt;b&gt;Gustavo Scarpim&lt;/b&gt;, and I will show you how to add Context Api simply and quickly to your project.&lt;/p&gt;

&lt;p&gt;1º Create a folder called context inside your src folder, example:&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%2Fl4p53016svulxptwegj8.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%2Fl4p53016svulxptwegj8.png" alt="Alt Text" width="193" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2º Inside index we will create your global context, example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react"

import { ColorDefaultContextProvider } from "./template/components/colors"

const GlobalContext = ({ children }) =&amp;gt; {
  return (
    &amp;lt;&amp;gt;
      &amp;lt;ColorDefaultContextProvider&amp;gt;{children}&amp;lt;/ColorDefaultContextProvider&amp;gt;
    &amp;lt;/&amp;gt;
  )
}

export default GlobalContext
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3º I created a folder called components to separate my states, in my colors.js folder I create all my global states related to color, I'm taking the value of localStorage but the correct thing is to get the data from an API.&lt;br&gt;
Well the example below is a "pattern of the context", just follow this step that is in the code below that will work&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { createContext, useState } from "react";

const colorCard = localStorage.getItem('colorCard')
const colorBackAvatar = localStorage.getItem('colorBackAvatar')
const colorTitle = localStorage.getItem('colorTitle')
const colorSubTitle = localStorage.getItem('colorSubTitle')

const DEFAULT_VALUE = {
  state: {
    colorCard: colorCard,
    colorBackAvatar: colorBackAvatar,
    colorTitle: colorTitle,
    colorSubTitle: colorSubTitle
  },
  setState: () =&amp;gt; { },
};

const Context = createContext(DEFAULT_VALUE);

const ColorDefaultContextProvider = ({ children }) =&amp;gt; {
  const [state, setState] = useState(DEFAULT_VALUE.state);
  return (
    &amp;lt;Context.Provider
      value={{
        state,
        setState,
      }}
    &amp;gt;
      {children}
    &amp;lt;/Context.Provider&amp;gt;
  );
};

export { ColorDefaultContextProvider };
export default Context;

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

&lt;/div&gt;



&lt;p&gt;4º Finally, just import the context that we will use in your component, down here I show you how to call and edit its global state.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useContext, useRef } from 'react'
import * as S from './styles/custom'

import ContextColors from '../context/template/components/colors'

export default function Custom() {
  const { setState: setGlobalState } = useContext(ContextColors)
  const { state } = useContext(ContextColors);

  const colorCard = useRef(state.colorSubTitle)

  const handleChangeColorBackCard = (e) =&amp;gt; {
    setTimeout(() =&amp;gt; {
      //Here I’m taking all the state I have in my 
      // context and I’m changing a specific state, 
      // then save it in localStorage
      //(not required to save in localStorage)
      setGlobalState({ ...state, colorCard: e.target.value })
      localStorage.setItem('colorCard', state.colorCard)
    }, 300)
  }

  return (
    &amp;lt;S.Container&amp;gt;

      &amp;lt;S.ContentColor&amp;gt;
        &amp;lt;input ref={colorCard} defaultValue={state.colorCard}
          type={'color'} onChange={(e) =&amp;gt; handleChangeColorBackCard(e)} /&amp;gt;
        &amp;lt;S.Label&amp;gt;Background card&amp;lt;/S.Label&amp;gt;
      &amp;lt;/S.ContentColor&amp;gt;

    &amp;lt;/S.Container&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5º Most importantly, for the context to work throughout your application you need to import it into your main index&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import ReactDOM from 'react-dom';
import Context from './context';
import App from './App';

ReactDOM.render(
  &amp;lt;React.StrictMode&amp;gt;
    &amp;lt;Context&amp;gt;
      &amp;lt;App /&amp;gt;
    &amp;lt;/Context&amp;gt;
  &amp;lt;/React.StrictMode&amp;gt;,
  document.getElementById('root')
);

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

&lt;/div&gt;



&lt;p&gt;And ready, you applied your context api to your project:&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%2Fxtl923ogupc62ru0kryq.gif" 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%2Fxtl923ogupc62ru0kryq.gif" alt="Alt Text" width="220" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the project working:&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%2Fgithub.com%2FGuScarpim%2FReact_Context_API%2Fraw%2Fdev%2Fmyapp%2Fsrc%2Fassets%2FcontextApi.gif" 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%2Fgithub.com%2FGuScarpim%2FReact_Context_API%2Fraw%2Fdev%2Fmyapp%2Fsrc%2Fassets%2FcontextApi.gif" alt="Project in action" width="400" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the complete code here on GitHub &lt;a href="https://github.com/GuScarpim/React_Context_API" rel="noopener noreferrer"&gt;&lt;b&gt;Click here&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out the Project in action &lt;a href="https://reactcontexapi.netlify.app/" rel="noopener noreferrer"&gt;&lt;b&gt;Deploy&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Brave Creators</title>
      <dc:creator>Gustavo Scarpim</dc:creator>
      <pubDate>Thu, 01 Apr 2021 03:17:27 +0000</pubDate>
      <link>https://dev.to/guscarpim/brave-creators-6n0</link>
      <guid>https://dev.to/guscarpim/brave-creators-6n0</guid>
      <description>&lt;p&gt;Heeeeey guys!!&lt;/p&gt;

&lt;p&gt;My name is Gustavo Scarpim, and today I’m going to show you how to be a digital creator verified by Brave.&lt;/p&gt;

&lt;p&gt;I particularly enjoyed the Brave browser a lot and I believe that it's not just me, besides being identical to Google Chrome it still has some more features that make it even better, and one of those features that in my view draws a lot of attention is the possibility you are able to receive payments on your own website through the Brave wallet.&lt;br&gt;
If you still don't know how to assign this to your website, I'll show you how to quickly and easily add this functionality to your website.&lt;/p&gt;

&lt;p&gt;1- Go to &lt;a href="https://creators.brave.com/sign-up" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://creators.brave.com/sign-up" rel="noopener noreferrer"&gt;https://creators.brave.com/sign-up&lt;/a&gt; and register your email to access your creator area.&lt;/p&gt;

&lt;p&gt;2- Click here "+Add Channel"&lt;br&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%2F7fh75haw9fmyfsj0z8hv.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%2F7fh75haw9fmyfsj0z8hv.png" alt="image" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- Choose the type of account you want to assign to your wallet (We will only focus on WebSite)&lt;br&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%2Fwpm2nmcoyg4abemdnd6u.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%2Fwpm2nmcoyg4abemdnd6u.png" alt="image" width="800" height="753"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4- Insert your domain&lt;br&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%2Fb4n79nmxyslmo9ucp9em.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%2Fb4n79nmxyslmo9ucp9em.png" alt="image" width="766" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5- Choose one of the options to configure (I will choose Download a trusted file here)&lt;br&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%2F4wmlpun9rrz8cexryaq5.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%2F4wmlpun9rrz8cexryaq5.png" alt="image" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- Download the well-known file, go to your website's repository and create a folder at the root of your project called .well-known&lt;br&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%2Fat3gzwnjsltxuj76qzv4.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%2Fat3gzwnjsltxuj76qzv4.png" alt="image" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And ready, the process takes about a maximum of 48 hours to be approved, after it is approved, your website will show that you are a creator verified by Brave and any amount you receive on it, will fall directly into your Brave wallet.&lt;br&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%2F51wdql5lo23v4ha53iwx.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%2F51wdql5lo23v4ha53iwx.png" alt="image" width="800" height="514"&gt;&lt;/a&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%2Faump02dk4uitf3ae7vfl.gif" 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%2Faump02dk4uitf3ae7vfl.gif" alt="Alt Text" width="220" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
