<?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: cesaruseche18</title>
    <description>The latest articles on DEV Community by cesaruseche18 (@cesareuseche).</description>
    <link>https://dev.to/cesareuseche</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%2F515250%2Ff4eaddf0-b280-495a-ac77-b7a0621d1304.png</url>
      <title>DEV Community: cesaruseche18</title>
      <link>https://dev.to/cesareuseche</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cesareuseche"/>
    <language>en</language>
    <item>
      <title>How to optimize your GatsbyJS Website to crush the LightHouse Google Report</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Fri, 17 Dec 2021 18:15:03 +0000</pubDate>
      <link>https://dev.to/cesareuseche/how-to-optimize-your-gatsbyjs-website-to-crush-the-lighthouse-google-report-2fom</link>
      <guid>https://dev.to/cesareuseche/how-to-optimize-your-gatsbyjs-website-to-crush-the-lighthouse-google-report-2fom</guid>
      <description>&lt;p&gt;I created a website for one of my clients as a freelance and they are a traveling agency located in South America, the website was created using GatsbyJS as the front end and Strapi as the Backend, were the content manager is going to be able to handle all the content of the Website dynamically. &lt;/p&gt;

&lt;p&gt;On this Tutorial I want to explain how to have a very high score on the Lighthouse report, this is going to help your website to rank much better and have a very high performance value, and users are going to have a great experience on your website. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to handle images and lazy Loading with Gatsby?
&lt;/h2&gt;

&lt;p&gt;You will need to use these plugins (gatsby-plugin-sharp, gatsby-transformer-sharp, gatsby-plugin-image). &lt;/p&gt;

&lt;p&gt;This last plugin called &lt;a href="https://www.gatsbyjs.com/plugins/gatsby-plugin-image/" rel="noopener noreferrer"&gt;gatsby-plugin-image&lt;/a&gt; it's very essential to handle lazy loading since you can specify which kind of lazy loading placeholder you want. Also images are going to render as a webp which google recommends having to improve your image performance. Here is an example how the image are going to render. &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy99cmbnueusn6glol0x6.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy99cmbnueusn6glol0x6.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, I want to explain how to use the plugin. as the Gatsby documentation states "if you are using an image that will be the same each time the component is used, such as a logo or front page hero image, you can use the StaticImage component. The image can be a local file in your project or an image hosted on a remote server. Any remote images are downloaded and resized at build time." Here's an example.&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;StaticImage
          src="../images/Background-pic.jpg"
          className="hero-style"
          alt="omega homepage background picture"
          layout="fullWidth"
          placeholder="tracedSVG"
        /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But if you are using Dynamic images you will need to use GatsbyImage.&lt;/p&gt;

&lt;p&gt;First, Add the image to your page query.&lt;/p&gt;

&lt;p&gt;Then, Configure your image using childImageSharp&lt;/p&gt;

&lt;p&gt;Finally, Display the image. Here's an example.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export const query = graphql`
  query getSingleDestino($titulo: String) {
    strapiDestinos(titulo: { eq: $titulo }) {
      descripcion
      imagen {
        localFile {
          childImageSharp {
            gatsbyImageData(placeholder: TRACED_SVG, layout: FULL_WIDTH)
          }
        }
      }
    }
  }
`;

const DestinosTemplate = ({ pageContext: { titulo }, data }) =&amp;gt; {
  return (
    &amp;lt;&amp;gt;
      &amp;lt;GatsbySeo
        title={`Destino ${titulo}`}
        description={`Destino de Viaje ${titulo} con los mejores precios`}
        canonical={`https://omega-agencia.netlify.app/destinos/${titulo}`}
      &amp;lt;section&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;div className="destinos-single-page-title"&amp;gt;
            &amp;lt;Title title={titulo} /&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;div className="destinos-single-page-align"&amp;gt;
            &amp;lt;div className="destinos-single-page-description"&amp;gt;
              &amp;lt;div
                className="destinos-description"
                dangerouslySetInnerHTML={{
                  __html: data.strapiDestinos.descripcion,
                }}
              &amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div className="destinos-single-page-image"&amp;gt;
              &amp;lt;GatsbyImage
                image={getImage(data?.strapiDestinos.imagen.localFile)}
                alt={titulo}
                className="destinos-single-page-image-description"
                formats={["AUTO", "WEBP", "AVIF"]}
                fadeIn="false"
              /&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;CTAComponent /&amp;gt;
          &amp;lt;ContactForm /&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/section&amp;gt;
    &amp;lt;/&amp;gt;
  );
};

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

&lt;/div&gt;



&lt;p&gt;One last thing to mention about optimizing images is that Google request that all the images have a width and height specify for each image, if not that would hurt your lighthouse performance score. &lt;/p&gt;

&lt;p&gt;Finally, Please don't forget to always add an alternative text to each image that you have if you don't it could hurt your lighthouse score report and you SEO significantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to minimize bundle size and page loading speed?
&lt;/h2&gt;

&lt;p&gt;Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), and Total Blocking Time (TBT) are 3 performance metrics that google takes into account when scoring a site performance, it is very important to score very well on these 3 to have a high score.&lt;/p&gt;

&lt;p&gt;Total Blocking Time (TBT) is defined as the total amount of time between First Contentful Paint (FCP) and Time to Interactive (TTI).&lt;/p&gt;

&lt;p&gt;TBT is a measurement of how long the browser's main thread is blocked by long tasks, such as parsing JavaScript (JS).&lt;/p&gt;

&lt;p&gt;To improve it there's a great solution to the JS execution time and the bundle size of your dependencies and that is called &lt;strong&gt;Preact&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Preact is a small (3kb), fast alternative to React. And thanks to gatsby-plugin-preact, switching your Gatsby-site from running on React to Preact is incredibly easy.&lt;/p&gt;

&lt;p&gt;You just need to run the following command and you will be set to go after listing the 'gatsby-plugin-preact' under you plugin list on the gatsby-config.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save gatsby-plugin-preact preact preact-render-to-string
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to check a dependency size before you install it to your project, this &lt;strong&gt;&lt;a href="https://bundlephobia.com/" rel="noopener noreferrer"&gt;site&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;(bundlephobia)&lt;/strong&gt; it's a great tool to compare dependencies, find out the size of any dependency and find similar dependencies that weigh less to the ones that you want to install. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to minimize the size Material UI, TailwindCSS, Boostrap5?&lt;/strong&gt;&lt;br&gt;
These are very big libraries and they could hurt your loading time since they are very big, the solution to minimize the size is using  PurgeCSS to remove any unused classes.&lt;/p&gt;

&lt;p&gt;Here's the website if you want to have a look, the content it's not finalize yet :) and the agency is buying a new domain at the moment of this article &lt;/p&gt;

&lt;p&gt;&lt;a href="https://omega-agencia.netlify.app/" rel="noopener noreferrer"&gt;https://omega-agencia.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope you will find this tutorial helpful, if you have any questions or you need any help please comment or send me a DM through Linkedin or Github. &lt;/p&gt;

&lt;p&gt;Follow me on Github &amp;amp; Connect with me on LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche" rel="noopener noreferrer"&gt;https://github.com/cesareuseche&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/cesar-useche-profile/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/cesar-useche-profile/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>gatsby</category>
      <category>performance</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to build an SMTP email server for your React App</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Sun, 19 Sep 2021 22:31:46 +0000</pubDate>
      <link>https://dev.to/cesareuseche/how-to-build-an-smtp-email-server-for-your-react-app-1l88</link>
      <guid>https://dev.to/cesareuseche/how-to-build-an-smtp-email-server-for-your-react-app-1l88</guid>
      <description>&lt;p&gt;Today, I want to share a small tutorial about how to create an email server using express that will work with your React app. &lt;/p&gt;

&lt;p&gt;First, we will start with getting all the dependencies that we need to build the email server using ExpressJs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Express: Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. APIs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nodemailer: Nodemailer is a module for Node.js applications to allow easy as cake email sending.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;dotenv: dotenv is a zero-dependency module that loads environment variables from a .env file into process.env.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Body Parser: Node.js body parsing middleware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cors: CORS is a node.js package for providing a Connect/Express middleware that can be used to enable CORS with various options.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside your email server directory run the following on your terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install express nodemailer dotenv cors body-parser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's start building the server establishing all the required dependencies for the server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require('dotenv').config()

// routes.js
const router = require('express').Router()
const path = require('path')
const bodyParser = require("body-parser")
const nodemailer = require('nodemailer')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, we will create our server using cors, and that it will run on port 5000.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.use(cors())
app.use(express.json())
app.use("/", router)
app.listen(5000, () =&amp;gt; console.log("Server Running"))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we will set up the authentication using our Gmail account credentials, it is really important that you remember .env file in the root directory instead of the current location.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const contactEmail = {
    //this is the authentication for sending email.
host: 'smtp.gmail.com',
port: 465,
secure: true, // use TLS
//create a .env file and define the process.env variables 
    with the credentials you want to use for your email server.
auth: {
    user: process.env.SMTP_TO_EMAIL,
    pass: process.env.SMTP_TO_PASSWORD,
},
}

const contactEmail = nodemailer.createTransport(contactEmail)
    transporter.verify((error, success) =&amp;gt; {
if (error) {
    //if error happened code ends here
    console.error(error)
} else {
    //this means success
    console.log('Ready to send mail!')
}
})

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

&lt;/div&gt;



&lt;p&gt;Now lets build the API. We are also defining the schema for our JSON object (email).&lt;/p&gt;

&lt;p&gt;Also, we are telling Nodemailer about the form data it will be receiving from the front-end and how it should translate said data into a structured email.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;router.post("/contact", (req, res) =&amp;gt; {
  from: process.env.SMTP_FROM_EMAIL,
    to: process.env.SMTP_TO_EMAIL,
    subject: 'New Contact Form Submission',
    text: `
      from:
      ${req.body.name}

      contact details
      email: ${req.body.email}
      phone: ${req.body.tel}

      message:
      ${req.body.message}`,
    }
contactEmail.sendMail(mail, error =&amp;gt; {
    if (error) {
      res.json({ status: "ERROR" })
    } else {
      res.json({ status: "Message Sent" })
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, we will connect the backend server with the React front end contact form component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const ContactForm = () =&amp;gt; {
const handleSubmitForm = async e =&amp;gt; {
    e.preventDefault()
    setStatus("Sending...")
    const { name, email, phone, message } = e.target.elements
    let details = {
      name: name.value,
      email: email.value,
      phone: phone.value,
    }
    let response = await fetch("http://localhost:5000/contact", {
      method: "POST",
      headers: {
        "Content-Type": "application/json;charset=utf-8",
      },
      body: JSON.stringify(details),
    })
return (
    &amp;lt;&amp;gt;
       &amp;lt;form
          onSubmit={handleSubmitForm}
        &amp;gt;
        &amp;lt;input type="text" name="name" placeholder="Full Name" /&amp;gt;
        &amp;lt;input type="email" name="email" placeholder="Email"/&amp;gt;
        &amp;lt;input type="phone" name="phone" placeholder="Phone number"/&amp;gt;
      &amp;lt;/form&amp;gt;
   &amp;lt;/&amp;gt;
)
}

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

&lt;/div&gt;



&lt;p&gt;I hope you can find this tutorial really helpful, please let me know if you have any questions, I would love to help!&lt;/p&gt;

&lt;p&gt;Follow me on Github &amp;amp; Connect with me on LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche"&gt;https://github.com/cesareuseche&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/cesar-useche-profile/"&gt;https://www.linkedin.com/in/cesar-useche-profile/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>node</category>
    </item>
    <item>
      <title>How to build a React FAQ accordion</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Thu, 16 Sep 2021 23:22:05 +0000</pubDate>
      <link>https://dev.to/cesareuseche/how-to-build-a-react-faq-accordion-165i</link>
      <guid>https://dev.to/cesareuseche/how-to-build-a-react-faq-accordion-165i</guid>
      <description>&lt;p&gt;Today, I want to share how to build an FAQ accordion using react. The FAQ section it's a really important section of an app or a website, since you have an opportunity to have important questions and answers about your product or even your industry and rank better organically in Google. &lt;/p&gt;

&lt;p&gt;I hope I'm able to help anyone who wants or needs to build an FAQ section for their website or their app. &lt;/p&gt;

&lt;p&gt;I'm leaving the URL of the code and styles at the end of the article and also a working demo if you want to check it out. &lt;/p&gt;

&lt;p&gt;We will use 3 different hooks. useState, useRef and useEffect Hooks. &lt;/p&gt;

&lt;p&gt;First, we will use the useState hook to change the state of the accordion, like so. &lt;/p&gt;

&lt;p&gt;Then, we will use the useRef hook that allow us to mutate the useRef object.&lt;/p&gt;

&lt;p&gt;Finally, we will use the useEffect hook to determine the height of the accordion dynamically once the user clicks on the accordion&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [active, setActive] = useState(false);

  const contentRef = useRef(null);

  useEffect(() =&amp;gt; {
    contentRef.current.style.maxHeight = active
      ? `${contentRef.current.scrollHeight}px`
      : "0px";
  }, [contentRef, active]);

  const toggleAccordion = () =&amp;gt; {
    setActive(!active);
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we have the JSX part of the code using an onClick and ternary operators, like so&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
    &amp;lt;&amp;gt;
      &amp;lt;div className="App"&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;button
            className={`question-section ${active}`}
            onClick={toggleAccordion}
          &amp;gt;
            &amp;lt;div&amp;gt;
              &amp;lt;div className="question-align"&amp;gt;
                &amp;lt;h4 className="question-style"&amp;gt;
                  Why do you like web developemnt
                &amp;lt;/h4&amp;gt;
                &amp;lt;FiPlus
                  className={active ? `question-icon rotate` : `question-icon`}
                /&amp;gt;
              &amp;lt;/div&amp;gt;
              &amp;lt;div
                ref={contentRef}
                className={active ? `answer answer-divider` : `answer`}
              &amp;gt;
                &amp;lt;p&amp;gt;Because I love coding&amp;lt;/p&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/&amp;gt;
  );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope you can find this short tutorial helpful, remember that here you have the url of the code and styles if you want to check it out.&lt;/p&gt;

&lt;p&gt;Code: &lt;a href="https://codesandbox.io/s/infallible-cloud-wiy4y?file=/src/App.js:465-1258"&gt;https://codesandbox.io/s/infallible-cloud-wiy4y?file=/src/App.js:465-1258&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demo: &lt;a href="https://wiy4y.csb.app/"&gt;https://wiy4y.csb.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on Github &amp;amp; Connect with me on LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche"&gt;https://github.com/cesareuseche&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/cesar-useche-profile/"&gt;https://www.linkedin.com/in/cesar-useche-profile/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>css</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to build a React Video Modal with Hooks</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Wed, 15 Sep 2021 23:14:29 +0000</pubDate>
      <link>https://dev.to/cesareuseche/how-to-build-a-react-video-modal-with-hooks-4on4</link>
      <guid>https://dev.to/cesareuseche/how-to-build-a-react-video-modal-with-hooks-4on4</guid>
      <description>&lt;p&gt;I want to share with other Front End developers how to build a React Video modal from scratch.&lt;/p&gt;

&lt;p&gt;I hope everyone finds this small tutorial really helpful.&lt;/p&gt;

&lt;p&gt;I'm leaving the url of the working modal and code at the end of the tutorial if you want to test it and and check out the code &lt;/p&gt;

&lt;p&gt;First, we need to use the useState Hook to change the state of the modal once the user clicks the modal button and clicks the close modal button.&lt;/p&gt;

&lt;p&gt;Second, we will do the same to build a loader icon once the modal is open and waits to fetch the video from YouTube like so.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [modal, setModal] = useState(false);
  const [videoLoading, setVideoLoading] = useState(true);

  const openModal = () =&amp;gt; {
    setModal(!modal);
  };

  const spinner = () =&amp;gt; {
    setVideoLoading(!videoLoading);
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Third, we will start working on the JSX part of the code setting up an onClick event to the button and using the ternary operator for the modal and the loader icon like so.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;button onClick={openModal} className=""&amp;gt;
        Click Me!
        {modal ? (
          &amp;lt;section className="modal__bg"&amp;gt;
            &amp;lt;div className="modal__align"&amp;gt;
              &amp;lt;div className="modal__content" modal={modal}&amp;gt;
                &amp;lt;IoCloseOutline
                  className="modal__close"
                  arial-label="Close modal"
                  onClick={setModal}
                /&amp;gt;
                &amp;lt;div className="modal__video-align"&amp;gt;
                  {videoLoading ? (
                    &amp;lt;div className="modal__spinner"&amp;gt;
                      &amp;lt;BiLoaderAlt
                        className="modal__spinner-style"
                        fadeIn="none"
                      /&amp;gt;
                    &amp;lt;/div&amp;gt;
                  ) : null}
                  &amp;lt;iframe
                    className="modal__video-style"
                    onLoad={spinner}
                    loading="lazy"
                    width="800"
                    height="500"
                    src="https://www.youtube.com/embed/4UZrsTqkcW4"
                    title="YouTube video player"
                    frameBorder="0"
                    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
                    allowfullscreen
                  &amp;gt;&amp;lt;/iframe&amp;gt;
                &amp;lt;/div&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/section&amp;gt;
        ) : null}
      &amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here I'm leaving the url of the code if you also want to check out the CSS styles and also the live demo. &lt;/p&gt;

&lt;p&gt;Code: &lt;a href="https://codesandbox.io/s/nkwxb?file=/src/App.js:423-1898"&gt;https://codesandbox.io/s/nkwxb?file=/src/App.js:423-1898&lt;/a&gt;&lt;br&gt;
Live Demo: &lt;a href="https://nkwxb.csb.app/"&gt;https://nkwxb.csb.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope I'm able to help anyone that wants to build a React Modal Video from scratch without using any library. &lt;/p&gt;

&lt;p&gt;Follow me on Github &amp;amp; Connect with me on LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche"&gt;https://github.com/cesareuseche&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/cesar-useche-profile/"&gt;https://www.linkedin.com/in/cesar-useche-profile/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>css</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Caesar Text Cipher Solution CS50 Problem set 2</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Thu, 10 Jun 2021 17:51:59 +0000</pubDate>
      <link>https://dev.to/cesareuseche/caesar-text-cipher-solution-cs50-problem-set-2-4j7m</link>
      <guid>https://dev.to/cesareuseche/caesar-text-cipher-solution-cs50-problem-set-2-4j7m</guid>
      <description>&lt;p&gt;On this week Problem set I had to make a text cipher solution made with &lt;strong&gt;C&lt;/strong&gt;, this was a great challenge and it was very fun because you get used to working with &lt;strong&gt;arrays and ASCII values&lt;/strong&gt; test a few solutions before finding the right solution to this problem. &lt;/p&gt;

&lt;p&gt;If you are starting to Program with &lt;strong&gt;C&lt;/strong&gt; and you are researching for a solution for this problem here I'm sharing how I made my solution that passed the CS50 check command. &lt;/p&gt;

&lt;p&gt;Before starting remember that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Every letter has an ASCII value&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;This is a great example to have a look before starting to code your solution.
&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%2Farticles%2Faglc10dbqt3wnut1btff.png" alt="Cipher text example"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;First we start with a main function that it will take 2 arguments, first one takes number of arguments, and the second one takes an array of strings, like so. &lt;/p&gt;

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

int main(int argc, string argv[])


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

&lt;/div&gt;

&lt;p&gt;Then, we need to checked if the user inputs less than or more than two arguments the user should be re-prompt. The second check we need to do if one of the arguments that the user inputs is alpha if it not alpha the user needs to e re-prompt again, we are going to loop through the string and we are going to check if the argument isalpha.&lt;/p&gt;

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

int main(int argc, string argv[])
{
    if (argc != 2)
    {
        printf("Usage: ./ceasar k");
        return 1;
    }

    // checking if one of the arguments isalpha (we need an integer) - Looping through the string of integers
    for (int key = 0; key &amp;lt; strlen(argv[1]); key++)
    {
        if (isalpha(argv[1][key]))
        {
            printf("Usage: ./caesar key\n");
            return 1;
        }
    }


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

&lt;/div&gt;

&lt;p&gt;Now, we are going to use a function called &lt;strong&gt;atoi&lt;/strong&gt;, &lt;strong&gt;atoi&lt;/strong&gt; it takes a string and transform that string into an integer. Then, we ask the user to input the plaintext and we need to loop through each letter of the plaintext, if it's not alpha we are going to print the current element of the array.&lt;/p&gt;

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

 // iterates over the plain text with a for loop
    for (int i = 0, length = strlen(plaintext); i &amp;lt; length; i++)
    {
        if (!isalpha(plaintext[i]))
        {
            //prints the current element of the array if it's not alpha
            printf("%c", plaintext[i]);
            continue;
        }


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

&lt;/div&gt;

&lt;p&gt;Then, we are going to check if the current letter is uppercase and we calculate how far the current element is from lowercase "a" or uppercase "A". &lt;/p&gt;

&lt;p&gt;Finally, we apply the formula that it was giving to us so we can know exactly the index of the ciphering of the letter that we want to cipher and we print the final result&lt;/p&gt;

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

 // index of the letter cyphering
        int ci = (pi + key) % 26;

        // printing the new character cyphered
        printf("%c", ci + offset);
    }


    printf("\n");
    return 0;


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

&lt;/div&gt;

&lt;p&gt;I hope this is helpful and as always I'm leaving the whole solution down below if you want to have a look. Keep coding, Keep learning!&lt;/p&gt;

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

#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;cs50.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;ctype.h&amp;gt;


// main function takes 2 arguments, first one takes number of arguments, and the second one takes an array of strings
int main(int argc, string argv[])
{
    if (argc != 2)
    {
        printf("Usage: ./ceasar k");
        return 1;
    }

    // checking if one of the arguments isalpha (we need an integer) - Looping through the string of integers
    for (int key = 0; key &amp;lt; strlen(argv[1]); key++)
    {
        if (isalpha(argv[1][key]))
        {
            printf("Usage: ./caesar key\n");
            return 1;
        }
    }

    int key = atoi(argv[1]) % 26; // converts the ASCII to an integer from "20" to 20 as an interger

    // takes the plaintext from the user
    string plaintext = get_string("plaintext: ");

    printf("ciphertext: ");

    // iterates over the plain text with a for loop
    for (int i = 0, length = strlen(plaintext); i &amp;lt; length; i++)
    {
        if (!isalpha(plaintext[i]))
        {
            //prints the current element of the array if it's not alpha
            printf("%c", plaintext[i]);
            continue;
        }
        // checking if the current element it's uppercase
        int offset = isupper(plaintext[i]) ? 65 : 97;
        // calculating how far the current element is from lowercase "a" or uppercase "A"
        int pi = plaintext[i] - offset;
        // index of the letter cyphering
        int ci = (pi + key) % 26;

        // printing the new character cyphered
        printf("%c", ci + offset);
    }


    printf("\n");
    return 0;


}


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

&lt;/div&gt;

&lt;p&gt;Follow me on Github &amp;amp; Connect with me on LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche" rel="noopener noreferrer"&gt;https://github.com/cesareuseche&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/cesar-useche-profile/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/cesar-useche-profile/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>challenge</category>
      <category>c</category>
      <category>programming</category>
      <category>cs50</category>
    </item>
    <item>
      <title>React Navbar Change Background Color on Scroll - React JS - Gatsby</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Fri, 28 May 2021 03:10:04 +0000</pubDate>
      <link>https://dev.to/cesareuseche/react-navbar-change-background-color-on-scroll-react-js-gatsby-2a39</link>
      <guid>https://dev.to/cesareuseche/react-navbar-change-background-color-on-scroll-react-js-gatsby-2a39</guid>
      <description>&lt;p&gt;Currently I'm developing a new website for a client that I have that is a travel agency located in Caracas, Venezuela. I'm using GatsbyJS and Strapi CMS to build the website. &lt;/p&gt;

&lt;p&gt;On this tutorial I want to explain how to build a React Navbar smooth scroll background and logo change with GatsbyJS. &lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisite:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Knowledge of &lt;strong&gt;useState() React Hooks.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Knowledge of &lt;strong&gt;useEffect() React Hooks.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create your &lt;code&gt;Navbar.js&lt;/code&gt; Component.
&lt;/h3&gt;

&lt;p&gt;In my case I created a &lt;code&gt;Navbar.js&lt;/code&gt; components and a &lt;code&gt;Navbar.css&lt;/code&gt; file where all the styles of the Navbar will live.&lt;/p&gt;

&lt;p&gt;After you have your component boiler plate ready and Imported the useState and useEffect Hooks, create a state with the first element in my case I called &lt;strong&gt;navbar&lt;/strong&gt; as an initial state having a value of false and the second element as function &lt;strong&gt;setNavbar()&lt;/strong&gt; for updating the state.&lt;/p&gt;

&lt;p&gt;Then create a function I called by &lt;strong&gt;changeBackground&lt;/strong&gt; which sets the value of the state &lt;strong&gt;navbar&lt;/strong&gt; to true when we scroll down the page equal to or more than 66px that in my case that is the height of my navbar. This is done with the help of window.scrollY function. I have used this 66px value in accordance with the value of our navbar’s height (66px). Otherwise the state value remains false.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/navbar scroll changeBackground function
  const changeBackground = () =&amp;gt; {
    console.log(window.scrollY)
    if (window.scrollY &amp;gt;= 66) {
      setNavbar(true)
    } else {
      setNavbar(false)
    }
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To create the rendering of the background color change of the navbar you will have to create a useEffect where you will pass the &lt;strong&gt;changeBackground&lt;/strong&gt; function and an event listener that will be on scroll and passing the &lt;strong&gt;changeBackground&lt;/strong&gt; function, like so.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;useEffect(() =&amp;gt; {
    changeLogo()
    // adding the event when scroll change Logo
    window.addEventListener("scroll", changeLogo)
  })
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally you will need to add a conditional statement to your navbar tag className like the following.&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;nav className={navbar ? "navbar active" : "navbar"}&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope this helps you, if you want to do the same with your navbar logo you will be able to see it since  I'm attaching my whole navbar component down below. Keep coding, keep learning!&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, { useState, useEffect } from "react"
// importing navbar styles
import "../assets/css/navbar.css"
import logo from "../assets/images/logo.svg"
import logoBlue from "../assets/images/logo-blue.svg"
// responsive menu toggle icon
import { FaAlignRight } from "react-icons/fa"
// all the navbar links coming from the links constants
import pageLinks from "../constants/links"
// Link from gatsby
import { Link } from "gatsby"
const Navbar = () =&amp;gt; {
  //navbar scroll when active state
  const [navbar, setNavbar] = useState(false)

  //logo scroll when active
  const [navbarLogo, setNavbarLogo] = useState(logo)

  //navbar scroll changeBackground function
  const changeBackground = () =&amp;gt; {
    console.log(window.scrollY)
    if (window.scrollY &amp;gt;= 66) {
      setNavbar(true)
    } else {
      setNavbar(false)
    }
  }

  useEffect(() =&amp;gt; {
    changeBackground()
    // adding the event when scroll change background
    window.addEventListener("scroll", changeBackground)
  })

  //logo scroll function
  const changeLogo = () =&amp;gt; {
    if (window.scrollY &amp;gt;= 60) {
      setNavbarLogo(logoBlue)
    } else {
      setNavbarLogo(logo)
    }
  }

  useEffect(() =&amp;gt; {
    changeLogo()
    // adding the event when scroll change Logo
    window.addEventListener("scroll", changeLogo)
  })

  return (
    &amp;lt;nav className={navbar ? "navbar active" : "navbar"}&amp;gt;
      &amp;lt;div className="nav-center"&amp;gt;
        &amp;lt;div className="nav-header"&amp;gt;
          &amp;lt;Link to="/"&amp;gt;
            &amp;lt;img src={navbarLogo} alt="logo" /&amp;gt;
          &amp;lt;/Link&amp;gt;
          &amp;lt;button type="button" className="toggle-btn"&amp;gt;
            &amp;lt;FaAlignRight /&amp;gt;
          &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div className="nav-links"&amp;gt;
          {pageLinks.map(links =&amp;gt; {
            return (
              &amp;lt;Link key={links.id} to={links.url}&amp;gt;
                {links.text}
              &amp;lt;/Link&amp;gt;
            )
          })}
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt;
  )
}

export default Navbar

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

&lt;/div&gt;



&lt;p&gt;Follow me on Github &amp;amp; Connect with me on LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche"&gt;https://github.com/cesareuseche&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/cesar-useche-profile/"&gt;https://www.linkedin.com/in/cesar-useche-profile/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>gatsby</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>CS50 Mario Problem set1 Solution</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Sun, 23 May 2021 23:34:56 +0000</pubDate>
      <link>https://dev.to/cesareuseche/cs50-mario-problem-set1-solution-gmk</link>
      <guid>https://dev.to/cesareuseche/cs50-mario-problem-set1-solution-gmk</guid>
      <description>&lt;p&gt;I graduated a few months back from the &lt;a href="https://4geeksacademy.com/"&gt;4Geeks Academy&lt;/a&gt; Full Stack Development Bootcamp, it was a great experience. &lt;/p&gt;

&lt;p&gt;I have to say that attending a bootcamp helped me improve my coding skills quite a lot even though I had 10 months of previous experience as a Front End developer at the company I currently work for, I was able to gain a lot of knowledge in Back End development as well as Front End development. &lt;/p&gt;

&lt;p&gt;After graduating the bootcamp and building a few Full Stack apps and decided to learn more about computer science, and I decided to enroll in the CS50 Computer Science Course from Harvard. I have to say that the classes are amazing the assignments are quite challenging and very interesting. I have to say that I'm learning quite a lot. &lt;/p&gt;

&lt;p&gt;When I was doing the first week Lab and Problem set I decided that I will share my solutions on my blog and here I'm sharing and explaining my solution for the Mario Problem set #1. &lt;/p&gt;

&lt;h2&gt;
  
  
  Mario Problem set 1
&lt;/h2&gt;

&lt;p&gt;Recreate the Mario Pyramid in C, albeit in text, using hashes (#) for bricks, a la the below. Each hash is a bit taller than it is wide, so the pyramid itself is also be taller than it is wide.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Solution
&lt;/h3&gt;

&lt;p&gt;It is good practice to create a &lt;code&gt;pseudocode.txt&lt;/code&gt; file before you start coding any solution. This will help you to visualize and think for the solution of the problem before jumping to your IDE. Here I'm sharing my &lt;code&gt;pseudocode.txt&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 - First I need to ask the user to input the height 

2 - The user needs to input a height between 1 and 8. No less than 1 or greater than 8

3 - If the user input it's not between 1 and 8 it reprompts the user to step one and ask the user to input a new height 

4 - The program iterates from 1 through the height that it was input by the user

4.1 - For loop to create the height of the row

4.2  // for loop create the width of the pyramid

4.3 - On that iteration i%\n prints the integer hashes on a new line 

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

&lt;/div&gt;



&lt;p&gt;Create a &lt;code&gt;mario&lt;/code&gt; directory and inside create a &lt;code&gt;mario.c&lt;/code&gt; file then write only the C code that prompts (and re-prompts, as needed) the user for input. The user must input a value between 1 and 8.&lt;/p&gt;

&lt;p&gt;If the user inputs a value less than 1 or greater than 8 the user must be re-prompt until it inputs a value between 1 and 8. For this we will create a "do while loop".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int main(void)
{
    int height;

    //Asking the user to input a Height
    do
    {
    height = get_int("Height: \n");
    }

     // The user can only input a Height between 1 and 8
    while 
    ((height &amp;lt; 1) || (height &amp;gt; 8)); 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you will need to do a for loop for the rows that will iterate from 1 through 8 depending on the input value from the user, and inside of the brackets you will need to create another for loop for the columns of the pyramid that will determine the width of the pyramid.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  // for loop to create the height of the row
    for (int row = 0; row &amp;lt; height; row++)
    {
        // for loop create the width of the pyramid
        for (int column = 0; column &amp;lt; height; column++)
        {
          // if else statement 
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, you will need to create and if else statement and print the result that will do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If row plus column is greater than or equal than height -1 space print the hashes (to create the hashes)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Else add blank spaces to create the Pyramid form.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; {
            // if row plus column is greater than or equal than height -1 space print the hashes
            if (row + column &amp;gt;= height - 1) 
                printf("#");

            // adding spaces
            else 
            printf(" ");
 }
        printf("\n");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here I'm leaving my full solution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;cs50.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;

int main(void)
{
    int height;

    //Asking the user to input a Height
    do
    {
    height = get_int("Height: \n");
    }

     // The user can only input a Height between 1 and 8
    while 
    ((height &amp;lt; 1) || (height &amp;gt; 8)); 

    // for loop to create the height of the row
    for (int row = 0; row &amp;lt; height; row++)
    {
        // for loop create the width of the piramid
        for (int column = 0; column &amp;lt; height; column++)
        {
            // if row plus column is greater than or equal than height -1 space print the hashes
            if (row + column &amp;gt;= height - 1) 
                printf("#");

            // adding spaces
            else 
            printf(" ");
        }
        printf("\n");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope this solution will help you to understand better the problem and how to solve it. &lt;/p&gt;

&lt;p&gt;I will encourage anyone who is thinking about starting your coding career to check out the Harvard CS50 program certificate, it will give you a great tools to start your career and also the assignments and projects are very challenging and interesting. &lt;/p&gt;

&lt;p&gt;Follow me on Github &amp;amp; Connect with me on LinkedIn&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche"&gt;https://github.com/cesareuseche&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/cesar-useche-profile/"&gt;https://www.linkedin.com/in/cesar-useche-profile/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cs50</category>
      <category>c</category>
      <category>computerscience</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Front-End React Native Tesla App Store</title>
      <dc:creator>cesaruseche18</dc:creator>
      <pubDate>Sun, 10 Jan 2021 18:25:46 +0000</pubDate>
      <link>https://dev.to/cesareuseche/front-end-react-native-tesla-app-store-1oim</link>
      <guid>https://dev.to/cesareuseche/front-end-react-native-tesla-app-store-1oim</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;Tesla Front-End App using React Native. Fully scrollable Front-End Tesla shop app.&lt;/p&gt;

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

&lt;p&gt;React Native App &amp;amp; Mobile App&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QkC_R6Ke--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9myc0p3p9uu28714lbi2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QkC_R6Ke--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9myc0p3p9uu28714lbi2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Description
&lt;/h3&gt;

&lt;p&gt;This is my first React Native App, it was very fun building this Front End Native app, it took me around 3 hours to finish this project, I'm very happy with the end project considering that this is my first build in React Native.&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Source Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/cesareuseche/tesla-app-native"&gt;https://github.com/cesareuseche/tesla-app-native&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I wanted to start building React Native Apps and this is my first project using React Native, it is a very simple Front-End App, but it was a great opportunity to learn more about React Native. I always liked Tesla so That's why I choose to do this Front-End app&lt;/p&gt;

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

&lt;p&gt;This Project includes the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;Custom Styles&lt;/li&gt;
&lt;li&gt;Flatlist&lt;/li&gt;
&lt;li&gt;Dimensions&lt;/li&gt;
&lt;li&gt;snapToAlignment&lt;/li&gt;
&lt;li&gt;decelerationRate&lt;/li&gt;
&lt;li&gt;snapToInterval&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dohackathon</category>
      <category>reactnative</category>
      <category>react</category>
      <category>ios</category>
    </item>
  </channel>
</rss>
