<?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: Paul Ayuk</title>
    <description>The latest articles on DEV Community by Paul Ayuk (@paulayuk).</description>
    <link>https://dev.to/paulayuk</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%2F60696%2Ff9818758-41e1-4afe-9d7d-b6c27c452bf8.jpg</url>
      <title>DEV Community: Paul Ayuk</title>
      <link>https://dev.to/paulayuk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paulayuk"/>
    <language>en</language>
    <item>
      <title>Creating a Vacation themed website using Tailwind CSS</title>
      <dc:creator>Paul Ayuk</dc:creator>
      <pubDate>Tue, 08 Jun 2021 15:34:21 +0000</pubDate>
      <link>https://dev.to/paulayuk/creating-a-vacation-themed-website-using-tailwindcss-4jld</link>
      <guid>https://dev.to/paulayuk/creating-a-vacation-themed-website-using-tailwindcss-4jld</guid>
      <description>&lt;p&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;TailwindCSS&lt;/a&gt; is a &lt;a href="https://tailwindcss.com/docs/utility-first/" rel="noopener noreferrer"&gt;utility first&lt;/a&gt; framework for building custom web page designs. It provides easy to grasp CSS classes for creating web pages. &lt;/p&gt;

&lt;p&gt;It can be used alongside any front-end framework or library. Its main objective is to help you rapidly create custom designs. You can find more details on their official &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this article, we’d recreate a design on dribbble called &lt;a href="https://dribbble.com/shots/5276650-Vacarion-Trip-Planner-Landing-Page-Concept" rel="noopener noreferrer"&gt;Vacarion&lt;/a&gt; using Tailwind CSS. You can find the design below:&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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580907060139_vacarion_preview.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580907060139_vacarion_preview.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find a working demo of the application &lt;a href="https://youthful-goodall-f27fb3.netlify.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N/B: We will make use of &lt;a href="https://parceljs.org/" rel="noopener noreferrer"&gt;Parcel&lt;/a&gt; as a dev server and build runner, If you haven’t used parcel before now, you can read about it &lt;a href="https://parceljs.org/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Project Setup
&lt;/h2&gt;

&lt;p&gt;To get started, we'd create a new project:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir vacarion &amp;amp;&amp;amp; cd vacarion &amp;amp;&amp;amp; npm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The command above creates a folder named &lt;code&gt;vacarion&lt;/code&gt; with a &lt;strong&gt;package.json&lt;/strong&gt; file inside it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;npm init&lt;/code&gt; command will present you with several prompts. You can easily accept all the default value provided for each prompt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Next, install TailwindCSS and Parcel:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install parcel-bundler tailwindcss --save-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Add Parcel and tailwind's config to finish the setup: &lt;/p&gt;

&lt;p&gt;Update the &lt;code&gt;scripts&lt;/code&gt; section of your &lt;strong&gt;package.json&lt;/strong&gt; file with the following commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// package.json
...
"scripts": {
  "start": "npm run run:css &amp;amp;&amp;amp; parcel index.html",
  "run:css": "npx tailwind build tailwind.css -o vendor.css"
},
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;run:css&lt;/code&gt; command generates and outputs tailwind’s css code to the &lt;strong&gt;vendor.css&lt;/strong&gt; file using the &lt;a href="https://tailwindcss.com/docs/functions-and-directives/" rel="noopener noreferrer"&gt;directives&lt;/a&gt; in the &lt;strong&gt;tailwind.css&lt;/strong&gt; &lt;strong&gt;file&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;start&lt;/code&gt; command runs the &lt;code&gt;run:css&lt;/code&gt; command to build the stylesheet before it starts the development server that watches the &lt;strong&gt;index.html&lt;/strong&gt; file.&lt;/p&gt;

&lt;p&gt;Run the following command to create all the project files:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch index.html {index,tailwind}.css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Paste the starter snippet below into the &lt;strong&gt;index.html&lt;/strong&gt; file:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//index.html
&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;link
      href="https://fonts.googleapis.com/css?family=Raleway:300,400,600,700,900&amp;amp;display=swap"
      rel="stylesheet"
    /&amp;gt;
    &amp;lt;link href="./vendor.css" rel="stylesheet" /&amp;gt;
    &amp;lt;link href="./index.css" rel="stylesheet" /&amp;gt;
    &amp;lt;script src="https://unpkg.com/feather-icons"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;title&amp;gt;Vacation Site&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;Getting Started&amp;lt;/h1&amp;gt;
    &amp;lt;script&amp;gt;
      feather.replace();
    &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;We’ll use the &lt;a href="https://fonts.google.com/specimen/Raleway" rel="noopener noreferrer"&gt;Raleway&lt;/a&gt; font-family and an icon set called &lt;a href="https://feathericons.com/" rel="noopener noreferrer"&gt;Feathericons&lt;/a&gt;. We’ve also included our stylesheets and initialised Feathericons using the &lt;code&gt;feather.replace()&lt;/code&gt; method right before the end of our body tag.&lt;/p&gt;

&lt;p&gt;Open the &lt;strong&gt;tailwind.css&lt;/strong&gt; file and include the following build directives for Tailwind:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* tailwind.css */

@tailwind base;
@tailwind components;
@tailwind utilities;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The directives above will inject tailwind's &lt;code&gt;base&lt;/code&gt;, &lt;code&gt;components&lt;/code&gt;, and &lt;code&gt;utilities&lt;/code&gt; styles into your CSS. The directives will be swapped at build time into &lt;strong&gt;vendor.css&lt;/strong&gt; with all of its generated CSS.&lt;/p&gt;

&lt;p&gt;To initialise the font in the project, add the code in the snippet to your &lt;strong&gt;index.css&lt;/strong&gt; file:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* index.css */

* {
  font-family: 'Raleway', sans-serif;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now that we have all our files ready, let’s start up the server using the &lt;code&gt;start&lt;/code&gt; command:&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;Navigate to &lt;a href="http://localhost:1234" rel="noopener noreferrer"&gt;http://localhost:1234&lt;/a&gt; in your browser and you should see the following view:&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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580927124149_Screenshot%2B2020-02-05%2Bat%2B7.24.46%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580927124149_Screenshot%2B2020-02-05%2Bat%2B7.24.46%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you see this view, you’re ready to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the header
&lt;/h2&gt;

&lt;p&gt;Let’s start by recreating the header section:&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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580927872937_Screenshot%2B2020-02-05%2Bat%2B7.36.46%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580927872937_Screenshot%2B2020-02-05%2Bat%2B7.36.46%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All the items are lined horizontally and there’s a huge space separating the brand name and the navigation items. &lt;/p&gt;

&lt;p&gt;Update the body of your &lt;strong&gt;index.html&lt;/strong&gt; file with the following snippet:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;header class="w-4/5 mx-auto py-6 flex justify-between items-center"&amp;gt;
  &amp;lt;!-- Brand name --&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h1 class="text-2xl text-gray-800 font-bold"&amp;gt;Vacarion&amp;lt;/h1&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;!--menu--&amp;gt;
  &amp;lt;div&amp;gt;
    ...
  &amp;lt;/div&amp;gt;
&amp;lt;/header&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;We used 3 pure CSS classes and 6 tailwind classes to create the header menu.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;w-4/5&lt;/code&gt;: the header doesn’t span the width of the page in the design. &lt;strong&gt;W-4/5&lt;/strong&gt; is used to set an element to a percentage based width. It fills &lt;strong&gt;80%&lt;/strong&gt; of the screen. You can find more width targeted classes &lt;a href="https://tailwindcss.com/docs/width" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mx-auto&lt;/code&gt;: since the header only covers &lt;strong&gt;80%&lt;/strong&gt; of the screen, we use this class to center it by giving setting auto margins on both sides.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;py-6&lt;/code&gt;: gives the header a vertical padding of &lt;strong&gt;1.5 rem&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;flex&lt;/code&gt;: sets display to &lt;code&gt;flex&lt;/code&gt; so the menu items appear horizontally.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;justify-between&lt;/code&gt;: put spaces between the menu items.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;items-center&lt;/code&gt;: centers the menu items vertically.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;text-2xl&lt;/code&gt; : Sets the text a size to &lt;strong&gt;1.5rem.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;text-gray-800&lt;/code&gt; : sets the text color to a dark shade of gray.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;font-bold&lt;/code&gt; : sets the font weight to &lt;strong&gt;700&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The brand name and container element have been styled, let’s do the navigation items next. Add 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;header class="w-4/5 mx-auto py-6 flex justify-between items-center"&amp;gt;
  &amp;lt;!-- menu --&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;ul class="flex"&amp;gt;
      &amp;lt;li class="mx-4"&amp;gt;
        &amp;lt;span class="font-bold text-gray-700"&amp;gt;Home&amp;lt;/span&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li class="mx-4"&amp;gt;
        &amp;lt;span class="font-medium text-gray-500"&amp;gt;Trip Planner&amp;lt;/span&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li class="mx-4"&amp;gt;
        &amp;lt;span class="font-medium text-gray-500"&amp;gt;Blogs&amp;lt;/span&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li class="mx-4"&amp;gt;
        &amp;lt;span class="font-medium text-gray-500"&amp;gt;Categories&amp;lt;/span&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li class="mx-4"&amp;gt;
        &amp;lt;span class="font-medium text-gray-500"&amp;gt;Stories&amp;lt;/span&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li class="mx-4"&amp;gt;
        &amp;lt;span class="font-medium text-gray-500"&amp;gt;Contact&amp;lt;/span&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li class="mx-4"&amp;gt;
        &amp;lt;span class="font-light text-gray-500"&amp;gt;
          &amp;lt;i data-feather="search" class="text-gray-400"&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/span&amp;gt;
      &amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/header&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;flex&lt;/code&gt; utility class is used to display the navigation items horizontally. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mx-4&lt;/code&gt; gives all the list items a margin of 4px on both sides. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On your browser, your new site should look like the screenshot below:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580933876855_Screenshot%2B2020-02-05%2Bat%2B9.16.32%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1580933876855_Screenshot%2B2020-02-05%2Bat%2B9.16.32%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Building the Hero Section
&lt;/h2&gt;

&lt;p&gt;The hero section features two sections, the first is the area with image and the heading text while the second is a floating area with a call to action button.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581118486461_hero-annotation.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581118486461_hero-annotation.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First we’ll do the background image and the heading area before we do the slideshow indicators:&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;!-- index.html --&amp;gt;
    ...
    &amp;lt;body&amp;gt;
      &amp;lt;header&amp;gt;
        ...
      &amp;lt;/header&amp;gt;
      &amp;lt;div class="w-11/12 flex ml-auto relative"&amp;gt;
          &amp;lt;section class="py-16 px-16 hero w-full flex justify-between"&amp;gt;
            &amp;lt;div&amp;gt;
              &amp;lt;!-- heading area --&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div&amp;gt;
              &amp;lt;!-- Indicators area --&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/section&amp;gt;
          &amp;lt;! -- floating call to action --&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We gave the hero section a width of &lt;code&gt;91%&lt;/code&gt; using the &lt;code&gt;w-11/12&lt;/code&gt; class and pushed it to the right by giving it an auto margin on the left with &lt;code&gt;ml-auto&lt;/code&gt;. We’ve also set its position to &lt;code&gt;relative&lt;/code&gt; as it will be the reference of our floating call to action div.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To set the background image, add some custom styles to the &lt;strong&gt;index.css&lt;/strong&gt; file.&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;    .hero {
      background: url('./assets/imgs/beach-bg.jpg') no-repeat;
      height: 500px;
      width: 100%;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find all image assets used in this GitHub &lt;a href="https://github.com/paulayuk/vacarion" rel="noopener noreferrer"&gt;repository&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the following snippet where you have the &lt;code&gt;heading area&lt;/code&gt; comment:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;!-- heading area --&amp;gt;
    &amp;lt;h1 class="text-white text-5xl font-hairline leading-tight"&amp;gt;
      &amp;lt;span class="font-semibold"&amp;gt; Discover&amp;lt;/span&amp;gt; a touch &amp;lt;br /&amp;gt;
      of nature's &amp;lt;br /&amp;gt;
      clarity
    &amp;lt;/h1&amp;gt;
    &amp;lt;div class="mt-10"&amp;gt;
      &amp;lt;div class="h-10 w-10 border border-blue-300 flex justify-center items-center"&amp;gt;
        &amp;lt;i data-feather="play" class="text-white fill-current h-4"&amp;gt;&amp;lt;/i&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Let’s walkthrough some of the new classes we’re using here:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;leading-tight&lt;/code&gt;: is used to reduce the line height. You can check the docs for more classes prefixed with &lt;code&gt;leading-&lt;/code&gt; &lt;a href="https://tailwindcss.com/docs/line-height/#app" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fill-current&lt;/code&gt;: is used to fill the SVG background with the text color.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;h-10 &amp;amp; w-10&lt;/code&gt; - sets the height and width of the box to 2.5 rem.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;border &amp;amp; border-blue-300&lt;/code&gt;: sets a border around the element and gives it the color blue.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; calling &lt;code&gt;feather.replace()&lt;/code&gt; swaps the &lt;code&gt;i&lt;/code&gt; element with SVGs. The classes assigned to the &lt;code&gt;i&lt;/code&gt; element are transferred.&lt;/p&gt;

&lt;p&gt;Next up, is the slide indicators area. The container element (&lt;strong&gt;the section tag&lt;/strong&gt;) has a class of &lt;code&gt;justify-between&lt;/code&gt; so the container element for the indicators will be pushed to the far right. &lt;/p&gt;

&lt;p&gt;Add the following code snippet where you have the indicators area comment:&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;!-- Indicators area --&amp;gt;

    &amp;lt;h2 class="text-3xl tracking-wide font-extrabold text-white"&amp;gt;01&amp;lt;/h2&amp;gt;
    &amp;lt;div class="flex flex-col mt-8 items-center"&amp;gt;
      &amp;lt;div class="h-2 w-2 border border-white rounded-full mb-4"&amp;gt;&amp;lt;/div&amp;gt;
     &amp;lt;div class="h-2 w-2 border border-white bg-white rounded-full mb-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-2 w-2 border border-white rounded-full mb-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-2 w-2 border border-white rounded-full mb-4"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="flex flex-col items-center text-white mt-8"&amp;gt;
      &amp;lt;i data-feather="chevron-up" class="mb-3 h-4 w-4"&amp;gt;&amp;lt;/i&amp;gt;
      &amp;lt;i data-feather="chevron-down" class=" h-4 w-4"&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Let’s walkthrough some of the new classes used:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;flex-col&lt;/code&gt; : used to to position flex items vertically.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rounded-full&lt;/code&gt; : Used to create pills and circles.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tracking-wide&lt;/code&gt;: Adds a letter-spacing of &lt;strong&gt;0.025em&lt;/strong&gt; to the element.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Now, let’s deal with the floating area. We’ll need to add some custom styles to deal with the absolute positioning. First, let’s define the structure. Add the following in the space defined for the &lt;strong&gt;floating call to action&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;! -- floating call to action --&amp;gt;

    &amp;lt;div class="absolute flex py-6 px-8 justify-between items-center w-3/4 shadow-xl bg-white floating-sub-hero"&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;p class="uppercase mb-0 text-gray-400 text-xxs font-bold tracking-wider"&amp;gt;
        Asian
      &amp;lt;/p&amp;gt;
      &amp;lt;h2 class="text-2xl mb-0 tracking-wide font-normal"&amp;gt;
        &amp;lt;b&amp;gt;Indonesia&amp;lt;/b&amp;gt;
      &amp;lt;/h2&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="flex"&amp;gt;
      &amp;lt;div class="flex flex-col items-end"&amp;gt;
        &amp;lt;p class="text-gray-400 uppercase font-bold text-xs tracking-wider m-0"&amp;gt;
          Summer tour
        &amp;lt;/p&amp;gt;
        &amp;lt;p class="text-left uppercase text-xs mb-0 mt-2 font-black"&amp;gt;
          Nov 2018
        &amp;lt;/p&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class="ml-5"&amp;gt;
        &amp;lt;div class="h-12 w-12 bg-blue-600 flex items-center justify-center shadow"&amp;gt;
          &amp;lt;p class="text-white m-0 text-3xl font-hairline"&amp;gt;+&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then add the following to the &lt;code&gt;index.css&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.floating-sub-hero {
      bottom: -7%;
      left: 10%;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We give the hero a bottom value of &lt;strong&gt;-7%&lt;/strong&gt; to cause the overlay effect and a left value of &lt;strong&gt;10%&lt;/strong&gt; to move it away from the edge.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In your browser, You should see a view similar to this when you navigate to &lt;a href="http://localhost:1234" rel="noopener noreferrer"&gt;http://localhost:1234&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581222811387_Screenshot%2B2020-02-09%2Bat%2B5.33.12%2BAM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581222811387_Screenshot%2B2020-02-09%2Bat%2B5.33.12%2BAM.png" alt="Photo by Pedro Monteiro on Unsplash"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The planner section
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The planner section is divided into two sections with the first containing a little writeup about the planner and the second section contains the different plans in a card format. Here’s the area in question:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581223946967_vacarion-planner.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581223946967_vacarion-planner.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Here’s how the HTML skeleton of the area would look like:&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;    &amp;lt;div class="w-4/5 mx-auto mt-32"&amp;gt;
      &amp;lt;section class="flex"&amp;gt;
        &amp;lt;div class="w-2/5"&amp;gt;
          &amp;lt;!-- explore plans section --&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="ml-auto w-2/4 flex"&amp;gt;
          &amp;lt;!-- cards section --&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/section&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;For the explore section, replace the comment with the following snippet:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;!-- explore area --&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;h2 class="text-3xl font-light"&amp;gt;
        Trip Planner
      &amp;lt;/h2&amp;gt;
      &amp;lt;div class="h-1 bg-gray-300 w-10 mt-2"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;p class="text-sm text-gray-500 font-normal my-4 leading-loose"&amp;gt;
      Lorem, ipsum dolor sit amet consectetur adipisicing elit. Molestias
      mollitia enim aliquid debitis, dolor deserunt nihil in culpa vitae
      quibusdam qui earum cum! Similique eveniet at magnam laboriosam
      consequatur illo.
    &amp;lt;/p&amp;gt;
    &amp;lt;button
      class="bg-blue-600 py-3 px-5 text-xs font-semibold text-white flex justify-center items-center mt-4 shadow-lg"
    &amp;gt;
      Explore &amp;lt;i data-feather="arrow-right" class="ml-1 h-4"&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following in the trip plans card section. For the sake of brevity, the code for the card item will be posted once, copy and paste it twice and update the contents of the second card to match the design:&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;!-- card --&amp;gt;
    &amp;lt;div class="w-2/5 mr-auto tour-card"&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;div class="relative image-section"&amp;gt;
          &amp;lt;img
            src="./assets/imgs/beach-chills.jpg"
            alt="Umbrellas at the beach"
          /&amp;gt;
          &amp;lt;div
            class="absolute bg-white p-2 shadow-lg right-0 bottom-0 flex items-center justify-center w-16"
          &amp;gt;
            &amp;lt;span class="text-xxs absolute font-bold dollar-sign"&amp;gt;$&amp;lt;/span&amp;gt;
            &amp;lt;p class="m-0 text-base font-semibold"&amp;gt;479&amp;lt;/p&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;p class="text-sm font-medium mt-2"&amp;gt;
          Tour Pantai Selatan Yogyakarta Inter Matter
        &amp;lt;/p&amp;gt;
        &amp;lt;div class="flex mt-2"&amp;gt;
          &amp;lt;p class="uppercase text-gray-500 font-semibold text-xxs"&amp;gt;
            15 days tour
          &amp;lt;/p&amp;gt;
          &amp;lt;div class="flex ml-10"&amp;gt;
            &amp;lt;i
              data-feather="star"
              class="h-3 fill-blue mr-1 text-blue-600 w-3"
            &amp;gt;&amp;lt;/i&amp;gt;
            &amp;lt;i
              data-feather="star"
              class="h-3 fill-blue mr-1 text-blue-600 w-3"
            &amp;gt;&amp;lt;/i&amp;gt;
            &amp;lt;i
              data-feather="star"
              class="h-3 fill-blue mr-1 text-blue-600 w-3"
            &amp;gt;&amp;lt;/i&amp;gt;
            &amp;lt;i
              data-feather="star"
              class="h-3 fill-blue mr-1 text-blue-600 w-3"
            &amp;gt;&amp;lt;/i&amp;gt;
            &amp;lt;i data-feather="star" class="h-3 text-gray-400 w-3"&amp;gt;&amp;lt;/i&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The image assets used for this can be found in this &lt;a href="https://github.com/paulayuk/vacarion" rel="noopener noreferrer"&gt;repository&lt;/a&gt;. After duplicating the card, use this  &lt;a href="https://github.com/paulayuk/vacarion/blob/master/assets/imgs/beach-overview.jpg" rel="noopener noreferrer"&gt;image&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For this section, we used a few custom styles. Copy the following styles into the &lt;code&gt;index.css&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    // index.css

    .text-xxs {
      font-size: 9px;
    }
    .dollar-sign {
      top: 11px;
      left: 11px;
    }
    .fill-blue {
      fill: #3182ce;
    }

    img {
      max-width: 100%;
      max-height: 100%;
    }

    .tour-card .image-section {
      width: 200px;
      height: 250px;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;You should see a view on your browser similar to the one shown below:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581279986481_Screenshot%2B2020-02-09%2Bat%2B9.21.09%2BPM.png"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="/static/img/pixel.gif" class="article-body-image-wrapper"&gt;&lt;img src="/static/img/pixel.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Below the trip planner is a small section talking about the company blog. The section we are working can be seen below:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581416425736_Screenshot%2B2020-02-11%2Bat%2B11.12.45%2BAM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581416425736_Screenshot%2B2020-02-11%2Bat%2B11.12.45%2BAM.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the following snippet below the trip planner section:&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;    &amp;lt;div class="w-11/12 mr-auto mt-32"&amp;gt;
      &amp;lt;section class="flex items-center"&amp;gt;
        &amp;lt;div class="w-1/2"&amp;gt;
          &amp;lt;img src="./assets/imgs/beach-trees.jpg" alt="Trees at the beach" /&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="w-2/5 ml-auto"&amp;gt;
          &amp;lt;div&amp;gt;
            &amp;lt;h2 class="text-3xl font-light"&amp;gt;
              Blogs
            &amp;lt;/h2&amp;gt;
            &amp;lt;div class="h-1 bg-gray-300 w-10 mt-2"&amp;gt;&amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;p class="text-sm text-gray-500 font-normal my-4 leading-loose"&amp;gt;
            Lorem, ipsum dolor sit amet consectetur adipisicing elit. Molestias
            mollitia enim aliquid debitis, dolor deserunt nihil in culpa vitae
            quibusdam qui earum cum! Similique eveniet at magnam laboriosam
            consequatur illo.
          &amp;lt;/p&amp;gt;
          &amp;lt;button
            class="bg-blue-600 py-3 px-5 text-xs font-semibold text-white flex justify-center items-center mt-4 shadow-2xl"
          &amp;gt;
            Read More &amp;lt;i data-feather="arrow-right" class="ml-1 h-4"&amp;gt;&amp;lt;/i&amp;gt;
          &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/section&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Navigate to &lt;a href="http://localhost:1234" rel="noopener noreferrer"&gt;http://localhost:1234&lt;/a&gt; to see the latest changes:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581417259169_Screenshot%2B2020-02-11%2Bat%2B11.33.57%2BAM.png"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The area showcasing the different categories is in form of a slider. We'd focus on the display than the functionality:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581419686452_Screenshot%2B2020-02-11%2Bat%2B12.05.36%2BPM.png"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’d split the implementation of this section into three parts for the sake of brevity. The skeleton for this section 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;div class="mt-32"&amp;gt;
      &amp;lt;section class="w-4/5 mx-auto flex justify-between items-center"&amp;gt;
        &amp;lt;!-- header and arrow buttons --&amp;gt;
      &amp;lt;/section&amp;gt;
      &amp;lt;section class="flex justify-between slideshow px-6 mt-4"&amp;gt;
        &amp;lt;!-- category cards --&amp;gt;
      &amp;lt;/section&amp;gt;
      &amp;lt;section class="mt-16"&amp;gt;
        &amp;lt;!-- Slider indicators --&amp;gt;
      &amp;lt;/section&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The header is split into three sections: the header text, the write up and the arrow buttons. We’D use the &lt;code&gt;flex&lt;/code&gt; class and &lt;code&gt;justify-between&lt;/code&gt; to space the contents:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;!-- header and arrow buttons --&amp;gt;
    &amp;lt;div class="w-1/5 mr-auto"&amp;gt;
      &amp;lt;h2 class="text-3xl font-light"&amp;gt;
        Categories
      &amp;lt;/h2&amp;gt;
      &amp;lt;div class="h-1 bg-gray-300 w-10 mt-2"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="w-1/2"&amp;gt;
      &amp;lt;p class="text-sm text-gray-500 font-normal my-4 leading-loose"&amp;gt;
        Lorem, ipsum dolor sit amet consectetur adipisicing elit. Molestias
        mollitia enim aliquid debitis, dolor deserunt Nihil in culpa vitae
        quibusdam qui earum cum! Similique eveniet at magnam laboriosam
        consequatur illo.
      &amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="flex justify-center w-1/5 ml-auto"&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;button
          class="bg-white text-gray-500 border border-gray-400 py-4 px-4 text-xs font-semibold flex justify-center items-center mr-3"
        &amp;gt;
          &amp;lt;i data-feather="arrow-left" class="h-4"&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;button
          class="bg-blue-600 py-4 px-4 text-xs border border-blue-600 font-semibold text-white flex justify-center items-center shadow-xl"
        &amp;gt;
          &amp;lt;i data-feather="arrow-right" class="h-4"&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next is the slider, the snippet below is for just one of the slides, you can copy and paste it three more times and update the content to get the all the slides present:&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;!-- category card --&amp;gt;
    &amp;lt;div class="card relative"&amp;gt;
      &amp;lt;img src="./assets/imgs/beach-seats.jpg" alt="" /&amp;gt;
      &amp;lt;div class="absolute overlay-text w-full flex flex-col items-center"&amp;gt;
        &amp;lt;p class="text-white text-xl tracking-tight"&amp;gt;Waterfall&amp;lt;/p&amp;gt;
        &amp;lt;p class="text-xs text-gray-500 font-semibold uppercase mt-1"&amp;gt;
          43 Adventures
        &amp;lt;/p&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To get the slider working, you can use the dependency free library &lt;a href="https://github.com/glidejs/glide" rel="noopener noreferrer"&gt;GlideJs&lt;/a&gt; or you can make use of &lt;a href="https://kenwheeler.github.io/slick/" rel="noopener noreferrer"&gt;Slick&lt;/a&gt; that depends on Jquery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And then for the indicators, we’ll have a simple setup as seen below:&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;    &amp;lt;!-- slide indicators --&amp;gt;
    &amp;lt;div class="flex mx-auto justify-center"&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-blue-600 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;And then add the following custom styles to the &lt;code&gt;index.css&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    /* index.css */
    .slideshow .card {
      width: 24%;
      height: 300px;
    }
    .slideshow .card .overlay-text{
      bottom: 20px;
    }
    .slideshow .card img{
      object-fit: cover;
      width: 100%;
      filter: brightness(50%);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You should see a view similar to the one below in your browser:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581423408042_Screenshot%2B2020-02-11%2Bat%2B1.16.33%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581423408042_Screenshot%2B2020-02-11%2Bat%2B1.16.33%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can find the assets used &lt;a href="https://github.com/paulayuk/vacarion" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Visit &lt;a href="http://localhost:1234" rel="noopener noreferrer"&gt;http://localhost:1234&lt;/a&gt; to view the changes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The stories section
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This section features an interesting background that I couldn’t find and my rusty Sketch skills weren’t enough to fully replicate it so I took a screenshot of the design and patched it to get the background. I’ll add a link to the patched background, you can always have a go at recreating the design or using a separate image.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Before we get started, this is the section in question:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581427696864_Screenshot%2B2020-02-11%2Bat%2B2.25.25%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581427696864_Screenshot%2B2020-02-11%2Bat%2B2.25.25%2BPM.png" alt="That social connection"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We’d handle this section in two parts, the heading and sub-heading and then the user profile card. We won’t be attempting the background using Tailwind as it’ll most likely be a background image. Here is how the skeleton of this section will look:&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;    &amp;lt;div class="mt-40"&amp;gt;
      &amp;lt;!-- heading and sub-heading --&amp;gt;
      &amp;lt;div class="travel-stories flex justify-between"&amp;gt;
        &amp;lt;!-- user card --&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the heading, we’d deploy the following setup:&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;div class="flex flex-col items-center"&amp;gt;
      &amp;lt;h2 class="text-4xl font-hairline text-gray-800 text-center"&amp;gt;
        Share your stories
      &amp;lt;/h2&amp;gt;
      &amp;lt;div class="h-1 bg-gray-400 w-12 mt-2"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="mt-10 mx-auto"&amp;gt;
      &amp;lt;p class="text-sm font-hairline text-center text-gray-600"&amp;gt;
        Join a community of awesome people, share your stories &amp;lt;br /&amp;gt;
        and share them with people all over the world
      &amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;And then for the stories we’ll attempt a hack to achieve the positioning of the story card. My first thought was to opt for an absolute positioning of the card but I tried the method shown in the code snippet below instead:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;!-- story card --&amp;gt;
    &amp;lt;div class="w-1/5"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="w-1/5"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="w-1/5"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="w-1/5"&amp;gt;
      &amp;lt;div class="w-full shadow-2xl mt-12"&amp;gt;
        &amp;lt;div class="flex justify-center"&amp;gt;
          &amp;lt;img
            src="https://randomuser.me/api/portraits/women/44.jpg"
            alt=""
            class="rounded-full border h-24 w-24"
          /&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="px-5 py-4 bg-white"&amp;gt;
          &amp;lt;h3 class="text-center tracking-wide"&amp;gt;Cynthia Mayoris&amp;lt;/h3&amp;gt;
          &amp;lt;p
            class="text-center text-xs text-gray-500 uppercase tracking-wider font-semibold"
          &amp;gt;
            New York, USA
          &amp;lt;/p&amp;gt;
          &amp;lt;div class="flex justify-center mt-4"&amp;gt;
            &amp;lt;div class="flex mr-4"&amp;gt;
              &amp;lt;span data-feather="user" class="fill-current h-4 w-4 mr-1"&amp;gt;&amp;lt;/span&amp;gt;
              &amp;lt;p class="text-xxs font-bold"&amp;gt;
                12k
              &amp;lt;/p&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="flex"&amp;gt;
              &amp;lt;span data-feather="heart" class="fill-current h-4 w-4 mr-1"&amp;gt;&amp;lt;/span&amp;gt;
              &amp;lt;p class="text-xxs font-bold"&amp;gt;
                3k
              &amp;lt;/p&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;button
            class="w-full bg-blue-600 py-6 px-5 text-xs border border-blue-600 font-semibold text-white flex justify-center items-center shadow-xl"
          &amp;gt;
            View Stories &amp;lt;i data-feather="arrow-right" class="h-4 ml-3"&amp;gt;&amp;lt;/i&amp;gt;
          &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="w-1/5"&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;I created a grid containing five items and placed the card in the fourth column, giving us the positioning we desired. We added custom styles to set the background, copy and add them to the &lt;code&gt;index.css&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    .travel-stories{
      background: url('/stories-bg.jpg') no-repeat;
      background-size: cover;
      height: 550px;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find the background image used &lt;a href="https://github.com/HackAfro/vacarion-project" rel="noopener noreferrer"&gt;here&lt;/a&gt;. You’ll find it all patched up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We can head to the browser again for updates. You should find the stories section showing up looking like the screenshot below:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581432679012_Screenshot%2B2020-02-11%2Bat%2B3.51.03%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581432679012_Screenshot%2B2020-02-11%2Bat%2B3.51.03%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;h2&gt;
  
  
  Testimonials Section
&lt;/h2&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The testimonials section will also feature a slider so my recommendations for Javascript sliders will come in handy here also. We’ll take on this section in bits as we’ve done before, it is divided into three columns. The columns can be seen below:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581432850773_Screenshot%2B2020-02-11%2Bat%2B3.53.58%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581432850773_Screenshot%2B2020-02-11%2Bat%2B3.53.58%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The writeup and the rating on the left, the user photo in the middle and the header and buttons on the right. The slider indicators are below. First, we’ll define the skeleton of the section:&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;    &amp;lt;div class="mt-32"&amp;gt;
      &amp;lt;section class="w-4/5 flex mx-auto"&amp;gt;
        &amp;lt;div class="w-1/3 px-3"&amp;gt;
         &amp;lt;!-- Review text and rating --&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="w-1/3 px-4 flex justify-center"&amp;gt;
          &amp;lt;!-- User photo --&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="w-1/3 px-4"&amp;gt;
          &amp;lt;!-- Header and arrow buttons --&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/section&amp;gt;
      &amp;lt;section class="mt-12"&amp;gt;
       &amp;lt;!-- slider indicators --&amp;gt;
      &amp;lt;/section&amp;gt;
    &amp;lt;/div&amp;gt;
- For the review section, the markup should look like this:
    &amp;lt;!-- Review text and rating --&amp;gt;
    &amp;lt;div class="flex justify-end mb-4"&amp;gt;
      &amp;lt;i
        data-feather="star"
        class="h-3 fill-blue mr-1 text-blue-600 w-3"
      &amp;gt;&amp;lt;/i&amp;gt;
      &amp;lt;i
        data-feather="star"
        class="h-3 fill-blue mr-1 text-blue-600 w-3"
      &amp;gt;&amp;lt;/i&amp;gt;
      &amp;lt;i
        data-feather="star"
        class="h-3 fill-blue mr-1 text-blue-600 w-3"
      &amp;gt;&amp;lt;/i&amp;gt;
      &amp;lt;i
        data-feather="star"
        class="h-3 fill-blue mr-1 text-blue-600 w-3"
      &amp;gt;&amp;lt;/i&amp;gt;
      &amp;lt;i data-feather="star" class="h-3 text-gray-400 w-3"&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;p class="text-sm font-hairline text-gray-600"&amp;gt;
      Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quibusdam
      iure cupiditate necessitatibus aut, placeat dignissimos tempora
      accusantium beatae? Vitae placeat eum aperiam amet saepe porro
      commodi. Eos odio numquam totam?
    &amp;lt;/p&amp;gt;
    &amp;lt;div class="mt-3"&amp;gt;
      &amp;lt;p class="text-sm font-hairline text-right"&amp;gt;Barry Underwood&amp;lt;/p&amp;gt;
      &amp;lt;p
        class="text-xs text-gray-400 uppercase font-semibold mt-1 text-right"
      &amp;gt;
        Traveler
      &amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Next is the reviewer photo. A simple photo given a width and height:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;!-- User photo --&amp;gt;
    &amp;lt;img
      src="./assets/imgs/photo-male.jpg"
      alt="Someone's face"
      class="h-56 w-56"
    /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Photo by &lt;a href="https://www.pexels.com/@italo-melo-881954?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;&lt;strong&gt;Italo Melo&lt;/strong&gt;&lt;/a&gt; from &lt;a href="https://www.pexels.com/photo/portrait-photo-of-smiling-man-with-his-arms-crossed-standing-in-front-of-white-wall-2379004/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;&lt;strong&gt;Pexels&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; You can find the image used here.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;And then the header and the arrow buttons:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;!-- Header and arrow buttons --&amp;gt;
    &amp;lt;div&amp;gt;
      &amp;lt;h2 class="text-4xl font-hairline text-gray-700"&amp;gt;
        What people &amp;lt;br /&amp;gt;
        says
      &amp;lt;/h2&amp;gt;
      &amp;lt;div class="h-1 bg-gray-300 w-10 mt-2"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="flex justify-start mt-12 ml-auto"&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;button
          class="bg-white text-gray-500 border border-gray-400 py-4 px-4 text-xs font-semibold flex justify-center items-center"
        &amp;gt;
          &amp;lt;i data-feather="arrow-left" class="h-4"&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;button
          class="bg-blue-600 py-4 px-4 text-xs border border-blue-600 font-semibold text-white flex justify-center items-center shadow-xl"
        &amp;gt;
          &amp;lt;i data-feather="arrow-right" class="h-4"&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding the slider indicators last. We can use a similar markup we used for the indicators categories section. This it how it looks for this section:&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;!-- slider indicators --&amp;gt;
    &amp;lt;div class="flex justify-center"&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-blue-600 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400 mr-4"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class="h-1 w-10 bg-gray-400"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Our project is near completion, this is how it currently looks:
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581450167163_Screenshot%2B2020-02-11%2Bat%2B8.41.13%2BPM.png"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The footer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The application features a minimalistic footer setup, it showcases the social media links and some of the pages relating to policy and privacy. The footer looks this way:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581450616053_Screenshot%2B2020-02-11%2Bat%2B8.50.02%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581450616053_Screenshot%2B2020-02-11%2Bat%2B8.50.02%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The inline links and social icons can be achieved using a &lt;code&gt;flex&lt;/code&gt; display coupled with &lt;code&gt;justify-between&lt;/code&gt; to space the content. Let’s see how the markup of the footer will look:&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;    &amp;lt;footer id="footer" class="py-8 mt-32"&amp;gt;
      &amp;lt;section class="w-4/5 mx-auto flex justify-between"&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;p class="text-sm text-white m-0"&amp;gt;&amp;amp;copy; Vacarion 2020 All Rights Reserved&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;ul class="flex text-white items-center"&amp;gt;
            &amp;lt;li class="mr-5"&amp;gt;&amp;lt;a href="#" class="text-sm"&amp;gt;Terms &amp;amp; Conditions&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li class="mr-5"&amp;gt;&amp;lt;a href="#" class="text-sm"&amp;gt;Privacy&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li class="mr-5"&amp;gt;&amp;lt;a href="#" class="text-sm"&amp;gt;Policy&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li class="mr-5"&amp;gt;&amp;lt;a href="#" class="text-sm"&amp;gt;Cookies&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;ul class="flex items-center"&amp;gt;
            &amp;lt;li class="mr-4 h-8 w-8 rounded-full flex justify-center bg-white items-center"&amp;gt;&amp;lt;i class=" h-4 w-4" data-feather="instagram"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li class="mr-4 h-8 w-8 rounded-full flex justify-center bg-white items-center"&amp;gt;&amp;lt;i class=" h-4 w-4" data-feather="twitter"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li class="mr-4 h-8 w-8 rounded-full flex justify-center bg-white items-center"&amp;gt;&amp;lt;i class=" h-4 w-4" data-feather="linkedin"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li class="mr-4 h-8 w-8 rounded-full flex justify-center bg-white items-center"&amp;gt;&amp;lt;i class=" h-4 w-4" data-feather="facebook"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;
            &amp;lt;li class="mr-4 h-8 w-8 rounded-full flex justify-center bg-white items-center"&amp;gt;&amp;lt;i class=" h-4 w-4" data-feather="youtube"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;
          &amp;lt;/ul&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/section&amp;gt;
    &amp;lt;/footer&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To add the background color to the footer, add the following style to the &lt;code&gt;index.css&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    #footer {
      background-color: #13283a;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Here is how it looks when viewed on the browser:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581452023048_Screenshot%2B2020-02-11%2Bat%2B9.13.24%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_8C591703388526B1BECAC08CE55736083238D2670C09EA358C1521A13565CACA_1581452023048_Screenshot%2B2020-02-11%2Bat%2B9.13.24%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can find the full page demo of the application &lt;a href="https://youthful-goodall-f27fb3.netlify.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In this article, we’ve seen how we can do a full page website design using utility classes from Tailwind. In total, we wrote 50 lines of custom pure CSS, which is amazing. You can take the current setup a step further by making the site responsive also using utility classes provided by Tailwind. You can find a tutorial in the Tailwind docs on responsive design &lt;a href="https://tailwindcss.com/course/responsive-design/#app" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The complete code used in this tutorial can be found &lt;a href="https://github.com/paulayuk/vacarion" rel="noopener noreferrer"&gt;here&lt;/a&gt;. The demo can be viewed using this &lt;a href="https://youthful-goodall-f27fb3.netlify.app/" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tailwindcss</category>
      <category>css</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How to deploy a laravel application using nginx on ubuntu</title>
      <dc:creator>Paul Ayuk</dc:creator>
      <pubDate>Mon, 20 Jan 2020 23:13:41 +0000</pubDate>
      <link>https://dev.to/paulayuk/how-to-deploy-a-laravel-application-using-nginx-on-ubuntu-4e0b</link>
      <guid>https://dev.to/paulayuk/how-to-deploy-a-laravel-application-using-nginx-on-ubuntu-4e0b</guid>
      <description>&lt;p&gt;Deploying PHP applications is often a headache for PHP developers. These days, you no longer throw all your PHP files into a folder on a shared host and have it manage everything for you, Instead, you have to create and configure a server, perform multiple installations, and write the appropriate configuration etc.&lt;/p&gt;

&lt;p&gt;In this tutorial, I will walk you through deploying a laravel application using nginx on an ubuntu server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N/B: This tutorial assumes you have a linux server with root access already setup.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;When deploying laravel, we often use a web-service solution stack like LAMP (&lt;strong&gt;Linux, Apache, Mysql, PHP&lt;/strong&gt;) or LEMP (&lt;strong&gt;Linux, Nginx, Mysql, PHP&lt;/strong&gt;). This tutorial is focused on the &lt;strong&gt;LEMP&lt;/strong&gt; stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt; Open-source open operating system that has become the most accepted by developers over the years. It will be the OS powering our web application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nginx:&lt;/strong&gt;  Open source HTTP proxy application with reputably much smaller footprints compared to Apache, allowing it to handle higher load of HTTP requests. It’d help us handle our routing (requests / response).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PHP &amp;amp;&lt;/strong&gt; &lt;strong&gt;Mysql:&lt;/strong&gt; The programming language and default storage program behind laravel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Nginx
&lt;/h2&gt;

&lt;p&gt;First, from your terminal log into your server and perform an update:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// log into the server
ssh root@your_server_ip

// perform update
apt-get update 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Next, install nginx with the following commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// install nginx
apt-get install nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Once nginx is installed, we need to configure our firewall to allow access to the service.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The default firewall configuration tool for Ubuntu is ufw (Uncomplicated firewall). Developed to ease iptables firewall configuration, ufw provides a user-friendly way to create an IPv4 or IPv6 host-based firewall. By default UFW is disabled.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To see a list of all the application configurations that &lt;code&gt;ufw&lt;/code&gt; knows how to work with, type:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw app list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You should see a list similar to this:&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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570018348274_Screenshot%2B2019-10-02%2Bat%2B1.11.49%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570018348274_Screenshot%2B2019-10-02%2Bat%2B1.11.49%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enable &lt;strong&gt;Nginx HTTP&lt;/strong&gt; by running the following in your terminal:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ufw allow 'Nginx HTTP'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You should see the rules for HTTP now allowed from the output.&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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570018425660_Screenshot%2B2019-10-02%2Bat%2B1.12.49%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570018425660_Screenshot%2B2019-10-02%2Bat%2B1.12.49%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ubuntu 18.04 automatically starts Nginx once it is installed. To see your installation in action visit the public IP of your server from a browser and you should see the following screen:&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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570018693986_Screenshot%2B2019-10-02%2Bat%2B1.15.38%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570018693986_Screenshot%2B2019-10-02%2Bat%2B1.15.38%2BPM.png" alt="Default nginx screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing PHP
&lt;/h2&gt;

&lt;p&gt;From your terminal, run the following command to install Php and all the necessary packages needed to work with laravel:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-get install php curl unzip php-pear php-fpm php-dev php-zip php-curl php-xmlrpc php-gd php-mysql php-mbstring php-xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Once successful, verify that PHP is installed by typing the following:&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;You should see the following:&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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570019122308_Screenshot%2B2019-10-02%2Bat%2B1.24.43%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570019122308_Screenshot%2B2019-10-02%2Bat%2B1.24.43%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Restart nginx to allow Php run by typing the following:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Installing Mysql
&lt;/h2&gt;

&lt;p&gt;To be able to store data, we need a storage engine. Laravel supports mysql out of the box but you can also use other storage engines. To install Mysql, run the following from your terminal:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-get install mysql-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;During the process, you may be prompted with a screen to input your password, just follow the prompt. Once that is done, configure mysql by running the following on your terminal:&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;Follow the prompts to set your root user password and other presets and you are good to go. &lt;/p&gt;

&lt;p&gt;Next, log in to MySQL and create a new database with the following commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql -u username -p

create database YOUR_DATABASE_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Installing Laravel
&lt;/h2&gt;

&lt;p&gt;At this point, everything is in place to get our app running. We need to get our laravel application on the server before we can use it.&lt;/p&gt;

&lt;p&gt;To install laravel and all its associated packages, we need to install composer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Run the following commands to install composer:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// download the installer
sudo curl -s https://getcomposer.org/installer | php

// move the composer.phar
sudo mv composer.phar /usr/local/bin/composer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;From the command line, type &lt;code&gt;composer&lt;/code&gt; to verify the installation. You should see the following screen.&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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570019449343_Screenshot%2B2019-10-02%2Bat%2B1.30.15%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570019449343_Screenshot%2B2019-10-02%2Bat%2B1.30.15%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, let’s install laravel via composer. From your server root path, navigate to &lt;code&gt;var/www/html&lt;/code&gt; path and run the following command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;composer create-project --prefer-dist laravel/laravel blog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Once successful, you should see a newly created blog directory. Navigate to it and set the appropriate permission for the storage folder and your application key by typing the following:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod -R 777 storage/

php artisan key:generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now update your database details in your &lt;code&gt;.env&lt;/code&gt; file to the database you created earlier:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DB_DATABASE=your_database_name
DB_USERNAME=your_database_username
DB_PASSWORD=your_database_password 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Finally, before we try out our application, we need to configure nginx to serve our directory by default.&lt;/p&gt;

&lt;p&gt;Open up the config file from your terminal with this command &lt;code&gt;nano /etc/nginx/sites-available/default&lt;/code&gt; and update the code to the following:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/html/blog/public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name localhost;

    location / {
    try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
      try_files $uri /index.php =404;
      fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Save the file and restart nginx with the following command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;service nginx configtest
service nginx restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now, visit your public IP in the browser and you will see the following:&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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570023649201_Screenshot%2B2019-10-02%2Bat%2B2.39.46%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570023649201_Screenshot%2B2019-10-02%2Bat%2B2.39.46%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To test that our database is working run a database migration with the following code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You should see the following response that verifies everything works correctly:&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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570024846543_Screenshot%2B2019-10-02%2Bat%2B3.00.10%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_ABFC93250077DA7BDB6971FACE3C88F03BAFB9045583028879FCFAFAAB9C8DD7_1570024846543_Screenshot%2B2019-10-02%2Bat%2B3.00.10%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;In this tutorial, we walked through the process of deploying a laravel application. We talked about lamp/lemp and the different packages required to successfully run a laravel application. Note that this is just the basics of deploying an application they are so many other aspects we didn’t cover like security, scalability, access control etc. To learn more about laravel deployments click &lt;a href="https://laravel.com/docs/6.x/deployment" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>nginx</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Building a Gatsby Blog with 8base</title>
      <dc:creator>Paul Ayuk</dc:creator>
      <pubDate>Fri, 02 Aug 2019 17:24:06 +0000</pubDate>
      <link>https://dev.to/paulayuk/building-a-gatsby-blog-with-8base-1fee</link>
      <guid>https://dev.to/paulayuk/building-a-gatsby-blog-with-8base-1fee</guid>
      <description>&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%2Fres.cloudinary.com%2Fdaintu6ky%2Fimage%2Fupload%2Fv1564761894%2FBuilding_a_Blog_with_Gatsby_and_an_8base_content_API_2x.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%2Fres.cloudinary.com%2Fdaintu6ky%2Fimage%2Fupload%2Fv1564761894%2FBuilding_a_Blog_with_Gatsby_and_an_8base_content_API_2x.png" alt="final app screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A static website contains Web pages with fixed content. Each page is simply an HTML file with fixed content that is displayed to the visitor every-time they visit your website.&lt;/p&gt;

&lt;p&gt;Because static websites are not dynamic, they do not require any back-end programming or database. This reduced complexity makes it easier to deploy your website as no extra configuration is required once deployed to a hosting provider. With static websites, you can enjoy the power of the latest web technologies like React.js, Vue.js, Webpack, modern JavaScript, CSS and more.&lt;/p&gt;

&lt;p&gt;One of the main advantage is that they ensure smooth user experiences, blazing fast website speed, improved security, hassle-free deployment, in-expensive, less time-consuming and maintenance costs. Technically, since there is no database it can not be hacked and there is no need to render a page for each request, which makes Web browsing faster.&lt;/p&gt;

&lt;p&gt;Over time, numerous open-source static websites generators have become available: Gatsby, Jekyll, Hugo, etc... Most of the time, the content is managed through static (ideally Markdown) files or a content API. These technologies have aided in the building of both static websites and blogs and have started gaining as much traction as their older blogging platforms like WordPress, Blogger, Drupal and Joomla.&lt;/p&gt;

&lt;p&gt;In this tutorial, we will build a blog using Gatsby for the frontend and 8base for the backend.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N/B: To follow this tutorial, a basic understanding of React and Node.js is required. Please ensure that you have Node and npm/yarn installed before you begin.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Gatsby?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Gatsby is a free and open-source framework based on React that helps developers build blazing-fast websites and applications.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With Gatsby, you can get the best of both worlds by using data from one or many sources. You can get data directly into your pages using GraphQL with headless CMSs, SaaS services, APIs, databases, your file system, and more.&lt;/p&gt;

&lt;p&gt;Every static website needs a source of content. When building websites with Gatsby, you access your data through GraphQL. GraphQL allows you to declaratively express your data needs. In this tutorial, we will access our content by setting up content API using 8base.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is 8base?
&lt;/h2&gt;

&lt;p&gt;8base is a GraphQL backend that lets javascript developers quickly deliver enterprise applications using full-stack JavaScript. It is a front-end framework agnostic, therefore it enables developers to create customer-facing applications however they choose to.&lt;/p&gt;

&lt;p&gt;We will use 8base as a backend database layer for our app. This is where we will store and read posts for our blog.&lt;/p&gt;

&lt;p&gt;We’ll also be making use of some GraphQL queries in the project, so some familiarity with GraphQL will be helpful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;8base offers a wide array of features to help developers build performant applications at a faster and much easier rate. Using the 8base Console, you can build your backend using a simple GUI that allows you to do things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define data schemas: create tables/table relationships&lt;/li&gt;
&lt;li&gt;Set permission and authorization roles&lt;/li&gt;
&lt;li&gt;Organize multiple projects into &lt;em&gt;Workspaces&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Design queries using the API explorer (based on GraphQL)&lt;/li&gt;
&lt;li&gt;Manage files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get started using 8base, follow the steps listed below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an account on &lt;a href="https://auth.8base.com/login?state=g6Fo2SBrb283dEtrOGU4bndGUTFGQUVyZWNwcFlrNzVFVWw5Z6N0aWTZIHByblBCMU84VWREN1ZXLVJvVFRkclpYUjE0ai01cDJOo2NpZNkgcUdIWlZ1NUN4WTVrbGl2bTI4T1BMam9wdnNZcDBiYUQ&amp;amp;client=qGHZVu5CxY5klivm28OPLjopvsYp0baD&amp;amp;protocol=oauth2&amp;amp;response_type=token%20id_token&amp;amp;redirect_uri=https%3A%2F%2Fapp.8base.com%2Fauth%2Fcallback&amp;amp;scope=openid%20email%20profile&amp;amp;mode=signUp&amp;amp;nonce=x0M6LCwpVoLZ3u1HqwPuY.Qi1.YSBj6M&amp;amp;auth0Client=eyJuYW1lIjoiYXV0aDAuanMiLCJ2ZXJzaW9uIjoiOS4xMS4xIn0%3D" rel="noopener noreferrer"&gt;8base&lt;/a&gt;. You can start using 8base for free.&lt;/li&gt;
&lt;/ul&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563912863085_Screenshot%2B2019-07-23%2Bat%2B9.13.09%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563912863085_Screenshot%2B2019-07-23%2Bat%2B9.13.09%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After sign up is complete, click on the &lt;strong&gt;Data Builder&lt;/strong&gt; button to navigate to the &lt;a href="https://app.8base.com/data/?source=post_page---------------------------" rel="noopener noreferrer"&gt;Data&lt;/a&gt; menu and click on “New Table” to start building your backend.&lt;/li&gt;
&lt;/ul&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563913216889_Screenshot%2B2019-07-23%2Bat%2B9.18.31%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563913216889_Screenshot%2B2019-07-23%2Bat%2B9.18.31%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After your new table is loaded, you’ll be taken to the schema to begin defining fields. Let’s take a look around and note a couple of things. On the left, you’ll see there are &lt;code&gt;System Tables&lt;/code&gt; and &lt;code&gt;Your Tables&lt;/code&gt;. Every new 8base workspace automatically comes prepackaged with a number of built-in tables. These tables are used to handle things like Files, Settings, and Permissions and can all be accessed through the 8base GraphQL API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go ahead and &lt;strong&gt;create a table&lt;/strong&gt;  &lt;code&gt;Posts&lt;/code&gt; that consists of the following fields:&lt;/p&gt;

&lt;p&gt;title: &lt;br&gt;
  type: Field type is Text. &lt;br&gt;
  description: This will store the title of our blog post.&lt;/p&gt;

&lt;p&gt;body: &lt;br&gt;
  type: Field type is Text.&lt;br&gt;
  description: This field will hold the body of our blog post.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563913230041_Screenshot%2B2019-07-23%2Bat%2B9.19.19%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563913230041_Screenshot%2B2019-07-23%2Bat%2B9.19.19%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We need some sample posts to work with, so let’s add some sample data. Next to the schema menu icon were we created our schema, click on the &lt;em&gt;Data&lt;/em&gt; tab and add a sample &lt;em&gt;Post&lt;/em&gt; record by setting a title and body.&lt;/li&gt;
&lt;/ul&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1564332977999_Screenshot%2B2019-07-28%2Bat%2B5.55.38%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1564332977999_Screenshot%2B2019-07-28%2Bat%2B5.55.38%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next, &lt;strong&gt;copy the API endpoint URL&lt;/strong&gt; (available on the bottom left) — this is single endpoint for communication between your frontend and your 8base backend.&lt;/li&gt;
&lt;/ul&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563913382208_Screenshot%2B2019-07-23%2Bat%2B9.21.58%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563913382208_Screenshot%2B2019-07-23%2Bat%2B9.21.58%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finally, for the purpose of this tutorial we’re going to &lt;strong&gt;allow open access to Guests&lt;/strong&gt; by default so that dealing with authentication is optional. To allow guest access to your new &lt;em&gt;Posts&lt;/em&gt; table, navigate to &lt;code&gt;Settings &amp;gt; Roles &amp;gt; Guest&lt;/code&gt; and check the appropriate boxes under &lt;em&gt;Posts&lt;/em&gt; and &lt;em&gt;F&lt;/em&gt;&lt;em&gt;iles&lt;/em&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All unauthenticated users who access your API endpoint are assigned the role of &lt;em&gt;Guest&lt;/em&gt; by default. We won’t cover authentication in this tutorial. You can see how authentication should be handled in more detail &lt;a href="https://docs.8base.com/docs/authentication?utm_source=scotchio&amp;amp;utm_medium=blog&amp;amp;utm_campaign=codebeast&amp;amp;source=post_page---------------------------" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563945802925_Screenshot%2B2019-07-24%2Bat%2B6.22.06%2BAM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563945802925_Screenshot%2B2019-07-24%2Bat%2B6.22.06%2BAM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In just a few simple steps, we’ve finished setting up a production ready CMS backend using 8base. Let’s start work on the frontend side of the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Gatsby
&lt;/h2&gt;

&lt;p&gt;To start using Gatsby, we must first install it using the Gatsby CLI. Create a new working directory and run the following in your terminal:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --global gatsby-cli  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Generate a Gatsby project
&lt;/h2&gt;

&lt;p&gt;In the folder you previously created, generate your brand new Gatsby blog:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gatsby new blog  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This command will generate a new blog using the &lt;a href="https://github.com/gatsbyjs/gatsby-starter-default.git" rel="noopener noreferrer"&gt;gatsby default blog starter theme&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start in development mode
&lt;/h2&gt;

&lt;p&gt;Enter your project's folder and start the server by running the following command in your browser terminal:&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;Your Gatsby website would be available at this address: &lt;a href="http://localhost:8000/" rel="noopener noreferrer"&gt;http://localhost:8000&lt;/a&gt;&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563914873651_Screenshot%2B2019-07-23%2Bat%2B9.47.25%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1563914873651_Screenshot%2B2019-07-23%2Bat%2B9.47.25%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Our 8base backend
&lt;/h2&gt;

&lt;p&gt;To connect Gatsby to a new source of data, you can either use an &lt;a href="https://www.gatsbyjs.org/plugins/" rel="noopener noreferrer"&gt;existing source plugin&lt;/a&gt; or &lt;a href="https://www.gatsbyjs.org/docs/create-source-plugin" rel="noopener noreferrer"&gt;develop a new source plugin&lt;/a&gt;. At the time of writing 8base doesn’t have a source plugin so we will write our configuration manually.&lt;/p&gt;

&lt;p&gt;To connect our 8base backend we will make use of some Apollo GraphQL packages. To install them, run the following command in your terminal:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save apollo-boost react-apollo apollo-link-http apollo-cache-inmemory graphql-tag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Next, we will create an &lt;code&gt;8base.config.js&lt;/code&gt; file in the root of our project to hold all our configurations. Create the file and add the following code to it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;     &lt;span class="c1"&gt;// 8base.config.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;ApolloClient&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;apollo-boost&lt;/span&gt;&lt;span class="dl"&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;ApolloProvider&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-apollo&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;createHttpLink&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;apollo-link-http&lt;/span&gt;&lt;span class="dl"&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;InMemoryCache&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;apollo-cache-inmemory&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ENDPOINT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR-8BASE-ENDPOINT&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;httpLink&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createHttpLink&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ENDPOINT&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;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ApolloClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;link&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;httpLink&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;InMemoryCache&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we need to wrap our entire application layout with Apollo provider. Once that is done , we will be  &lt;em&gt;able to connect to and query 8Base from our components&lt;/em&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Open &lt;strong&gt;layout.js&lt;/strong&gt; in the &lt;strong&gt;src&lt;/strong&gt; directory ****and update it with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="c1"&gt;// src/layout.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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PropTypes&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;prop-types&lt;/span&gt;&lt;span class="dl"&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;ApolloProvider&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-apollo&lt;/span&gt;&lt;span class="dl"&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;client&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;../../eightBase-config.js&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./layout.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Layout&lt;/span&gt; &lt;span class="o"&gt;=&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;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ApolloProvider&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;}&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;main&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;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;/main&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;/ApolloProvider&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nx"&gt;Layout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;propTypes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;PropTypes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRequired&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;Layout&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, we need to write queries that would fetch all our posts from 8base. First, create a folder called &lt;strong&gt;queries&lt;/strong&gt; inside the &lt;strong&gt;src&lt;/strong&gt; folder, then create an &lt;strong&gt;index file&lt;/strong&gt; and add the following to it*&lt;em&gt;:&lt;/em&gt;*&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="c1"&gt;// src/queries/index.js&lt;/span&gt;

    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;gql&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;graphql-tag&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;POSTS_QUERY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gql&lt;/span&gt;&lt;span class="s2"&gt;`
      query {
        postsList{
              items{
                id,
                title,
                body,
                createdAt
              }
           }
      }
    `&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;POSTS_QUERY&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we’ve written a query to get all our posts from 8base.&lt;/p&gt;

&lt;p&gt;To display all our posts we need to run the query. For that, let’s create a &lt;strong&gt;posts.js&lt;/strong&gt; file *&lt;strong&gt;*component in the **src/components&lt;/strong&gt; folder with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="c1"&gt;// src/components/posts.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;Component&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&lt;/span&gt;&lt;span class="dl"&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;Query&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-apollo&lt;/span&gt;&lt;span class="dl"&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;POSTS_QUERY&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;../queries/index&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;Link&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;gatsby&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./posts.css&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="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Posts&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

      &lt;span class="nf"&gt;render&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Query&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;POSTS_QUERY&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;loading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;)&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;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Fetching&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;              &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&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;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;              &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;posts&lt;/span&gt; &lt;span class="o"&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;postsList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;items&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;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;header&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nx"&gt;thBlog&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="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;index&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="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="nx"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;main&lt;/span&gt;&lt;span class="dl"&gt;"&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;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;card-body&lt;/span&gt;&lt;span class="dl"&gt;"&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;h2&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;Link&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;links&lt;/span&gt;&lt;span class="dl"&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;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&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;/Link&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;span&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;created&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Created&lt;/span&gt; &lt;span class="na"&gt;At&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createdAt&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="sr"&gt;/h2&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;p&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;card-text&lt;/span&gt;&lt;span class="dl"&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;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&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;/p&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="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;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;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Query&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;This code runs the query and returns it in the component. To see it on our page, we need to update our &lt;strong&gt;src/pages/index&lt;/strong&gt; file which is the main page that is displayed when Gatsby is launched. Open up the page and add the following to it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="c1"&gt;// src/pages/index.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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Layout&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;../components/layout&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Posts&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;../components/Posts&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;IndexPage&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Layout&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;Posts&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="sr"&gt;/Layout&lt;/span&gt;&lt;span class="err"&gt;&amp;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;IndexPage&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, create a &lt;code&gt;posts.css&lt;/code&gt; file in the src/components and add the following code to it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;    &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;components&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;posts&lt;/span&gt;&lt;span class="nc"&gt;.css&lt;/span&gt;
    &lt;span class="nc"&gt;.header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;70px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#036ffc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.main&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.created&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;font-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;italic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.links&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&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;To see the changes, restart your server run &lt;code&gt;gatsby develop&lt;/code&gt; in your terminal, then visit &lt;a href="http://localhost:8000" rel="noopener noreferrer"&gt;http://localhost:8000&lt;/a&gt; in a browser and you should see the following screen:&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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1564331983784_Screenshot%2B2019-07-28%2Bat%2B5.37.50%2BPM.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%2Fpaper-attachments.dropbox.com%2Fs_5BB0EC7B7AAFF1A955F6F8B32F4388FD3950022B58E5ECA06E42E5FDCC0E6873_1564331983784_Screenshot%2B2019-07-28%2Bat%2B5.37.50%2BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Throughout the creation of our blog we’ve explored how to use 8base to get a functioning backend in minutes, we’ve also seen how to setup Gatsby and write queries to fetch data from the 8base GraphQL API. 8base as a platform is relatively easy to navigate and offers an intuitive user interface. You can also visit their official &lt;a href="https://docs.8base.com/?source=post_page---------------------------" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to learn more about the how it works. &lt;/p&gt;

&lt;p&gt;Also, the source code of this tutorial’s blog application can be found &lt;a href="https://github.com/paulayuk/gatsby-8base" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>8base</category>
      <category>react</category>
      <category>graphql</category>
      <category>gatsby</category>
    </item>
  </channel>
</rss>
