<?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: Guido Vizoso</title>
    <description>The latest articles on DEV Community by Guido Vizoso (@guidovizoso).</description>
    <link>https://dev.to/guidovizoso</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%2F47614%2F4ec8de5a-2be8-4840-8e4b-743af3b80c19.png</url>
      <title>DEV Community: Guido Vizoso</title>
      <link>https://dev.to/guidovizoso</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guidovizoso"/>
    <language>en</language>
    <item>
      <title>react-monetize submition 💸</title>
      <dc:creator>Guido Vizoso</dc:creator>
      <pubDate>Thu, 21 May 2020 14:20:31 +0000</pubDate>
      <link>https://dev.to/guidovizoso/react-monetize-submition-3968</link>
      <guid>https://dev.to/guidovizoso/react-monetize-submition-3968</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;react-monetize&lt;/code&gt; is a set of helpers and hook to easily integrate the Web Monetization API with React.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category: Foundational Technology
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Demo and code can be found on the documentation website:&lt;br&gt;
&lt;a href="https://react-monetize.now.sh/#live-example"&gt;https://react-monetize.now.sh/#live-example&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/guidovizoso"&gt;
        guidovizoso
      &lt;/a&gt; / &lt;a href="https://github.com/guidovizoso/react-monetize"&gt;
        react-monetize
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Helpers and hooks to speed up your integration with Web Monetization API
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/guidovizoso/react-monetize/master/money.png"&gt;&lt;img height="80" width="80" alt="money" src="https://res.cloudinary.com/practicaldev/image/fetch/s--9fN2OFmh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/guidovizoso/react-monetize/master/money.png"&gt;&lt;/a&gt;
&lt;h1&gt;
react-monetize&lt;/h1&gt;
&lt;p&gt;Helpers and hooks to speed up your integration with Web Monetization API&lt;/p&gt;
&lt;a href="https://react-monetize.now.sh" rel="nofollow"&gt;&lt;b&gt;react-monetize.now.sh&lt;/b&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/14fedcec42ae68b397b6a965c9ef5bfea40cc7ed/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d312e302e302d626c75652e7376673f63616368655365636f6e64733d32353932303030"&gt;&lt;img src="https://camo.githubusercontent.com/14fedcec42ae68b397b6a965c9ef5bfea40cc7ed/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d312e302e302d626c75652e7376673f63616368655365636f6e64733d32353932303030" alt="Version"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/guidovizoso/react-monetize/workflows/CI/badge.svg?tag=1.0.0-rc.5"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EZeckFWq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/guidovizoso/react-monetize/workflows/CI/badge.svg%3Ftag%3D1.0.0-rc.5" alt="CI"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/76f0e887c183ccc31c1cb63c33d2dbf48cb2df51/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/76f0e887c183ccc31c1cb63c33d2dbf48cb2df51/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/d788a21030e416ba5871ad9bc22742d0301297c3/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f64742f72656163742d6d6f6e6574697a653f6c6162656c3d6e706d253230646f776e6c6f616473"&gt;&lt;img src="https://camo.githubusercontent.com/d788a21030e416ba5871ad9bc22742d0301297c3/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f64742f72656163742d6d6f6e6574697a653f6c6162656c3d6e706d253230646f776e6c6f616473" alt="npm"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/guido_vizoso" rel="nofollow"&gt;
&lt;img alt="Twitter: guido\_vizoso" src="https://camo.githubusercontent.com/1412a76c3cc56853a4ebf3810c5777c726213793/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f677569646f5f76697a6f736f2e7376673f7374796c653d736f6369616c"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Install&lt;/h2&gt;
&lt;p&gt;Currently supports React, Create React App and Next Js
Not yet tested in Gatsby or Preact.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;yarn add react-monetize&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;Wrap your app with the &lt;code&gt;MonetizeProvider&lt;/code&gt; and add your payment pointer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can read how to get one here: &lt;a href="https://webmonetization.org/docs/receiving" rel="nofollow"&gt;https://webmonetization.org/docs/receiving&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;MonetizeProvider&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-monetize'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
        &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;MonetizePovider&lt;/span&gt; &lt;span class="pl-c1"&gt;paymentPointer&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;"myPaymentPointer"&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;YourApp&lt;/span&gt; /&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;/&lt;span class="pl-ent"&gt;MonetizeProvider&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;
&lt;span class="pl-k"&gt;export&lt;/span&gt; &lt;span class="pl-k"&gt;default&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now you have two hooks available to use anywhere in your app:&lt;/p&gt;
&lt;h3&gt;
useStatus&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;State&lt;/strong&gt; is the current state provided by Web Monetization API according to this &lt;a href="https://webmonetization.org/docs/api#states" rel="nofollow"&gt;list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Events&lt;/strong&gt; are the payment events registered stored as &lt;code&gt;CustomEvent&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;useStatus&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-monetize'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-v"&gt;Component&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; state&lt;span class="pl-kos"&gt;,&lt;/span&gt; events &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;useStatus&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/guidovizoso/react-monetize"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;First thing I did was heading to &lt;a href="https://webmonetization.org/"&gt;https://webmonetization.org&lt;/a&gt; and read the documentation.&lt;br&gt;
With that knowledge in mind I prepared the layout for creating the components.&lt;br&gt;
The goal was to make it &lt;em&gt;as React as possible&lt;/em&gt; so people could use the benefits of the Web Monetization API without having to worry about integration. Just wrap your App, add your payment pointer and you're good to go.&lt;br&gt;
Once you prepared your App you'll have access to &lt;code&gt;useStatus&lt;/code&gt;and &lt;code&gt;useContent&lt;/code&gt; to build with the API. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;react-monetize&lt;/code&gt; uses these technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Typescript&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rollup&lt;/strong&gt; for the bundling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React&lt;/strong&gt; (obviusly).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Testing Library &amp;amp; Jest&lt;/strong&gt; for testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ESLint &amp;amp; Prettier&lt;/strong&gt; to ensure code quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://react-monetize.now.sh"&gt;https://react-monetize.now.sh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;As for this moment it has over 700 downloads on npm and is powering projects like &lt;a href="https://dev.to/dfoderick/gftw-hackathon-submission-money-chat-15ii"&gt;Money Chat&lt;/a&gt; and &lt;a href="https://dev.to/mrmuhammadali/web-monetization-made-easy-for-gatsby-4081"&gt;gatsby-plugin-monetization&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://coil.com"&gt;Coil&lt;/a&gt;, the pioneers on Web Monetization, are considering using the library. (will update the post if that happens)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hope you liked the project and feel free to comment, make a PR, fork it or use it in your own idea!&lt;br&gt;
Stay safe and have a great week!&lt;/p&gt;

</description>
      <category>webmonetization</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>react-monetize beta is available now 💸</title>
      <dc:creator>Guido Vizoso</dc:creator>
      <pubDate>Tue, 12 May 2020 17:07:14 +0000</pubDate>
      <link>https://dev.to/guidovizoso/introducing-react-monetize-29hp</link>
      <guid>https://dev.to/guidovizoso/introducing-react-monetize-29hp</guid>
      <description>&lt;p&gt;Hi everyone!&lt;/p&gt;

&lt;p&gt;Recently I made a &lt;a href="https://dev.to/guidovizoso/announcing-react-monetize-1ijj"&gt;post&lt;/a&gt; about react-monetize and what I'm trying to achieve. Today I reached a working MVP and I'd love to share it with you to receive feedback, contributions, ideas or whatever you like.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is react-monetize?
&lt;/h2&gt;

&lt;p&gt;It's a set of helpers and hooks to easily integrate the new &lt;a href="https://webmonetization.org/"&gt;Web Monetization API&lt;/a&gt; in your React project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can I use it on SSR?
&lt;/h2&gt;

&lt;p&gt;It's been tested on standalone React, Create React App and Next.js. Further using is required to see if it works on Gatsby, Preact and other frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What technologies is it built on?
&lt;/h2&gt;

&lt;p&gt;Currently Typescript, React (&amp;gt;=16.8) and Rollup. ESLint, Prettier and Jest are coming soon!&lt;/p&gt;

&lt;h2&gt;
  
  
  How can I use it?
&lt;/h2&gt;

&lt;p&gt;Installation, usage information and examples can be found on the Github repo:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vWogaON8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-28d89282e0daa1e2496205e2f218a44c755b0dd6536bbadf5ed5a44a7ca54716.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/guidovizoso"&gt;
        guidovizoso
      &lt;/a&gt; / &lt;a href="https://github.com/guidovizoso/react-monetize"&gt;
        react-monetize
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Helpers and hooks to speed up your integration with Web Monetization API
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h2&gt;
💸
&lt;/h2&gt;
&lt;h1&gt;
react-monetize&lt;/h1&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/82d759d665d52db153f8f2e0a1f76bc732b6f9a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d302e312e302d626c75652e7376673f63616368655365636f6e64733d32353932303030"&gt;&lt;img alt="Version" src="https://camo.githubusercontent.com/82d759d665d52db153f8f2e0a1f76bc732b6f9a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d302e312e302d626c75652e7376673f63616368655365636f6e64733d32353932303030"&gt;&lt;/a&gt;
  &lt;a href="https://raw.githubusercontent.com/guidovizoso/react-monetize/master/#"&gt;
    &lt;img alt="License: MIT" src="https://camo.githubusercontent.com/3ccf4c50a1576b0dd30b286717451fa56b783512/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://twitter.com/guido_vizoso" rel="nofollow"&gt;
    &lt;img alt="Twitter: guido\_vizoso" src="https://camo.githubusercontent.com/1412a76c3cc56853a4ebf3810c5777c726213793/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f677569646f5f76697a6f736f2e7376673f7374796c653d736f6369616c"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Helpers and hooks to speed up your integration with &lt;a href="https://webmonetization.org/" rel="nofollow"&gt;Web Monetization API&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
Install&lt;/h2&gt;
&lt;p&gt;Currently supports React, Create React App and Next.Js
Not yet testd in Gatsby or Preact.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;yarn add react-monetize&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;Wrap your app with the &lt;code&gt;MonetizeProvider&lt;/code&gt; and add your payment pointer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can read how to get one here: &lt;a href="https://webmonetization.org/docs/receiving" rel="nofollow"&gt;https://webmonetization.org/docs/receiving&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; { &lt;span class="pl-smi"&gt;MonetizeProvider&lt;/span&gt; } &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;react-monetize&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-en"&gt;App&lt;/span&gt;() {
  &lt;span class="pl-k"&gt;return&lt;/span&gt; (
    &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;MonetizePovider paymentPointer&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;myPaymentPointer&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;YourApp &lt;span class="pl-k"&gt;/&lt;/span&gt;&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-k"&gt;/&lt;/span&gt;MonetizeProvider&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;
  )
}
&lt;span class="pl-k"&gt;export&lt;/span&gt; &lt;span class="pl-c1"&gt;default&lt;/span&gt; &lt;span class="pl-smi"&gt;App&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now you have two hooks available to use anywhere in your app:&lt;/p&gt;
&lt;h3&gt;
useStatus&lt;/h3&gt;
&lt;p&gt;State is the current state provided by Web Monetization API according to this &lt;a href="https://webmonetization.org/docs/api#states" rel="nofollow"&gt;list&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; { &lt;span class="pl-smi"&gt;useStatus&lt;/span&gt; } &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;react-monetize&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-en"&gt;Component&lt;/span&gt;() {
  &lt;span class="pl-k"&gt;const&lt;/span&gt; { &lt;span class="pl-c1"&gt;state&lt;/span&gt;, &lt;span class="pl-c1"&gt;events&lt;/span&gt; } &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;useStatus&lt;/span&gt;();

  &lt;span class="pl-k"&gt;return&lt;/span&gt; (
    &lt;span class="pl-k"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;p&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;State&lt;span class="pl-k"&gt;:&lt;/span&gt; {state}&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/guidovizoso/react-monetize"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Please feel free to leave a comment or reach out to me on &lt;a href="https://twitter.com/guido_vizoso"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hope you like it and have a good week!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>gftwhackathon</category>
      <category>webmonetization</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Announcing react-monetize ⚛️</title>
      <dc:creator>Guido Vizoso</dc:creator>
      <pubDate>Mon, 11 May 2020 17:22:19 +0000</pubDate>
      <link>https://dev.to/guidovizoso/announcing-react-monetize-1ijj</link>
      <guid>https://dev.to/guidovizoso/announcing-react-monetize-1ijj</guid>
      <description>&lt;p&gt;Why re-invent the wheel everytime?&lt;br&gt;
If there's something we as React devs love is the infinite and ever expanding ecosystem of tools and packages at our disposal.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://dev.to/devteam/announcing-the-grant-for-the-web-hackathon-on-dev-3kd1"&gt;GFTW Hackaton&lt;/a&gt; provided a unique opportunity to add our grain of sand to the community and build something to help future users of the &lt;code&gt;web monetization api&lt;/code&gt;. That's why I'm building &lt;code&gt;react-monetize 💸&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is it about?
&lt;/h2&gt;

&lt;p&gt;It's a set of helpers to speed up development time and integrate easily with the new &lt;a href="https://webmonetization.org/docs/getting-started.html"&gt;Web Monetization Api&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Is there a mission
&lt;/h2&gt;

&lt;p&gt;Yes. It has to be easy to use, performant and must support React and Next.js.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prototype
&lt;/h2&gt;

&lt;p&gt;To use &lt;code&gt;react-monetize&lt;/code&gt; you'll have to wrap your app in a &lt;code&gt;MonetizeProvider&lt;/code&gt; and give it a payment pointer. After that you'll have the data available for you at any time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MonetizeProvider&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-monetize&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MonetizeProvider&lt;/span&gt; &lt;span class="na"&gt;paymentPointer=&lt;/span&gt;&lt;span class="s2"&gt;"myPaymentPointer"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AppCode&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;MonetizeProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;Please feel free to comment your thoughts about the project and any idea is welcomed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Have a great week!
&lt;/h3&gt;

</description>
      <category>webmonetization</category>
      <category>gftwhackathon</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>React in real life ⚛️ - Simplifying with Context and Hooks</title>
      <dc:creator>Guido Vizoso</dc:creator>
      <pubDate>Fri, 10 Jan 2020 15:53:59 +0000</pubDate>
      <link>https://dev.to/guidovizoso/react-in-real-life-simplifying-with-context-and-hooks-db9</link>
      <guid>https://dev.to/guidovizoso/react-in-real-life-simplifying-with-context-and-hooks-db9</guid>
      <description>&lt;p&gt;Hi there!&lt;/p&gt;

&lt;p&gt;I've been thinking for a while about making a series of post to share some day to day tasks the team and I have been facing. This is the first one.&lt;/p&gt;

&lt;p&gt;Not all React apps are the same. Some of them use UI libraries, others doesn't. You can use Next or any SSR, JS or Typescript, REST or GraphQL, and so on. But there's something any of us can't escape and it's &lt;em&gt;state management&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Our site uses a headless CMS to handle dynamic pages and data except for some custom pages with transactional components. This architecture made using Redux a no go because global state wasn't necessary.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Recently we were assigned a task to develop a custom page that would handle a complex state with user flow, steps, multiple options, statuses and API calls. Using only context would've been a nightmare because it'd have been huge and hard to manage. State per component was also discarded because some things had to be shared between components.&lt;/p&gt;

&lt;h3&gt;
  
  
  The solution
&lt;/h3&gt;

&lt;p&gt;We came up with an idea to use Context as a global state and custom hooks to populate it via API calls and simplify information to the components.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step by step of how we did it
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Our first step is creating our Context
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Context.js&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createContext&lt;/span&gt;&lt;span class="p"&gt;([{},&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{}]);&lt;/span&gt; &lt;span class="c1"&gt;// Our empty Context ready.&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;userFlow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{...},&lt;/span&gt;
    &lt;span class="na"&gt;otherData&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{...},&lt;/span&gt;
    &lt;span class="na"&gt;aLotOfData&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[...]&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt; &lt;span class="c1"&gt;// Our context is a state hook ;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Provider&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{[&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;]}&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;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Context.Provider&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Provider&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This Context gives the consumer two values: &lt;em&gt;state&lt;/em&gt;, the info, and &lt;em&gt;setState&lt;/em&gt;, the method to update that same info.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Time to create our custom hooks!
&lt;/h4&gt;

&lt;p&gt;Our goal here is to use the information provided by Context, make the API calls and simplify the data so the components won't have a hard time consuming it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// hooks/useUserFlowData.js&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useContext&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Context&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../Context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;useUserFlowData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Our values from Context&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;updateData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&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;setState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prevState&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;prevState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;userFlow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;userFlow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}));&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt; &lt;span class="c1"&gt;// Our methods to update the state&lt;/span&gt;

  &lt;span class="c1"&gt;// Now we return only the relevant part of the state for the component and the method to update it&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userFlow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;updateData&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;useUserFlowData&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

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



&lt;h4&gt;
  
  
  3. Consuming the hook from the component
&lt;/h4&gt;

&lt;p&gt;We're ready to use our custom hook from our component. Let's get to it!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// components/UserData.js&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;useUserFlowData&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../../hooks/useUserFlowData&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;updateData&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useUserFlowData&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Our data and methods&lt;/span&gt;

  &lt;span class="k"&gt;return&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;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;span&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;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/span&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;updateData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;New Name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Update&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And that's it! Your component is now using a custom hook to get and modify specific data from a huge Context.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Important note: I'm assuming you already have experience with React and Context. Don't forget to wrap your upper most component with the Context Provider&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here's a working example on CodeSandbox:&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://codesandbox.io/embed/magical-cache-4xye4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thank you very much for scrolling all the way here!&lt;/p&gt;

&lt;p&gt;If you like this kind of posts or have any suggestion / idea to improve just let me know.&lt;/p&gt;

&lt;p&gt;Also, I'm using Twitter as a dev for the first time so you can follow me at &lt;a href="https://twitter.com/guido_vizoso"&gt;guido_vizoso&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Emojiflix - I built a React app to try SVG</title>
      <dc:creator>Guido Vizoso</dc:creator>
      <pubDate>Mon, 02 Dec 2019 14:29:22 +0000</pubDate>
      <link>https://dev.to/guidovizoso/emojiflix-i-built-a-react-app-to-try-svg-25kl</link>
      <guid>https://dev.to/guidovizoso/emojiflix-i-built-a-react-app-to-try-svg-25kl</guid>
      <description>&lt;p&gt;Hi reader!&lt;/p&gt;

&lt;p&gt;I've been building this simple web app with React over the weekend to see what SVG can do. I'm amazed by how this tech can help us speed development up and the support it has.&lt;/p&gt;

&lt;p&gt;This simple website will let you choose from a variety of options to create your own emoji so feel fry to try it.&lt;/p&gt;

&lt;p&gt;Here's the url:&lt;br&gt;
&lt;a href="https://emojiflix.now.sh"&gt;https://emojiflix.now.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here you can check the source code:&lt;br&gt;
&lt;a href="https://github.com/guidovizoso/emojiflix"&gt;https://github.com/guidovizoso/emojiflix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Edit: I've added the ability to download your custom emoji as SVG!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want to give it a look and tell me what do you think about it?&lt;/p&gt;

&lt;p&gt;Thanks for reading and have a great week!&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>React-Redux headstart for busy people</title>
      <dc:creator>Guido Vizoso</dc:creator>
      <pubDate>Wed, 30 May 2018 01:51:49 +0000</pubDate>
      <link>https://dev.to/guidovizoso/react-redux-headstart-for-busy-people-g50</link>
      <guid>https://dev.to/guidovizoso/react-redux-headstart-for-busy-people-g50</guid>
      <description>&lt;p&gt;Hi reader! This is the sequel to my previous post: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/guidovizoso" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.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%2F47614%2F4ec8de5a-2be8-4840-8e4b-743af3b80c19.png" alt="guidovizoso"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/guidovizoso/react-headstart-for-busy-people-5aid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;React headstart for busy people&lt;/h2&gt;
      &lt;h3&gt;Guido Vizoso ・ May 26 '18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#boilerplate&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;It started as a way to simplify my development process but I figured out it's time to publish and document what I do so... Here we are!&lt;/p&gt;

&lt;h2&gt;
  
  
  Content
&lt;/h2&gt;

&lt;p&gt;This boilerplate has what I consider the minimun structure for any react-redux application: Wepack, Babel, React, Redux, Styled Components and ESlint.&lt;br&gt;
Github repo: &lt;a href="https://github.com/guidovizoso/react-redux-boilerplate" rel="noopener noreferrer"&gt;https://github.com/guidovizoso/react-redux-boilerplate&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;p&gt;Installing:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/guidovizoso/react-redux-boilerplate.git
npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run dev /* Runs webpack dev server and live reloading */
npm run start /* Runs webpack in production mode with optimizations */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Done!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjhvhqsg273598aivpxrc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjhvhqsg273598aivpxrc.png" alt="Webpack dev server running"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Folder structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── src
│   ├── index.js // Renders everything
│   ├── App.jsx // Main component
│   ├── store.js // Redux store generator
│   ├── components // Pretty much explains itself
│   ├── actions // Dispatch executers
│   ├── reducers // Redux Reducers
│   └── assets // Images and stuff goes here
├── dist // Compiled files goes here
├── package.json
├── .babelrc
├── .eslintrc
├── webpack.common.js
├── webpack.dev.js
├── webpack.prod.js
└── .gitignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Issues
&lt;/h2&gt;

&lt;p&gt;If you're using this boilerplate and encounter any issue, please let me know!&lt;br&gt;
&lt;a href="https://github.com/guidovizoso/react-redux-boilerplate/isues" rel="noopener noreferrer"&gt;https://github.com/guidovizoso/react-redux-boilerplate/isues&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Future posts
&lt;/h2&gt;

&lt;p&gt;React &amp;amp; Redux have a steep learning curve, that's for sure. If you want a tutorial about that just comment it out. Have a great day!&lt;/p&gt;

</description>
      <category>react</category>
      <category>redux</category>
      <category>boilerplate</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React headstart for busy people</title>
      <dc:creator>Guido Vizoso</dc:creator>
      <pubDate>Sat, 26 May 2018 23:04:33 +0000</pubDate>
      <link>https://dev.to/guidovizoso/react-headstart-for-busy-people-5aid</link>
      <guid>https://dev.to/guidovizoso/react-headstart-for-busy-people-5aid</guid>
      <description>&lt;p&gt;Hi reader! If you're building the same React initial config over and over this may help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;It started as a way to simplify my development process but I figured out it's time to publish and document what I do so... Here we are!&lt;/p&gt;

&lt;h2&gt;
  
  
  Content
&lt;/h2&gt;

&lt;p&gt;This boilerplate has what I consider the minimun structure for any react application: Wepack, Babel, React, Styled Components and ESlint.&lt;br&gt;
Github repo: &lt;a href="https://github.com/guidovizoso/react-boilerplate" rel="noopener noreferrer"&gt;https://github.com/guidovizoso/react-boilerplate&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Variables
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Default project &amp;gt; &lt;strong&gt;master branch&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;SASS project &amp;gt; &lt;strong&gt;sass branch&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;PostCSS project &amp;gt; &lt;strong&gt;postcss branch&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;p&gt;Installing:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/guidovizoso/react-boilerplate.git
npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run dev /* Runs webpack dev server and live reloading */
npm run start /* Runs webpack in production mode with optimizations */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Done!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmxg8ipierav31an755s9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmxg8ipierav31an755s9.png" alt="Webpack dev server running"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues
&lt;/h2&gt;

&lt;p&gt;If you're using this boilerplate and encounter any issue, please let me know!&lt;br&gt;
&lt;a href="https://github.com/guidovizoso/react-boilerplate/isues" rel="noopener noreferrer"&gt;https://github.com/guidovizoso/react-boilerplate/isues&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Edit
&lt;/h2&gt;

&lt;p&gt;I've just added SASS and PostCSS support!&lt;/p&gt;

</description>
      <category>react</category>
      <category>boilerplate</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
