{"id":28391,"date":"2022-03-23T22:02:21","date_gmt":"2022-03-23T22:02:21","guid":{"rendered":"http:\/\/Build-an-Instagram-stories-experience-in-Nuxtjs"},"modified":"2022-03-23T22:02:21","modified_gmt":"2022-03-23T22:02:21","slug":"build-an-instagram-stories-experience-in-nuxtjs","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/","title":{"rendered":"Build an Instagram Stories Experience"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>According to Instagram, the engagement on the platform has ballooned to an average of <a href=\"https:\/\/instagram-press.com\/blog\/2017\/08\/02\/celebrating-one-year-of-instagram-stories\/\">30 minutes<\/a> per day since the introduction of stories. It enables users to post and view highlights about their activities.\nStories are so popular that they are used on major social media platforms like Facebook, WhatsApp, LinkedIn, and Twitter.<\/p>\n<p>This post will discuss how to quickly build an Instagram stories experience using <a href=\"https:\/\/cloudinary.com\/\">Cloudinary<\/a> and <a href=\"https:\/\/nuxtjs.org\/\">Nuxt.js<\/a>. At the end of this tutorial, we will learn how to serve images using Cloudinary in Nuxt.js.<\/p>\n<p>Nuxt.js is a vue-based frontend development framework that enables functionalities like server-side rendering, static site generation, file-system routing, components auto-import, and API endpoints for backend features.<\/p>\n<p>Cloudinary offers a robust visual media platform to upload, store, manage, transform, and deliver images and videos for websites and applications.<\/p>\n<h2>Sandbox<\/h2>\n<p>We completed this project in <a href=\"https:\/\/codesandbox.io\/s\/solitary-butterfly-ltdk8\">a CodeSan<\/a><a href=\"https:\/\/codesandbox.io\/s\/solitary-butterfly-ltdk8\">d<\/a><a href=\"https:\/\/codesandbox.io\/s\/solitary-butterfly-ltdk8\">box<\/a>, and you can fork it to run the code.<\/p>\n<\/div>\n  \n  <div class=\"wp-block-cloudinary-code-sandbox \">\n    <iframe\n      src=\"https:\/\/codesandbox.io\/embed\/solitary-butterfly-ltdk8?theme=dark&amp;codemirror=1&amp;highlights=&amp;editorsize=50&amp;fontsize=14&amp;expanddevtools=0&amp;hidedevtools=0&amp;eslint=0&amp;forcerefresh=0&amp;hidenavigation=0&amp;initialpath=%2F&amp;module=&amp;moduleview=0&amp;previewwindow=&amp;view=&amp;runonclick=1\"\n      height=\"500\"\n      style=\"width: 100%;\"\n      title=\"build-an-instagram-strories-experience\"\n      loading=\"lazy\"\n      allow=\"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking\"\n      sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n    ><\/iframe>\n  <\/div>\n\n  <div class=\"wp-block-cloudinary-markdown \"><p>Github link <a href=\"https:\/\/github.com\/Mr-Malomz\/insta_stories\">here<\/a>.<\/p>\n<h2>Prerequisites<\/h2>\n<p>The following steps in this post require JavaScript and Vue.js experience. Experience with Nuxt.js isn\u2019t a requirement, but it\u2019s nice to have.<\/p>\n<p>We also need a <a href=\"https:\/\/cloudinary.com\/\">Cloudinary account<\/a> to store the media files. <a href=\"https:\/\/cloudinary.com\/users\/register\/free\"><strong>Signup<\/strong><\/a> <strong>is completely free<\/strong>.<\/p>\n<h2>Getting Started<\/h2>\n<p>We need to create a Nuxt.js starter project by navigating to the desired directory and running the command below in our terminal.<\/p>\n<pre><code>npx create-nuxt-app insta_stories &amp;&amp; cd insta_stories\n<\/code><\/pre>\n<p>This command will ask us some questions on how to configure our application. We can answer the questions as shown below:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">    Ok to proceed? (y) &lt; PRESS <span class=\"hljs-string\">\"y\"<\/span> <span class=\"hljs-keyword\">and<\/span> hit ENTER&gt;\n    project name: &lt;PRESS ENTER&gt;\n    programming langauge: &lt;JAVASCRIPT&gt;\n    package manager: &lt;NPM&gt;\n    UI framework: &lt;TAILWIND CSS&gt;\n    Nuxt.js modules: &lt;AXIOS - PROMISE BASED HTTP CLIENT&gt;\n    Linting tools: &lt;ESLINT, PRETTIER&gt;\n    Testing framework: &lt;NONE&gt;\n    Rendering mode: &lt;UNIVERSAL (SSR\/<span class=\"hljs-keyword\">STATIC<\/span>)\n    Deployment target: &lt;<span class=\"hljs-keyword\">STATIC<\/span>\/JAMSTACK HOSTING&gt;\n    Deployment tools: &lt;JSCONFIG.JSON&gt;\n    Continous integration: &lt;NONE&gt;\n    Version control system: &lt;GIT&gt;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The command creates a Nuxt.js project with TailwindCSS called <code>insta_stories<\/code>, and navigates into the project directory.<\/p>\n<p><a href=\"https:\/\/tailwindcss.com\/\">TailwindCSS<\/a> is a utility-first CSS framework packed with classes to help us style our web page.<\/p>\n<p>We proceed to install <a href=\"https:\/\/cloudinary.nuxtjs.org\/\">@nuxtjs\/cloudinary<\/a> and <a href=\"https:\/\/github.com\/UnevenSoftware\/vue-insta-stories\">vue-insta-stories<\/a> ****dependencies with:<\/p>\n<pre><code>npm install @nuxtjs\/cloudinary vue-insta-stories @vue\/composition-api\n<\/code><\/pre>\n<p><code>@nuxtjs\/cloudinary<\/code> is library for integrating Cloudinary with Nuxt.js.<\/p>\n<p><code>vue-insta-stories<\/code> is a customizable component for creating stories.<\/p>\n<p><code>@vue\/composition-api<\/code> is a library for composing components. It\u2019s a required dependency for <code>vue-insta-stories<\/code>.<\/p>\n<p><strong>Configuring Cloudinary in Nuxt.js<\/strong>\nFirst, we need to modify the <code>nuxt.config.js<\/code> file by adding <code>@nuxtjs\/cloudinary<\/code> as a module in the  <code>modules<\/code> section:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">    modules: &#91;\n        <span class=\"hljs-string\">'@nuxtjs\/cloudinary'<\/span>, <span class=\"hljs-comment\">\/\/add this<\/span>\n      ],\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>Next, we need to configure Cloudinary by adding a <code>cloudinary<\/code> section below the <code>modules<\/code> section as shown below:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">    modules: &#91;\n        <span class=\"hljs-string\">'@nuxtjs\/cloudinary'<\/span>,\n      ],\n    \n    <span class=\"hljs-comment\">\/\/add this<\/span>\n    <span class=\"hljs-attr\">cloudinary<\/span>: {\n        <span class=\"hljs-attr\">cloudName<\/span>: <span class=\"hljs-string\">'&lt;your-cloud-name&gt;'<\/span>,\n        <span class=\"hljs-attr\">useComponent<\/span>: <span class=\"hljs-literal\">true<\/span>,\n      },\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The <code>useComponent<\/code> flag set to true lets us use the built-in Cloudinary components. Our cloud name is obtained from our Cloudinary dashboard.<\/p>\n<h2>Image sourcing and upload to Cloudinary<\/h2>\n<p>Next, we need to upload sample images from Unsplash to create our Instagram stories.<\/p>\n<p><strong>Stories Photos url<\/strong><\/p>\n<ul>\n<li>\n<a href=\"https:\/\/images.unsplash.com\/photo-1539096567589-dbfe6d0beee2?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=689&amp;q=80\">https:\/\/images.unsplash.com\/photo-1539096567589-dbfe6d0beee2?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=689&amp;q=80<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/images.unsplash.com\/photo-1472496175377-b5d7625d4ba9?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=880&amp;q=80\">https:\/\/images.unsplash.com\/photo-1472496175377-b5d7625d4ba9?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=880&amp;q=80<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/images.unsplash.com\/photo-1506202687253-52e1b29d3527?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1470&amp;q=80\">https:\/\/images.unsplash.com\/photo-1506202687253-52e1b29d3527?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1470&amp;q=80<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/images.unsplash.com\/photo-1572971916307-8cf6b4f5200d?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1470&amp;q=80\">https:\/\/images.unsplash.com\/photo-1572971916307-8cf6b4f5200d?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1470&amp;q=80<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/images.unsplash.com\/photo-1459260216545-994dda21d51a?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1470&amp;q=80\">https:\/\/images.unsplash.com\/photo-1459260216545-994dda21d51a?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1470&amp;q=80<\/a>\n<\/li>\n<\/ul>\n<p>In our Cloudinary dashboard, we uploaded the images by clicking on the <strong>Media Library<\/strong> tab, clicking on <strong>Upload<\/strong>, selecting <strong>Web Address<\/strong> option, input the <strong>url<\/strong>, and clicking on the <strong>Arrow Button<\/strong> to upload.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_09154C99BD025007588E7E863D13AB13FE936D0B55FA69EF06F32C362371F6D6_1635104341304_Screenshot+2021-10-24+at+20.37.46.png\" alt=\"Cloudinary console and upload button for other formats of upload\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"2000\" height=\"275\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_83F3FBD7ECC4D58C256BC95B11E26148AE441C8ED8A1FF0E7E7D0A2229B1C1FD_1642503859751_Screenshot+2022-01-16+at+22.15.17.png\" alt=\"select web address and enter url\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"2000\" height=\"958\"\/><\/p>\n<p>After uploading all the images, we will see them displayed on the console. To get the image URL, mouse hover on the image and click on the link icon. These URLs will come in handy when populating the image collection.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_83F3FBD7ECC4D58C256BC95B11E26148AE441C8ED8A1FF0E7E7D0A2229B1C1FD_1642504931695_Screenshot+2022-01-18+at+12.17.21.png\" alt=\"Uploaded image with copy icon higlighted\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"2000\" height=\"958\"\/><\/p>\n<h2>Set up the image collection<\/h2>\n<p>Next, we need to create a <code>utils<\/code> folder in the project root directory. In this folder, we create a <code>stories.json<\/code> file. This file contains image data for the stories.<\/p>\n<p><strong>stories.json<\/strong><\/p>\n<pre><code>[\n    &quot;&lt;REPLACE THIS WITH YOUR IMAGE URL&gt;&quot;,\n    &quot;&lt;REPLACE THIS WITH YOUR IMAGE URL&gt;&quot;,\n    &quot;&lt;REPLACE THIS WITH YOUR IMAGE URL&gt;&quot;,\n    &quot;&lt;REPLACE THIS WITH YOUR IMAGE URL&gt;&quot;,\n    &quot;&lt;REPLACE THIS WITH YOUR IMAGE URL&gt;&quot;\n]\n<\/code><\/pre>\n<h2>Creating the Instagram Story<\/h2>\n<p>First, we need to navigate to the <code>components<\/code> folder, and in this folder, create an <code>Info.vue<\/code> file and add the code snippet below:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">template<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"text-sm w-full lg:w-2\/3\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">section<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"flex items-center mb-4\"<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"font-normal mr-6\"<\/span>&gt;<\/span>Estelle_<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span>\n            <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"border border-gray-200 py-1 md:px-10 font-bold text-sm rounded-md\"<\/span>\n          &gt;<\/span>\n            Message\n          <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">section<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"flex mb-4\"<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"md:flex md:space-x-1 mr-8\"<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"font-bold text-sm\"<\/span>&gt;<\/span>13<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"text-sm font-medium text-gray-400\"<\/span>&gt;<\/span>posts<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"md:flex md:space-x-1 mr-8\"<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"font-bold text-sm\"<\/span>&gt;<\/span>194<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"text-sm font-medium text-gray-400\"<\/span>&gt;<\/span>followers<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"md:flex md:space-x-1 mr-8\"<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"font-bold text-sm\"<\/span>&gt;<\/span>182<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"text-sm font-medium text-gray-400\"<\/span>&gt;<\/span>following<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n          An online store \ud83c\udfec we deal on all kinds of footwear \ud83d\udc60\ud83d\udc5e for both male and\n          female. Contact us \u260e{\" \"}\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"text-blue-600\"<\/span>&gt;<\/span>@08141703050<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>. Worldwide delivery \ud83c\udf0d\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"text-blue-600\"<\/span>&gt;<\/span>@Owerri<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>, Nigeria\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"text-xs py-5\"<\/span>&gt;<\/span>\n          followed by <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"font-bold\"<\/span>&gt;<\/span>dpkreativ<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">template<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span>&gt;<\/span><span class=\"javascript\">\n      <span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> {}\n<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The snippet above contains a placeholder for posts, numbers of followers, following and details just as we have it on Instagram.<\/p>\n<p>Next, we modify the <code>index.vue<\/code> file in the <code>pages<\/code> folder to the following:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">template<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>\n    <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center sm:pt-0\"<\/span>\n  &gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"max-w-4xl mx-auto sm:px-6 lg:px-8\"<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>\n        <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"flex flex-col lg:flex-row items-center mt-8 bg-white overflow-hidden shadow sm:rounded-lg p-6\"<\/span>\n      &gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>\n          <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"w-44 h-44 flex items-center justify-center border-indigo-400 border-4 mr-4 rounded-full cursor-pointer\"<\/span>\n          <span class=\"hljs-attr\">role<\/span>=<span class=\"hljs-string\">\"button\"<\/span>\n          @<span class=\"hljs-attr\">click<\/span>=<span class=\"hljs-string\">\"toggleStory\"<\/span>\n        &gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">cld-image<\/span>\n            <span class=\"hljs-attr\">:public-id<\/span>=<span class=\"hljs-string\">\"images&#91;0]\"<\/span>\n            <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"rounded-full w-40 h-40\"<\/span>\n          &gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">cld-image<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Info<\/span> \/&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span>\n      <span class=\"hljs-attr\">v-if<\/span>=<span class=\"hljs-string\">\"showStory\"<\/span>\n      <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"absolute h-screen w-screen bg-black bg-opacity-70 top-0 h-100vh\"<\/span>\n    &gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">section<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"flex justify-end p-4\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span>\n          @<span class=\"hljs-attr\">click<\/span>=<span class=\"hljs-string\">\"toggleStory\"<\/span>\n          <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"px-4 py-2 rounded-lg shadow-md bg-indigo-700 font-semibold text-white capitalize\"<\/span>\n        &gt;<\/span>\n          close\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">section<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">section<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"flex items-center justify-center\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Stories<\/span>\n          <span class=\"hljs-attr\">v-if<\/span>=<span class=\"hljs-string\">\"showStory\"<\/span>\n          <span class=\"hljs-attr\">:stories<\/span>=<span class=\"hljs-string\">\"images\"<\/span>\n          <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"absolute top-10 left h-4\/5 w-2\/4\"<\/span>\n        \/&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">section<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">template<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span>&gt;<\/span><span class=\"javascript\">\n<span class=\"hljs-keyword\">import<\/span> { Stories } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'vue-insta-stories'<\/span>\n<span class=\"hljs-keyword\">import<\/span> images <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@\/utils\/stories.json'<\/span>\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> {\n  <span class=\"hljs-attr\">components<\/span>: { Stories },\n  data() {\n    <span class=\"hljs-keyword\">return<\/span> {\n      images,\n      <span class=\"hljs-attr\">showStory<\/span>: <span class=\"hljs-literal\">false<\/span>,\n    }\n  },\n  <span class=\"hljs-attr\">methods<\/span>: {\n    toggleStory() {\n      <span class=\"hljs-keyword\">this<\/span>.showStory = !<span class=\"hljs-keyword\">this<\/span>.showStory\n    },\n  },\n}\n<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The snippet above does the following:<\/p>\n<ul>\n<li>Imports the image collection and <code>Stories<\/code> component<\/li>\n<li>Creates <code>data<\/code> properties to manage imported image collection and conditionally show the story.<\/li>\n<li>Creates the <code>toggleStory<\/code> method to toggle story visibility.<\/li>\n<li>Markup to show a profile picture using Cloudinary and <code>Info<\/code> component.<\/li>\n<li>Markup for the <code>Stories<\/code> component. The markup also configured the <code>Stories<\/code> component to render conditionally and passed the imported <code>images<\/code> as props.<\/li>\n<\/ul>\n<p>With that done, we can start a development server using the command below:<\/p>\n<pre><code>npm run dev\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_83F3FBD7ECC4D58C256BC95B11E26148AE441C8ED8A1FF0E7E7D0A2229B1C1FD_1642536690323_Screenshot+2022-01-18+at+15.33.42.png\" alt=\"\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"2000\" height=\"958\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_83F3FBD7ECC4D58C256BC95B11E26148AE441C8ED8A1FF0E7E7D0A2229B1C1FD_1642536690398_Screenshot+2022-01-18+at+15.33.48.png\" alt=\"\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"2000\" height=\"958\"\/><\/p>\n<h1>Conclusion<\/h1>\n<p>This post discussed how to build an instagram stories experience using Cloudinary and Nuxt.js.<\/p>\n<p>You may find these resources helpful:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/cloudinary.nuxtjs.org\/\">Cloudinary Nuxt.js module<\/a>.<\/li>\n<li>\n<a href=\"https:\/\/tailwindcss.com\/\">TailwindCSS<\/a>.<\/li>\n<li>\n<a href=\"https:\/\/github.com\/UnevenSoftware\/vue-insta-stories\">vue-insta-stories package<\/a>.<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":28392,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134,370,372,405,371,315],"class_list":["post-28391","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post","tag-image","tag-nuxtjs","tag-processing","tag-under-review","tag-vue"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Build an Instagram Stories Experience<\/title>\n<meta name=\"description\" content=\"This post will discuss how to quickly build an Instagram stories experience using Cloudinary and Nuxt.js.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build an Instagram Stories Experience\" \/>\n<meta property=\"og:description\" content=\"This post will discuss how to quickly build an Instagram stories experience using Cloudinary and Nuxt.js.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-23T22:02:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1012\" \/>\n\t<meta property=\"og:image:height\" content=\"506\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Build an Instagram Stories Experience\",\"datePublished\":\"2022-03-23T22:02:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/\"},\"wordCount\":5,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA\",\"keywords\":[\"Guest Post\",\"Image\",\"NuxtJS\",\"Processing\",\"Under Review\",\"Vue\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2022\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/\",\"url\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/\",\"name\":\"Build an Instagram Stories Experience\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA\",\"datePublished\":\"2022-03-23T22:02:21+00:00\",\"description\":\"This post will discuss how to quickly build an Instagram stories experience using Cloudinary and Nuxt.js.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA\",\"width\":1012,\"height\":506},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build an Instagram Stories Experience\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Build an Instagram Stories Experience","description":"This post will discuss how to quickly build an Instagram stories experience using Cloudinary and Nuxt.js.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/","og_locale":"en_US","og_type":"article","og_title":"Build an Instagram Stories Experience","og_description":"This post will discuss how to quickly build an Instagram stories experience using Cloudinary and Nuxt.js.","og_url":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/","og_site_name":"Cloudinary Blog","article_published_time":"2022-03-23T22:02:21+00:00","og_image":[{"width":1012,"height":506,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/"},"author":{"name":"","@id":""},"headline":"Build an Instagram Stories Experience","datePublished":"2022-03-23T22:02:21+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/"},"wordCount":5,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA","keywords":["Guest Post","Image","NuxtJS","Processing","Under Review","Vue"],"inLanguage":"en-US","copyrightYear":"2022","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/","url":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/","name":"Build an Instagram Stories Experience","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA","datePublished":"2022-03-23T22:02:21+00:00","description":"This post will discuss how to quickly build an Instagram stories experience using Cloudinary and Nuxt.js.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA","width":1012,"height":506},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/build-an-instagram-stories-experience-in-nuxtjs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Build an Instagram Stories Experience"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924630\/Web_Assets\/blog\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a\/828e7444643ea68414664b1cd42f03162953c115-1012x506-1_28392f1e3a.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=28391"}],"version-history":[{"count":0,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28391\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/28392"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=28391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=28391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=28391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}