[
  {
    "path": ".gitignore",
    "content": "############################\n# OS X\n############################\n\n.DS_Store\n.AppleDouble\n.LSOverride\nIcon\n.Spotlight-V100\n.Trashes\n._*\n\n\n############################\n# Linux\n############################\n\n*~\n\n\n############################\n# Windows\n############################\n\nThumbs.db\nehthumbs.db\nDesktop.ini\n$RECYCLE.BIN/\n*.cab\n*.msi\n*.msm\n*.msp\n\n\n############################\n# Packages\n############################\n\n*.7z\n*.csv\n*.dat\n*.dmg\n*.gz\n*.iso\n*.jar\n*.rar\n*.tar\n*.com\n*.class\n*.dll\n*.exe\n*.o\n*.seed\n*.so\n*.swo\n*.swp\n*.swn\n*.swm\n*.out\n*.pid\n\n\n############################\n# Logs and databases\n############################\n\n.tmp\n*.log\n*.sql\n*.sqlite\n*.sqlite3\n\n\n############################\n# Misc.\n############################\n\n*#\nssl\n.idea\nnbproject\npublic/uploads/*\n!public/uploads/.gitkeep\n\n############################\n# Node.js\n############################\n\nlib-cov\nlcov.info\npids\nlogs\nresults\nnode_modules\n.node_history\n\n\n############################\n# Tests\n############################\n\ntestApp\ncoverage\n\n############################\n# Strapi\n############################\n\nexports\n.cache\nbuild\n\n# Custom\n.vscode\ndist\n.nuxt\n.env"
  },
  {
    "path": "LICENSE.txt",
    "content": "MIT License\n\nCopyright (c) [year] [fullname]\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "README.md",
    "content": "**:no_entry: Deprecated**\n\nThis repository is no longer maintained and only works for Strapi v3. To find the newest Strapi v4 starters, check out the [starters-and-templates monorepo](https://github.com/strapi/starters-and-templates/).\n\n---\n\n# Strapi Starter Nuxt Blog\n\nNuxt starter for creating a blog with Strapi.\n\n![screenshot image](/screenshot.png)\n\nThis starter allows you to try Strapi with Nuxt with the example of a simple blog. It is fully customizable and due to the fact that it is open source, fully open to contributions. So do not hesitate to add new features and report bugs!\n\nThis starter uses the [Strapi blog template](https://github.com/strapi/strapi-template-blog)\n\nCheck out all of our starters [here](https://strapi.io/starters)\n\n\n## Features\n\n- 2 Content types: Article, Category\n- 2 Created articles\n- 3 Created categories\n- Permissions set to `true` for article and category\n- Responsive design using UIkit\n\nPages:\n\n- \"/\" display every articles\n- \"/article/:id\" display one article\n- \"/category/:id\" display articles depending on the category\n\n\n## Getting started\n\nUse our `create-strapi-starter` CLI to create your project.\n\n```sh\nnpx create-strapi-starter@3 my-site nuxt-blog\n```\n\nThe CLI will create a monorepo, install dependencies, and run your project automatically.\n\nThe Nuxt frontend server will run here => [http://localhost:3000](http://localhost:3000)\n\nThe Strapi backend server will run here => [http://localhost:1337](http://localhost:1337)\n\n## Deploying to production\n\nYou will need to deploy the `frontend` and `backend` projects separately. Here are the docs to deploy each one:\n\n- [Deploy Strapi](https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/deployment.html#hosting-provider-guides)\n- [Deploy Nuxt](https://nuxtjs.org/docs/2.x/deployment/deploying-to-21yunbox)\n\nDon't forget to setup the environment variables on your production app:\n\nFor the frontend the following environment variable is required: \n- `API_URL`: URL of your Strapi backend, without trailing slash\n\n\nEnjoy this starter!\n"
  },
  {
    "path": "starter/.eslintignore",
    "content": ".gitignore\nnode_modules\n.vscode\ndist\n.nuxt\n"
  },
  {
    "path": "starter/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"env\": {\n    \"browser\": true,\n    \"node\": true\n  },\n  \"parserOptions\": {\n    \"parser\": \"babel-eslint\"\n  },\n  \"extends\": [\n    \"eslint:recommended\",\n    \"plugin:vue/recommended\",\n    \"plugin:prettier/recommended\",\n    \"prettier/vue\"\n  ],\n  \"plugins\": [\"vue\"],\n  \"rules\": {}\n}"
  },
  {
    "path": "starter/assets/README.md",
    "content": "# ASSETS\n\n**This directory is not required, you can delete it if you don't want to use it.**\n\nThis directory contains your un-compiled assets such as LESS, SASS, or JavaScript.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked).\n"
  },
  {
    "path": "starter/assets/css/main.css",
    "content": "a {\n  text-decoration: none;\n}\n\nh1  {\n  font-family: Staatliches;\n  font-size: 120px;\n}\n\n#category {\n   font-family: Staatliches;\n   font-weight: 500;\n}\n\n#title {\n  letter-spacing: .4px;\n  font-size: 22px;\n  font-size: 1.375rem;\n  line-height: 1.13636;\n}\n\n#banner {\n  margin: 20px;\n  height: 800px;\n}\n\n#editor {\n  font-size: 16px;\n  font-size: 1rem;\n  line-height: 1.75;\n}\n\n.uk-navbar-container {\n  background: #fff !important;\n  font-family: Staatliches;\n}\n\nimg:hover {\n  opacity: 1;\n  transition: opacity 0.25s cubic-bezier(0.39, 0.575, 0.565, 1);\n}\n"
  },
  {
    "path": "starter/components/ArticleCard.vue",
    "content": "<template>\n  <nuxt-link\n    :key=\"article.id\"\n    :to=\"{ name: 'articles-slug', params: { slug: article.slug } }\"\n    class=\"uk-link-reset\"\n  >\n    <div class=\"uk-card uk-card-muted\">\n      <div class=\"uk-card-media-top\">\n        <img :src=\"getStrapiMedia(article.image.url)\" height=\"100\" />\n      </div>\n      <div class=\"uk-card-body\">\n        <p v-if=\"article.category\" id=\"category\" class=\"uk-text-uppercase\">\n          {{ article.category.name }}\n        </p>\n        <p id=\"title\" class=\"uk-text-large\">{{ article.title }}</p>\n        <hr class=\"uk-divider-small\" />\n        <div class=\"uk-grid-small uk-flex-left\" data-uk-grid=\"true\">\n          <div>\n            <img\n              class=\"avatar\"\n              :src=\"getStrapiMedia(article.author.picture.url)\"\n              style=\"position: static; border-radius: 50%; object-fit: cover\"\n              width=\"40px\"\n              height=\"40px\"\n              :alt=\"article.title\"\n            />\n          </div>\n          <div class=\"uk-width-expand\">\n            <p class=\"uk-margin-remove-bottom\">{{ article.author.name }}</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </nuxt-link>\n</template>\n\n<script>\nimport { getStrapiMedia } from \"../utils/medias\";\n\nexport default {\n  props: {\n    article: {\n      type: Object,\n      default: () => ({}),\n    },\n  },\n  methods: {\n    getStrapiMedia,\n  },\n};\n</script>\n"
  },
  {
    "path": "starter/components/Articles.vue",
    "content": "<template>\n  <div>\n    <div class=\"uk-child-width-1-2\" uk-grid>\n      <div>\n        <ArticleCard\n          v-for=\"article in leftArticles\"\n          :key=\"article.id\"\n          :article=\"article\"\n        />\n      </div>\n      <div>\n        <div class=\"uk-child-width-1-2@m uk-grid-match\" uk-grid>\n          <ArticleCard\n            v-for=\"article in rightArticles\"\n            :key=\"article.id\"\n            :article=\"article\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport ArticleCard from \"./ArticleCard\";\n\nexport default {\n  components: {\n    ArticleCard,\n  },\n  props: {\n    articles: {\n      type: Array,\n      default: () => [],\n    },\n  },\n  computed: {\n    leftArticlesCount() {\n      return Math.ceil(this.articles.length / 5);\n    },\n    leftArticles() {\n      return this.articles.slice(0, this.leftArticlesCount);\n    },\n    rightArticles() {\n      return this.articles.slice(this.leftArticlesCount, this.articles.length);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "starter/components/Logo.vue",
    "content": "<template>\n  <div class=\"VueToNuxtLogo\">\n    <div class=\"Triangle Triangle--two\" />\n    <div class=\"Triangle Triangle--one\" />\n    <div class=\"Triangle Triangle--three\" />\n    <div class=\"Triangle Triangle--four\" />\n  </div>\n</template>\n\n<style>\n.VueToNuxtLogo {\n  display: inline-block;\n  animation: turn 2s linear forwards 1s;\n  transform: rotateX(180deg);\n  position: relative;\n  overflow: hidden;\n  height: 180px;\n  width: 245px;\n}\n\n.Triangle {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 0;\n  height: 0;\n}\n\n.Triangle--one {\n  border-left: 105px solid transparent;\n  border-right: 105px solid transparent;\n  border-bottom: 180px solid #41b883;\n}\n\n.Triangle--two {\n  top: 30px;\n  left: 35px;\n  animation: goright 0.5s linear forwards 3.5s;\n  border-left: 87.5px solid transparent;\n  border-right: 87.5px solid transparent;\n  border-bottom: 150px solid #3b8070;\n}\n\n.Triangle--three {\n  top: 60px;\n  left: 35px;\n  animation: goright 0.5s linear forwards 3.5s;\n  border-left: 70px solid transparent;\n  border-right: 70px solid transparent;\n  border-bottom: 120px solid #35495e;\n}\n\n.Triangle--four {\n  top: 120px;\n  left: 70px;\n  animation: godown 0.5s linear forwards 3s;\n  border-left: 35px solid transparent;\n  border-right: 35px solid transparent;\n  border-bottom: 60px solid #fff;\n}\n\n@keyframes turn {\n  100% {\n    transform: rotateX(0deg);\n  }\n}\n\n@keyframes godown {\n  100% {\n    top: 180px;\n  }\n}\n\n@keyframes goright {\n  100% {\n    left: 70px;\n  }\n}\n</style>\n"
  },
  {
    "path": "starter/components/README.md",
    "content": "# COMPONENTS\n\n**This directory is not required, you can delete it if you don't want to use it.**\n\nThe components directory contains your Vue.js Components.\n\n_Nuxt.js doesn't supercharge these components._\n"
  },
  {
    "path": "starter/layouts/README.md",
    "content": "# LAYOUTS\n\n**This directory is not required, you can delete it if you don't want to use it.**\n\nThis directory contains your Application Layouts.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts).\n"
  },
  {
    "path": "starter/layouts/default.vue",
    "content": "<template>\n  <div>\n    <nav class=\"uk-navbar-container\" uk-navbar>\n      <div class=\"uk-navbar-left\">\n        <ul class=\"uk-navbar-nav\">\n          <li>\n            <a href=\"#modal-full\" uk-toggle><span uk-icon=\"icon: table\" /></a>\n          </li>\n          <li>\n            <nuxt-link to=\"/\" tag=\"a\">Strapi Blog</nuxt-link>\n          </li>\n        </ul>\n      </div>\n\n      <div class=\"uk-navbar-right\">\n        <ul class=\"uk-navbar-nav\">\n          <li v-for=\"category in categories\" :key=\"category.id\">\n            <nuxt-link\n              :to=\"{ name: 'categories-slug', params: { slug: category.slug } }\"\n              tag=\"a\"\n            >\n              {{ category.name }}\n            </nuxt-link>\n          </li>\n        </ul>\n      </div>\n    </nav>\n\n    <div id=\"modal-full\" class=\"uk-modal-full\" uk-modal>\n      <div class=\"uk-modal-dialog\">\n        <button\n          class=\"uk-modal-close-full uk-close-large\"\n          type=\"button\"\n          uk-close\n        />\n        <div\n          class=\"uk-grid-collapse uk-child-width-1-2@s uk-flex-middle\"\n          uk-grid\n        >\n          <div\n            class=\"uk-background-cover\"\n            style=\"\n              background-image: url('https://images.unsplash.com/photo-1493612276216-ee3925520721?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=3308&q=80 3308w');\n            \"\n            uk-height-viewport\n          />\n          <div class=\"uk-padding-large\">\n            <h1 style=\"font-family: Staatliches\">Strapi blog</h1>\n            <div class=\"uk-width-1-2@s\">\n              <ul class=\"uk-nav-primary uk-nav-parent-icon\" uk-nav>\n                <li v-for=\"category in categories\" :key=\"category.id\">\n                  <nuxt-link\n                    class=\"uk-modal-close\"\n                    :to=\"{\n                      name: 'categories-slug',\n                      params: { slug: category.slug },\n                    }\"\n                    tag=\"a\"\n                  >\n                    {{ category.name }}\n                  </nuxt-link>\n                </li>\n              </ul>\n            </div>\n            <p class=\"uk-text-light\">Built with strapi</p>\n          </div>\n        </div>\n      </div>\n    </div>\n    <nuxt />\n  </div>\n</template>\n\n<script>\nexport default {\n  async fetch() {\n    this.categories = await this.$strapi.find(\"categories\");\n  },\n  data: function () {\n    return {\n      categories: [],\n    };\n  },\n};\n</script>\n"
  },
  {
    "path": "starter/middleware/README.md",
    "content": "# MIDDLEWARE\n\n**This directory is not required, you can delete it if you don't want to use it.**\n\nThis directory contains your application middleware.\nMiddleware let you define custom functions that can be run before rendering either a page or a group of pages.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing#middleware).\n"
  },
  {
    "path": "starter/nuxt.config.js",
    "content": "const strapiBaseUri = process.env.API_URL || \"http://localhost:1337\";\n\nexport default {\n  target: \"static\",\n  env: {\n    strapiBaseUri,\n  },\n  head: {\n    meta: [\n      { charset: \"utf-8\" },\n      { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\n    ],\n    link: [\n      {\n        rel: \"stylesheet\",\n        href: \"https://fonts.googleapis.com/css?family=Staatliches\",\n      },\n    ],\n  },\n  /*\n   ** Global CSS\n   */\n  css: [\n    \"uikit/dist/css/uikit.min.css\",\n    \"uikit/dist/css/uikit.css\",\n    \"@assets/css/main.css\",\n  ],\n  plugins: [{ src: \"~/plugins/uikit.js\", ssr: false }],\n  modules: [\"@nuxtjs/markdownit\", \"@nuxtjs/strapi\"],\n  strapi: {\n    url: strapiBaseUri,\n    entities: [\n      {\n        name: \"articles\",\n        type: \"collection\",\n      },\n      {\n        name: \"categories\",\n        type: \"collection\",\n      },\n      {\n        name: \"homepage\",\n        type: \"single\",\n      },\n      {\n        name: \"global\",\n        type: \"single\",\n      },\n    ],\n  },\n  markdownit: {\n    preset: \"default\",\n    linkify: true,\n    breaks: true,\n    injected: true,\n    html: true,\n  },\n};\n"
  },
  {
    "path": "starter/package.json",
    "content": "{\n  \"name\": \"frontend\",\n  \"version\": \"1.0.0\",\n  \"description\": \"My polished Nuxt.js project\",\n  \"author\": \"You\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"nuxt\",\n    \"develop\": \"nuxt\",\n    \"start\": \"nuxt start\",\n    \"generate\": \"nuxt generate\",\n    \"lint\": \"eslint --ext .js,.vue .\",\n    \"lint:fix\": \"eslint --ext .js,.vue . --fix\"\n  },\n  \"dependencies\": {\n    \"@nuxtjs/markdownit\": \"^1.2.7\",\n    \"@nuxtjs/strapi\": \"^0.1.6\",\n    \"graphql\": \"^14.5.8\",\n    \"moment\": \"^2.29.0\",\n    \"nuxt\": \"^2.14.6\",\n    \"uikit\": \"^3.2.3\"\n  },\n  \"devDependencies\": {\n    \"@babel/runtime-corejs3\": \"^7.9.6\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"core-js\": \"^3.6.5\",\n    \"eslint\": \"^7.9.0\",\n    \"eslint-config-prettier\": \"^6.11.0\",\n    \"eslint-loader\": \"^4.0.2\",\n    \"eslint-plugin-prettier\": \"^3.1.4\",\n    \"eslint-plugin-vue\": \"^6.2.2\",\n    \"prettier\": \"^2.1.2\"\n  },\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "starter/pages/README.md",
    "content": "# PAGES\n\nThis directory contains your Application Views and Routes.\nThe framework reads all the `*.vue` files inside this directory and creates the router of your application.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing).\n"
  },
  {
    "path": "starter/pages/articles/_slug.vue",
    "content": "<template>\n  <div>\n    <div\n      v-if=\"article.image\"\n      id=\"banner\"\n      class=\"uk-height-small uk-flex uk-flex-center uk-flex-middle uk-background-cover uk-light uk-padding\"\n      :data-src=\"getStrapiMedia(article.image.url)\"\n      uk-img\n    >\n      <h1>{{ article.title }}</h1>\n    </div>\n\n    <div class=\"uk-section\">\n      <div class=\"uk-container uk-container-small\">\n        <!-- eslint-disable vue/no-v-html -->\n        <div\n          v-if=\"article.content\"\n          id=\"editor\"\n          v-html=\"$md.render(article.content)\"\n        />\n        <!-- eslint-enable vue/no-v-html -->\n        <p v-if=\"article.published_at\">\n          {{ moment(article.published_at).format(\"MMM Do YY\") }}\n        </p>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport moment from \"moment\";\nimport { getStrapiMedia } from \"../../utils/medias\";\nimport { getMetaTags } from \"../../utils/seo\";\n\nexport default {\n  async asyncData({ $strapi, params }) {\n    const matchingArticles = await $strapi.find(\"articles\", {\n      slug: params.slug,\n    });\n    return {\n      article: matchingArticles[0],\n      global: await $strapi.find(\"global\"),\n    };\n  },\n  data() {\n    return {\n      apiUrl: process.env.strapiBaseUri,\n    };\n  },\n  methods: {\n    moment,\n    getStrapiMedia,\n  },\n  head() {\n    const { defaultSeo, favicon, siteName } = this.global;\n\n    // Merge default and article-specific SEO data\n    const fullSeo = {\n      ...defaultSeo,\n      metaTitle: this.article.title,\n      metaDescription: this.article.description,\n      shareImage: this.article.image,\n    };\n\n    return {\n      titleTemplate: `%s | ${siteName}`,\n      title: fullSeo.metaTitle,\n      meta: getMetaTags(fullSeo),\n      link: [\n        {\n          rel: \"favicon\",\n          href: getStrapiMedia(favicon.url),\n        },\n      ],\n    };\n  },\n};\n</script>\n"
  },
  {
    "path": "starter/pages/categories/_slug.vue",
    "content": "<template>\n  <div>\n    <client-only>\n      <div class=\"uk-section\">\n        <div class=\"uk-container uk-container-large\">\n          <h1>{{ category.name }}</h1>\n          <Articles :articles=\"articles || []\" />\n        </div>\n      </div>\n    </client-only>\n  </div>\n</template>\n\n<script>\nimport Articles from \"../../components/Articles\";\nimport { getMetaTags } from \"../../utils/seo\";\nimport { getStrapiMedia } from \"../../utils/medias\";\n\nexport default {\n  components: {\n    Articles,\n  },\n  async asyncData({ $strapi, params }) {\n    const matchingCategories = await $strapi.find(\"categories\", {\n      slug: params.slug,\n    });\n    return {\n      category: matchingCategories[0],\n      articles: await $strapi.find(\"articles\", {\n        \"category.name\": params.slug,\n      }),\n      global: await $strapi.find(\"global\"),\n    };\n  },\n  head() {\n    const { defaultSeo, favicon, siteName } = this.global;\n\n    // Merge default and article-specific SEO data\n    const fullSeo = {\n      ...defaultSeo,\n      metaTitle: `${this.category.name} articles`,\n      metaDescription: `All articles about ${this.category.name}`,\n    };\n\n    return {\n      title: fullSeo.metaTitle,\n      titleTemplate: `%s | ${siteName}`,\n      meta: getMetaTags(fullSeo),\n      link: [\n        {\n          rel: \"favicon\",\n          href: getStrapiMedia(favicon.url),\n        },\n      ],\n    };\n  },\n};\n</script>\n"
  },
  {
    "path": "starter/pages/index.vue",
    "content": "<template>\n  <div>\n    <div class=\"uk-section\">\n      <div class=\"uk-container uk-container-large\">\n        <h1>{{ homepage.hero.title }}</h1>\n        <Articles :articles=\"articles\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport Articles from \"../components/Articles\";\nimport { getMetaTags } from \"../utils/seo\";\nimport { getStrapiMedia } from \"../utils/medias\";\n\nexport default {\n  components: {\n    Articles,\n  },\n  async asyncData({ $strapi }) {\n    return {\n      articles: await $strapi.find(\"articles\"),\n      homepage: await $strapi.find(\"homepage\"),\n      global: await $strapi.find(\"global\"),\n    };\n  },\n  head() {\n    const { seo } = this.homepage;\n    const { defaultSeo, favicon, siteName } = this.global;\n\n    // Merge default and article-specific SEO data\n    const fullSeo = {\n      ...defaultSeo,\n      ...seo,\n    };\n\n    return {\n      titleTemplate: `%s | ${siteName}`,\n      title: fullSeo.metaTitle,\n      meta: getMetaTags(fullSeo),\n      link: [\n        {\n          rel: \"favicon\",\n          href: getStrapiMedia(favicon.url),\n        },\n      ],\n    };\n  },\n};\n</script>\n"
  },
  {
    "path": "starter/plugins/README.md",
    "content": "# PLUGINS\n\n**This directory is not required, you can delete it if you don't want to use it.**\n\nThis directory contains Javascript plugins that you want to run before mounting the root Vue.js application.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/plugins).\n"
  },
  {
    "path": "starter/plugins/uikit.js",
    "content": "import Vue from \"vue\";\n\nimport UIkit from \"uikit/dist/js/uikit-core\";\nimport Icons from \"uikit/dist/js/uikit-icons\";\n\nUIkit.use(Icons);\nUIkit.container = \"#__nuxt\";\n\nVue.prototype.$uikit = UIkit;\n"
  },
  {
    "path": "starter/static/README.md",
    "content": "# STATIC\n\n**This directory is not required, you can delete it if you don't want to use it.**\n\nThis directory contains your static files.\nEach file inside this directory is mapped to `/`.\nThus you'd want to delete this README.md before deploying to production.\n\nExample: `/static/robots.txt` is mapped as `/robots.txt`.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static).\n"
  },
  {
    "path": "starter/store/README.md",
    "content": "# STORE\n\n**This directory is not required, you can delete it if you don't want to use it.**\n\nThis directory contains your Vuex Store files.\nVuex Store option is implemented in the Nuxt.js framework.\n\nCreating a file in this directory automatically activates the option in the framework.\n\nMore information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store).\n"
  },
  {
    "path": "starter/utils/medias.js",
    "content": "export function getStrapiMedia(url) {\n  // Check if URL is a local path\n  if (url.startsWith(\"/\")) {\n    // Prepend Strapi address\n    return `${process.env.strapiBaseUri}${url}`;\n  }\n  // Otherwise return full URL\n  return url;\n}\n"
  },
  {
    "path": "starter/utils/seo.js",
    "content": "import { getStrapiMedia } from \"./medias\";\n\nexport function getMetaTags(seo) {\n  const tags = [];\n\n  if (seo.metaTitle) {\n    tags.push(\n      {\n        property: \"og:title\",\n        content: seo.metaTitle,\n      },\n      {\n        name: \"twitter:title\",\n        content: seo.metaTitle,\n      }\n    );\n  }\n  if (seo.metaDescription) {\n    tags.push(\n      {\n        name: \"description\",\n        content: seo.metaDescription,\n      },\n      {\n        property: \"og:description\",\n        content: seo.metaDescription,\n      },\n      {\n        name: \"twitter:description\",\n        content: seo.metaDescription,\n      }\n    );\n  }\n  if (seo.shareImage) {\n    const imageUrl = getStrapiMedia(seo.shareImage.url);\n    tags.push(\n      {\n        name: \"image\",\n        content: imageUrl,\n      },\n      {\n        property: \"og:image\",\n        content: imageUrl,\n      },\n      {\n        name: \"twitter:image\",\n        content: imageUrl,\n      }\n    );\n  }\n  if (seo.article) {\n    tags.push({\n      property: \"og:type\",\n      content: \"article\",\n    });\n  }\n  tags.push({ name: \"twitter:card\", content: \"summary_large_image\" });\n\n  return tags;\n}\n"
  },
  {
    "path": "starter.json",
    "content": "{\n  \"template\": \"https://github.com/strapi/strapi-template-blog\"\n}\n"
  }
]