<?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: Ilemona  Achimugu</title>
    <description>The latest articles on DEV Community by Ilemona  Achimugu (@dfiredeveloper).</description>
    <link>https://dev.to/dfiredeveloper</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%2F78628%2F4c47dfa2-e581-4117-b374-a8a8ad8596b9.jpg</url>
      <title>DEV Community: Ilemona  Achimugu</title>
      <link>https://dev.to/dfiredeveloper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dfiredeveloper"/>
    <language>en</language>
    <item>
      <title>Things you should know while learning to code.</title>
      <dc:creator>Ilemona  Achimugu</dc:creator>
      <pubDate>Thu, 13 Aug 2020 08:32:42 +0000</pubDate>
      <link>https://dev.to/dfiredeveloper/things-you-should-know-while-learning-to-code-5fi7</link>
      <guid>https://dev.to/dfiredeveloper/things-you-should-know-while-learning-to-code-5fi7</guid>
      <description>&lt;p&gt;One of the most dangerous and common tips for learning to code is to "just do projects."&lt;/p&gt;

&lt;p&gt;Projects can be a great way to learn to code, but people often attempt them too early, get discouraged, and quit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You’ve to Stay on Low first .
&lt;/h2&gt;

&lt;p&gt;Code learners will often say things like "I’ll just code up a quick event page builder," or "I’ll make a simple social network app."&lt;/p&gt;

&lt;p&gt;That’s great, it’s a perfect idea But wait, these statements usually lead to one of two scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The project is way too hard, and the person gets discouraged.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They stumble through and complete the project, but since it required so much new information at one time, they can never remember it or apply it again.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both scenarios lead to a nasty psychological effect where a learner will think, "If I can’t even do this easy thing, maybe I’m not cut out for coding."&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Ways to Get Better Apart from Rushing into Projects
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Share what you learn. You get better at what you do when you help other people understand it because it forces you to understand it well yourself before you can help others do it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Break down other people’s code, and break it. You’ll be surprised at how much insight and lessons you can learn from doing this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start something today, and don’t wait till you’ve mastered all skills before you start. It must not even be a little code project, you can start by organizing tech meet-up around you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be persistent, and don’t let yourself get overwhelmed. Only learn the stuff that you need, when you need it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Write Code Everyday
&lt;/h3&gt;

&lt;p&gt;John Resig wrote an article earlier 2014 titled “Write Code Everyday” After he was inspired by &lt;a href="http://jenniferdewalt.com/" rel="noopener noreferrer"&gt;Jennifer Dewalt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A woman who taught herself programming by building 180 web sites in 180 days. John Wrote “I felt compelled to try a similar tactic: working on my side projects every single day”. Which made him to set some certain rules for him self.&lt;/p&gt;

&lt;h3&gt;
  
  
  His Rules
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I must write code every day. I can write docs, or blog posts, or other things but it must be in addition to the code that I write.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It must be useful code. No tweaking indentation, no code re-formatting, and if at all possible no refactoring. (All these things are permitted, but not as the exclusive work of the day.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All code must be written before midnight.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The code must be Open Source and up on Github.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can read the full Article &lt;a href="https://johnresig.com/blog/write-code-every-day/" rel="noopener noreferrer"&gt;Here&lt;/a&gt;. Is great&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn to Stand Alone
&lt;/h3&gt;

&lt;p&gt;One of My Teacher once told me, “If You Can not Stand Alone, You Can not Stand at All”.&lt;/p&gt;

&lt;p&gt;For instance, a newbie ask:&lt;/p&gt;

&lt;p&gt;"What should I learn if I want to make a website/app/startup?"&lt;/p&gt;

&lt;p&gt;You'll see variations of this question all over the internet.&lt;/p&gt;

&lt;p&gt;Each time, the same pattern ensues.&lt;/p&gt;

&lt;p&gt;Everyone will jump in with a well-intentioned list of things the asker should learn. Since each person named the three to five things relevant to themselves, the overall result might turn into a list of 40+ things to learn.&lt;/p&gt;

&lt;p&gt;This is overwhelming, and it can discourage people from learning tech skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Avoid Moving slower by rushing
&lt;/h3&gt;

&lt;p&gt;Rushing is the quickest way to slow down your progress.&lt;br&gt;
It's ironic, but it's true.&lt;/p&gt;

&lt;p&gt;When learning to code, it's natural to encounter a concept, understand it, and move onto the next thing. On the surface, that sounds like a normal progression, but it's actually a problem.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why
&lt;/h4&gt;

&lt;p&gt;By moving onto the next thing immediately after understanding a concept, you haven't given yourself time to practice that concept and retain it. As a result, you'll feel like you're making progress, but you'll soon realize you've forgotten everything. When you can't remember what you learned at the beginning, all the later steps become impossible. You then have to skip back and forth trying to move forwards and play catch-up at the same time. You start to feel like coding is impossible, and then you give up.&lt;/p&gt;

&lt;p&gt;This has happened to too many people, but it doesn't need to happen to you.&lt;/p&gt;

&lt;p&gt;The key is this: when you understand something, don't immediately move on to the next thing. Take some time to play with what you just learned. Build something neat. Try a variation. See if you can type it without looking at any examples.&lt;/p&gt;

&lt;p&gt;At first, this approach will seem to take longer, but it will save you a ton of time as the later stages become much easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't get tired
&lt;/h3&gt;

&lt;p&gt;I don’t know if this has happened to any of you.&lt;/p&gt;

&lt;p&gt;This is one thing that usually gets people tired or lazy writing code most time. When you encounter a bug in a code you’ve been writing a while and started debugging it and instantly you feel like wow, I’ve done a pretty good hard work and I need to take a break. 😂😂😂😀 Mehn it’s just 17 minutes, fainted😌😌 .&lt;/p&gt;

&lt;p&gt;You’ll feel like you’ve been doing nothing. This has happened to me. But you don’t have to get tired, it’s a sign you still have a lot of work.&lt;/p&gt;

&lt;h4&gt;
  
  
  Doing everything at once
&lt;/h4&gt;

&lt;p&gt;The people who end up good with tech are not afraid to be bad with tech.&lt;/p&gt;

&lt;p&gt;That’s because tech requires a lot of learning, which means frequently feeling like a beginner. While this might sound daunting, it can actually be reassuring. If you find yourself feeling like a beginner, that means you’re learning things, and therefore you’re on the right track.&lt;/p&gt;

&lt;p&gt;However, if you find that you’re good at most of the things you do, maybe it’s time to step out of your comfort zone and learn new things.&lt;/p&gt;

&lt;h3&gt;
  
  
  Convincing yourself you don't have enough time
&lt;/h3&gt;

&lt;p&gt;If you have time to read this, you have more than enough time to learn tech skills.&lt;/p&gt;

&lt;p&gt;The reason it seems hard to find time is that people treat learning like it's a big thing that requires hours at a time. However, when it comes to other activities, such as reading articles or browsing social media, we tell ourselves, "I'll just check this one thing quickly." That one quick check turns into 3 hours of reading.&lt;/p&gt;

&lt;p&gt;The truth is that you can learn to code in 20 minutes a day. The easiest way to find time is to treat it the same way you treat other activities. Tell yourself you'll learn for just one minute. That tiny commitment makes it much easier to start, and starting can be the hardest part. If you do this, you'll have a much easier time fitting learning into your schedule.&lt;/p&gt;

&lt;p&gt;Have a nice day and don't forget to follow me on Twitter &lt;a class="mentioned-user" href="https://dev.to/dfiredeveloper"&gt;@dfiredeveloper&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to easily turn your website to a Progressive Web App(PWA)</title>
      <dc:creator>Ilemona  Achimugu</dc:creator>
      <pubDate>Wed, 12 Aug 2020 21:19:44 +0000</pubDate>
      <link>https://dev.to/dfiredeveloper/how-to-easily-turn-your-website-to-a-progressive-web-app-pwa-2nm4</link>
      <guid>https://dev.to/dfiredeveloper/how-to-easily-turn-your-website-to-a-progressive-web-app-pwa-2nm4</guid>
      <description>&lt;p&gt;Progressive Web App is the new and trending way to bring a native app feeling into a normal or traditional web app. Progressive Web Apps are very much in use by some of the biggest companies like Twitter, Forbes, Alibaba, Instagram, Flipkart e.t.c and have gained popularity.&lt;/p&gt;

&lt;p&gt;So in this tutorial, we’ll be turning our already existing website into a Progressive Web App. Let’s Get Started :)&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;I’m sure by now you must have heard or read about Progressive Web Applications and if you haven’t here is it.&lt;/p&gt;

&lt;p&gt;A progressive web application (PWA) is a type of application software delivered through the web, built using common web technologies including HTML, CSS, and JavaScript. It is intended to work on any platform that uses a standards-compliant browser. Functionality includes working offline, push notifications, and device hardware access, enabling creating user experiences similar to native applications on desktop and mobile devices.&lt;/p&gt;

&lt;p&gt;Progressive Web Apps are largely characterized by the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reliable&lt;/strong&gt; — They load instantly and never show the “No Internet Connection” page, even in uncertain network conditions with help from Service workers caching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fast&lt;/strong&gt; — They respond quickly to user interactions with smooth animations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Engaging&lt;/strong&gt; — They feel like a natural app on the device, with immersive user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Requirements for this tutorial
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Basic web design skills (HTML, CSS &amp;amp; JS)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need to be running on HTTPS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A working website you wish to tun to PWA.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Like I said, building a Progressive Web App is quite simple and easy if you understand the whole concept and how it actually works.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Makes up a PWA
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Web Manifest&lt;/li&gt;
&lt;li&gt;Service Worker&lt;/li&gt;
&lt;li&gt;Your static website&lt;/li&gt;
&lt;/ol&gt;

&lt;h5&gt;
  
  
  Let’s Start
&lt;/h5&gt;

&lt;p&gt;For the sake of this tutorial, we’ll be turning a simple random quote web app to a PWA. All the files are hosted here on &lt;a href="https://github.com/IgalaDigital/Igala-Facts" rel="noopener noreferrer"&gt;Github&lt;/a&gt; and the demo is available &lt;a href="https://igalafacts.netlify.app/" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So for the sake of making sure things go right, we’ll rebuild the simple random quote web app using HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5nc4uk3nqftz2z9gefkz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5nc4uk3nqftz2z9gefkz.png" alt="Final Project" width="800" height="388"&gt;&lt;/a&gt;&lt;br&gt;
That's how the final project will look like.&lt;/p&gt;

&lt;p&gt;So let’s build the UI.&lt;/p&gt;

&lt;p&gt;Make a new directory and create these files&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;css/style.css&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;js/app.js&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Let's Build the Markup&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Add the below codes in the &lt;code&gt;index.html&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&amp;gt;
    &amp;lt;title&amp;gt;The Igala Facts you never knew&amp;lt;/title&amp;gt;
    &amp;lt;link rel="stylesheet" href="css/style.css"&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"&amp;gt;
    &amp;lt;link href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,700' rel='stylesheet' type='text/css'&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.3/animate.min.css"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="container"&amp;gt;
        &amp;lt;div class="row"&amp;gt;
          &amp;lt;div class="col-sm-6"&amp;gt;
            &amp;lt;h1&amp;gt;&amp;lt;span class="main-color"&amp;gt;Random Igala&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;Facts&amp;lt;/h1&amp;gt;
            &amp;lt;p&amp;gt;The best facts about Igala in one place. You can easily see the best facts and  share the ones you love on twitter with one click.&amp;lt;/p&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;div class="col-sm-6"&amp;gt;
            &amp;lt;div class="row"&amp;gt;
              &amp;lt;div class="col-xs-6"&amp;gt;
                &amp;lt;a id="next-quote" class="btn btn-lg btn-default btn-block" href="#"&amp;gt;&amp;lt;i class="fa fa-refresh"&amp;gt;&amp;lt;/i&amp;gt; Next Fact&amp;lt;/a&amp;gt;
              &amp;lt;/div&amp;gt;
              &amp;lt;div class="col-xs-6"&amp;gt;
                &amp;lt;a id="share" class="btn btn-lg btn-default btn-block" href="#" target="_top"&amp;gt;&amp;lt;i class="fa fa-twitter"&amp;gt;&amp;lt;/i&amp;gt; Share&amp;lt;/a&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div id="quote-box"&amp;gt;
              &amp;lt;i id="quote-left" class="fa fa-quote-left"&amp;gt;&amp;lt;/i&amp;gt;
              &amp;lt;p id="quote"&amp;gt;&amp;lt;/p&amp;gt;
              &amp;lt;span id="author" class="main-color"&amp;gt;&amp;lt;/span&amp;gt;
              &amp;lt;i id="quote-right" class="fa fa-quote-right"&amp;gt;&amp;lt;/i&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="row"&amp;gt;       
              &amp;lt;div class="col-xs-12"&amp;gt;
                &amp;lt;ul&amp;gt;
                  &amp;lt;li&amp;gt;Follow Us&amp;lt;/li&amp;gt;
                  &amp;lt;li&amp;gt;&amp;lt;a class="main-color" href="https://facebook.com/theigaladigital" target="_blank"&amp;gt;@theigaladigital&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                    &amp;lt;/ul&amp;gt;
                  &amp;lt;/div&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div id="hidden"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
      &amp;lt;script src="js/app.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Like I said earlier, this tutorial is mainly teaching you how to convert your already existing website into a Progressive Web App so I won’t be going in detail on the HTML or rest.&lt;/p&gt;

&lt;p&gt;— Add this in &lt;code&gt;css/app.css&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
    background-color: rgb(0, 0, 0);
    color: white;
    padding-top: 50px;
    font-size: 18px;
    font-family: 'Roboto Slab', serif;
  }

  h1 {
    font-size: 4em;
    line-height: 70px;
    margin-bottom: 40px;
    font-weight: bold;
  }

  a:hover, a:focus, a:active {
    text-decoration: none;
    color: white;
    transition: color 0.8s;
  }

  .main-color {
    color: yellow;
    text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.2);
    font-weight: bold;
  }

  #quote-box {
    background-color: rgba(255, 255, 255, 0.3);
    border-radius: 10px;
    padding: 100px 40px;
    position: relative;
    margin-top: 20px;
  }

  #quote-left, #quote-right {
    color: yellow;
    font-size: 3em;
    position: absolute;
  }

  #quote-left {
    top: 20px;
    left: 20px;
  }

  #quote-right {
    bottom: 20px;
    right: 20px;
  }

  #quote {
    font-size: 1.5em;
    text-align: center;
  }

  #author {
    position: absolute;
    font-size: 1.1em;
    left: 50px;
    bottom: 30px;
  }

  .btn {
    border-radius: 10px;
    color: yellow;
    border: 1px solid white !important;
    transition: background 0.8s, color 0.8s;
    line-height: 30px;
    margin-top: 30px;
  }

  .btn:hover, .btn:active, .btn:focus {
    color: white !important;
    background-color: yellow !important;
    box-shadow: none;
  }

  ul {
    list-style-type: none;
    padding: 0;
    margin: 10px 0 0 0;
    float: right;
    white-space: nowrap;
    overflow: hidden;
  }

  li {
    display: inline-block;
    margin: 0 0 0 1px;
  }

  #hidden {
    display: none;
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your app should look like this:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyk9djxzmb6lwe1k6g20i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyk9djxzmb6lwe1k6g20i.png" alt="Front Page" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you look up closely, you will discover no quote shows, so we’ll have to add JavaScript functionality that handles that.&lt;/p&gt;

&lt;p&gt;— Add this in &lt;code&gt;js/app.js&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$(document).ready(function () {  
    $("#next-quote").on("click", function (e) {
      e.preventDefault();

      var randomQuoteNumber = getRandomQuoteNumber();
      updateQuote(randomQuoteNumber);
    });

    var q = location.search.split("?q=")[1];

    if (q &amp;gt;= 0 &amp;amp;&amp;amp; q &amp;lt; quotes.length) {
      updateQuote(q);
    } else {
      $("#next-quote").click();
    }
  });

  function updateQuote(quoteNumber) {
    var randomQuote = quotes[quoteNumber];

    $("#quote").html(randomQuote.quote);
    $("#author").html(randomQuote.author);
    $("#quote-box").removeClass().addClass("animated bounceIn").one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
      $(this).removeClass();
    });

    $("#share").attr("href", "https://twitter.com/intent/tweet?text=\"" + encodeURIComponent($("#hidden").html(randomQuote.quote).text()) + "\" https://igalafacts.igaladigital.org?q=" + quoteNumber);
  }

  function getRandomQuoteNumber() {
    return Math.floor(Math.random() * quotes.length);
  }

  var quotes = [{"author": "IgalaDigital", "quote": "Did You Know That Ojaina is the place where the Attah's of Igala are burried?"},
{"author": "IgalaDigital", "quote": "Did You Know That the first aircraft that visited the Igala Kingdom landed at Idah in 1955?"},
{"author": "IgalaDigital", "quote": "Did You Know That Attah Ameh Oboni, had seen to the completion of an aerodrome in 1954 at Idah?"},

  {"author": "Ilemona", "quote": "Did you know that the Igala alphabet was adopted from the English alphabet. The latter has five (5) vowels: “a,” “e,” “i,” “o,” “u.”?"},
{"author": "Achimugu Ilemona", "quote": "Did you know the Igala alphabet is made up of thirty-one (31) letters: some vowels, others consonants?"},
{"author": "IgalaDigital", "quote": "Did You Know That Ojaina is a restricted place only allowed for members from the Attah Ruling House?"},
{"author": "IgalaDigital", "quote": "Did you know that Ata Ameh Oboni speak fluently in Igala, Ebira &amp;amp; Hausa?"},
{"author": "Onuche Joseph", "quote": "Did you know that the Ígálá language has seven (7) vowels: “a,” “e,” “ẹ,” “i,” “o,” “ọ,” “u” (encompassing both all the 5 English vowels and two indigenous ones, ‘ẹ’ and  ‘ọ’).?"},

  {"author": "Naomi", "quote": "Did You Know That Idah is also called Idah Alu Ogo Oja Abutu Eje?"},

  {"author": "Inikpi", "quote": "Did you know that Abutu- Eje was the first Igala Ruler?"},
{"author": "IgalaDigital", "quote": "Did you know that you may likely come home to meet one of your family member dead if you kill an animal at Ojaina?"},
{"author": "IgalaDigital", "quote": "Did you know that ata Ameh Oboni took his own life on the night of June 26, 1956?"},
{"author": "IgalaDigital", "quote": "Did you know that the mighty Ata Ameh Oboni died at the age of 51?"},
{"author": "IgalaDigital", "quote": "Did you know that attah Ameh Oboni schooled in Okene(Ebira Land) between 1934 and 1939? Learned in Hausa Literature"},
{"author": "IgalaDigital", "quote": "Did you know that ata Ameh Oboni started off as a market stall tax collector for Idah and Ejule market?"},
{"author": "IgalaDigital", "quote": "Did you know that Ata Obaje Ocheje moved Ameh Oboni from being a market stall tax collector to be come a cheif as onu ugwolawo due to his hard work?"},
{"author": "IgalaDigital", "quote": "Did you know that Ameh Oboni was moved to ankpa from ugwolawo as the judge, commonly known as *Wakali, to be in charge of seven districts?"},
{"author": "IgalaDigital", "quote": "Did you know that Patrick A. Okpanachi, Mallam Garba and Peter Achimugwu were the first in Igala Land that speaks and write in English Language?"},
{"author": "IgalaDigital", "quote": "Did you know that Peter Achimugwu was the man that led the campaign to remove Ameh Oboni as the Attah?"}
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;This is just basic JavaScript, if you have no idea what all this means, you should get &lt;a href="https://medium.com/u/6727c1eb71f8?source=post_page-----b55ed4a86413----------------------" rel="noopener noreferrer"&gt;JavaScript Teacher’s&lt;/a&gt; &lt;em&gt;&lt;code&gt;Grammar JavaScript&lt;/code&gt;&lt;/em&gt; book. This will teach you all the basics and contents of Modern JavaScript. Get a free copy &lt;a href="http://www.javascriptgrammar.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now you should have a functioning app with the facts showing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5nc4uk3nqftz2z9gefkz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5nc4uk3nqftz2z9gefkz.png" alt="Functioning App" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Turn it to a PWA
&lt;/h2&gt;

&lt;p&gt;The three basic criteria for a PWA:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web Manifest&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The web app manifest is a JSON file that tells the browser about your Progressive Web App and how it should behave when installed on the user’s desktop or mobile device. A typical manifest file includes the app name, the icons the app should use, and the URL that should be opened when the app is launched.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service Worker&lt;/strong&gt;&lt;br&gt;
A service worker is a script that allows your browser to run in the background, separate from a web page, opening the door to features that don’t need a web page or user interaction. Today, they already include features like push notifications and background sync.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Icons&lt;/strong&gt;&lt;br&gt;
These icons control your application and are provided in different sizes for different devices. Your PWA app will not work without them.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let’s get started.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before we proceed, ensure you’re using a live server&lt;br&gt;
Use (&lt;a href="https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb?hl=en" rel="noopener noreferrer"&gt;Web server for Chrome&lt;/a&gt;, or &lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer" rel="noopener noreferrer"&gt;VSCode Live Server&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Create the following files:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sw.js&lt;/code&gt; (In root directory)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;manifest.json&lt;/code&gt; (In root directory)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;img/icons&lt;/code&gt; (Where we’d store our icons&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;First, we need to check if the browser supports service workers and register a new one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In &lt;code&gt;js/app.js&lt;/code&gt; add&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if ('serviceWorker' in navigator) {
  window.addEventListener('load', () =&amp;gt; {
   navigator.serviceWorker.register('../sw.js').then( () =&amp;gt; {
    console.log('Service Worker Registered')
   })
 })
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftu9uxl1zoj3v8cx0l46e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftu9uxl1zoj3v8cx0l46e.png" alt="Dev Tool" width="800" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnumvk4pf5pr9vayaauae.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnumvk4pf5pr9vayaauae.png" alt="Dev Tool" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your final &lt;code&gt;app.js&lt;/code&gt; should look like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$(document).ready(function () {  
    $("#next-quote").on("click", function (e) {
      e.preventDefault();

      var randomQuoteNumber = getRandomQuoteNumber();
      updateQuote(randomQuoteNumber);
    });

    var q = location.search.split("?q=")[1];

    if (q &amp;gt;= 0 &amp;amp;&amp;amp; q &amp;lt; quotes.length) {
      updateQuote(q);
    } else {
      $("#next-quote").click();
    }
  });

  function updateQuote(quoteNumber) {
    var randomQuote = quotes[quoteNumber];

    $("#quote").html(randomQuote.quote);
    $("#author").html(randomQuote.author);
    $("#quote-box").removeClass().addClass("animated bounceIn").one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
      $(this).removeClass();
    });

    $("#share").attr("href", "https://twitter.com/intent/tweet?text=\"" + encodeURIComponent($("#hidden").html(randomQuote.quote).text()) + "\" https://igalafacts.igaladigital.org?q=" + quoteNumber);
  }

  function getRandomQuoteNumber() {
    return Math.floor(Math.random() * quotes.length);
  }

  var quotes = [{"author": "IgalaDigital", "quote": "Did You Know That Ojaina is the place where the Attah's of Igala are burried?"},
{"author": "IgalaDigital", "quote": "Did You Know That the first aircraft that visited the Igala Kingdom landed at Idah in 1955?"},
{"author": "IgalaDigital", "quote": "Did You Know That Attah Ameh Oboni, had seen to the completion of an aerodrome in 1954 at Idah?"},

  {"author": "Ilemona", "quote": "Did you know that the Igala alphabet was adopted from the English alphabet. The latter has five (5) vowels: “a,” “e,” “i,” “o,” “u.”?"},
{"author": "Achimugu Ilemona", "quote": "Did you know the Igala alphabet is made up of thirty-one (31) letters: some vowels, others consonants?"},
{"author": "IgalaDigital", "quote": "Did You Know That Ojaina is a restricted place only allowed for members from the Attah Ruling House?"},
{"author": "IgalaDigital", "quote": "Did you know that Ata Ameh Oboni speak fluently in Igala, Ebira &amp;amp; Hausa?"},
{"author": "Onuche Joseph", "quote": "Did you know that the Ígálá language has seven (7) vowels: “a,” “e,” “ẹ,” “i,” “o,” “ọ,” “u” (encompassing both all the 5 English vowels and two indigenous ones, ‘ẹ’ and  ‘ọ’).?"},

  {"author": "Naomi", "quote": "Did You Know That Idah is also called Idah Alu Ogo Oja Abutu Eje?"},

  {"author": "Inikpi", "quote": "Did you know that Abutu- Eje was the first Igala Ruler?"},
{"author": "IgalaDigital", "quote": "Did you know that you may likely come home to meet one of your family member dead if you kill an animal at Ojaina?"},
{"author": "IgalaDigital", "quote": "Did you know that ata Ameh Oboni took his own life on the night of June 26, 1956?"},
{"author": "IgalaDigital", "quote": "Did you know that the mighty Ata Ameh Oboni died at the age of 51?"},
{"author": "IgalaDigital", "quote": "Did you know that attah Ameh Oboni schooled in Okene(Ebira Land) between 1934 and 1939? Learned in Hausa Literature"},
{"author": "IgalaDigital", "quote": "Did you know that ata Ameh Oboni started off as a market stall tax collector for Idah and Ejule market?"},
{"author": "IgalaDigital", "quote": "Did you know that Ata Obaje Ocheje moved Ameh Oboni from being a market stall tax collector to be come a cheif as onu ugwolawo due to his hard work?"},
{"author": "IgalaDigital", "quote": "Did you know that Ameh Oboni was moved to ankpa from ugwolawo as the judge, commonly known as *Wakali, to be in charge of seven districts?"},
{"author": "IgalaDigital", "quote": "Did you know that Patrick A. Okpanachi, Mallam Garba and Peter Achimugwu were the first in Igala Land that speaks and write in English Language?"},
{"author": "IgalaDigital", "quote": "Did you know that Peter Achimugwu was the man that led the campaign to remove Ameh Oboni as the Attah?"}
]
if ('serviceWorker' in navigator) {
  window.addEventListener('load', () =&amp;gt; {
   navigator.serviceWorker.register('../sw.js').then( () =&amp;gt; {
    console.log('Service Worker Registered')
   })
 })
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We’re going to use the Workbox library to power our service worker&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Workbox is a set of libraries and Node modules developed by Google that make it easy to cache assets and take full advantage of features used to build Progressive Web Apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The idea of our service worker is to cache all files (Fonts, JavaScript, CSS, Images, e.t.c) so we can access them offline after the page loads.&lt;/p&gt;

&lt;p&gt;The important thing to understand about the &lt;strong&gt;Service Worker&lt;/strong&gt; is that you are in control of the network. You get to decide what is cached, how it is cached, and how it should be returned to the user.&lt;/p&gt;

&lt;p&gt;— In &lt;code&gt;sw.js&lt;/code&gt; add this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js');
if (workbox) {
    console.log("Yay! Workbox is loaded !");
    workbox.precaching.precacheAndRoute([]);
/*  cache images in the e.g others folder; edit to other folders you got
   and config in the sw-config.js file
    */
    workbox.routing.registerRoute(
        /(.*)others(.*)\.(?:png|gif|jpg)/,
        new workbox.strategies.CacheFirst({
            cacheName: "images",
            plugins: [
                new workbox.expiration.Plugin({
                    maxEntries: 50,
                    maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days
                })
            ]
        })
    );
    /* Make your JS and CSS âš¡ fast by returning the assets from the cache,
  while making sure they are updated in the background for the next use.
  */
    workbox.routing.registerRoute(
    // cache js, css, scc files
        /.*\.(?:css|js|scss|)/,
        // use cache but update in the background ASAP
        new workbox.strategies.StaleWhileRevalidate({
            // use a custom cache name
            cacheName: "assets",
        })
    );
// cache google fonts
    workbox.routing.registerRoute(
        new RegExp("https://fonts.(?:googleapis|gstatic).com/(.*)"),
        new workbox.strategies.CacheFirst({
            cacheName: "google-fonts",
            plugins: [
                new workbox.cacheableResponse.Plugin({
                    statuses: [0, 200],
                }),
            ],
        })
    );
// add offline analytics
    workbox.googleAnalytics.initialize();
/* Install a new service worker and have it update
and control a web page as soon as possible
*/
workbox.core.skipWaiting();
    workbox.core.clientsClaim();
} else {
    console.log("Oops! Workbox didn't load ðŸ‘º");
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now our service worker works and would cache files once the page loads.&lt;/p&gt;

&lt;p&gt;Now let’s make our app installable.&lt;/p&gt;

&lt;p&gt;— Add this in &lt;code&gt;manifest.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "name": "Igala Facts",
    "short_name": "Igala Facts",
    "icons": [
      {
        "src": "img/icons/icon-72x72.png",
        "sizes": "72x72",
        "type": "image/png"
      },
      {
        "src": "img/icons/icon-96x96.png",
        "sizes": "96x96",
        "type": "image/png"
      },
      {
        "src": "img/icons/icon-128x128.png",
        "sizes": "128x128",
        "type": "image/png"
      },
      {
        "src": "img/icons/icon-144x144.png",
        "sizes": "144x144",
        "type": "image/png"
      },
      {
        "src": "img/icons/icon-152x152.png",
        "sizes": "152x152",
        "type": "image/png"
      },
      {
        "src": "img/icons/icon-192x192.png",
        "sizes": "192x192",
        "type": "image/png"
      },
      {
        "src": "img/icons/icon-384x384.png",
        "sizes": "384x384",
        "type": "image/png"
      },
      {
        "src": "img/icons/icon-512x512.png",
        "sizes": "512x512",
        "type": "image/png"
      }
    ],
    "start_url": "/index.html",
    "display": "standalone",
    "background_color": "#000",
    "theme_color": "#ffff00"
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Your PWA Icons sizes should be in &lt;code&gt;px&lt;/code&gt; and in the following sizes: &lt;code&gt;72x72&lt;/code&gt; , &lt;code&gt;96x96&lt;/code&gt; , &lt;code&gt;128x128&lt;/code&gt; , &lt;code&gt;144x144&lt;/code&gt; , &lt;code&gt;152x152&lt;/code&gt; , &lt;code&gt;192x192&lt;/code&gt; , &lt;code&gt;384x384&lt;/code&gt; , &lt;code&gt;512x512&lt;/code&gt;&lt;br&gt;
You can use the &lt;a href="https://app-manifest.firebaseapp.com/" rel="noopener noreferrer"&gt;Web Manifest Generator&lt;/a&gt; to generate your &lt;code&gt;manifest.json&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe7k86ydeg2vhk5uqzko7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe7k86ydeg2vhk5uqzko7.png" alt="Manifest in Dev tools" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we need to connect our web app to the manifest to allow “add to home screen” from that page. Add this to your &lt;code&gt;index.html&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="manifest" href="/manifest.json" /&amp;gt;
&amp;lt;meta name="theme-color" content="#333" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;If you have multiple pages, you need to add this to all of them.&lt;br&gt;
You can also use the same &lt;code&gt;theme-color&lt;/code&gt; you used in &lt;code&gt;manifest.json&lt;/code&gt; here&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now your final &lt;code&gt;index.html&lt;/code&gt; should look like this&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;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&amp;gt;
    &amp;lt;title&amp;gt;The Igala Facts you never knew&amp;lt;/title&amp;gt;
    &amp;lt;link rel="stylesheet" href="css/style.css"&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"&amp;gt;
    &amp;lt;link href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,700' rel='stylesheet' type='text/css'&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.3/animate.min.css"&amp;gt;
    &amp;lt;link rel="manifest" href="manifest.json" /&amp;gt;
  &amp;lt;meta name="theme-color" content="yellow" /&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="container"&amp;gt;
        &amp;lt;div class="row"&amp;gt;
          &amp;lt;div class="col-sm-6"&amp;gt;
            &amp;lt;h1&amp;gt;&amp;lt;span class="main-color"&amp;gt;Random Igala&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;Facts&amp;lt;/h1&amp;gt;
            &amp;lt;p&amp;gt;The best facts about Igala in one place. You can easily see the best facts and  share the ones you love on twitter with one click.&amp;lt;/p&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;div class="col-sm-6"&amp;gt;
            &amp;lt;div class="row"&amp;gt;
              &amp;lt;div class="col-xs-6"&amp;gt;
                &amp;lt;a id="next-quote" class="btn btn-lg btn-default btn-block" href="#"&amp;gt;&amp;lt;i class="fa fa-refresh"&amp;gt;&amp;lt;/i&amp;gt; Next Fact&amp;lt;/a&amp;gt;
              &amp;lt;/div&amp;gt;
              &amp;lt;div class="col-xs-6"&amp;gt;
                &amp;lt;a id="share" class="btn btn-lg btn-default btn-block" href="#" target="_top"&amp;gt;&amp;lt;i class="fa fa-twitter"&amp;gt;&amp;lt;/i&amp;gt; Share&amp;lt;/a&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div id="quote-box"&amp;gt;
              &amp;lt;i id="quote-left" class="fa fa-quote-left"&amp;gt;&amp;lt;/i&amp;gt;
              &amp;lt;p id="quote"&amp;gt;&amp;lt;/p&amp;gt;
              &amp;lt;span id="author" class="main-color"&amp;gt;&amp;lt;/span&amp;gt;
              &amp;lt;i id="quote-right" class="fa fa-quote-right"&amp;gt;&amp;lt;/i&amp;gt;
            &amp;lt;/div&amp;gt;

            &amp;lt;div class="row"&amp;gt;       
              &amp;lt;div class="col-xs-12"&amp;gt;
                &amp;lt;ul&amp;gt;
                  &amp;lt;li&amp;gt;Follow Us&amp;lt;/li&amp;gt;
                  &amp;lt;li&amp;gt;&amp;lt;a class="main-color" href="https://facebook.com/theigaladigital" target="_blank"&amp;gt;@theigaladigital&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                    &amp;lt;/ul&amp;gt;
                  &amp;lt;/div&amp;gt;
              &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div id="hidden"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
      &amp;lt;script src="js/app.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations, you’ve successfully turned your website to a Progressive Web App.&lt;/p&gt;

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

&lt;p&gt;Throughout this article, we have seen how simple and fast it is to build a PWA by adding a manifest file and a service worker, it increases a lot the user experience of our traditional web app. Because PWAs are fast, secure, reliable and the most important, they support offline mode.&lt;/p&gt;

&lt;p&gt;Many frameworks out there comes now with a service worker file already set-up for us, however, knowing how to implement it with Vanilla JavaScript can help you understand PWAs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.S: If you ran into issues or problem, it’s probably a problem with HTTPS. PWA doesn’t work on HTTP, so make sure you’re running this with either http-server or live-server if you’re working from your local machine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/dfiredeveloper" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; or &lt;a href="https://facebook.com/achimugu.i" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt; I’m everywhere &lt;a class="mentioned-user" href="https://dev.to/dfiredeveloper"&gt;@dfiredeveloper&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
