{"id":28488,"date":"2022-05-05T08:40:13","date_gmt":"2022-05-05T15:40:13","guid":{"rendered":"http:\/\/create-a-restaurant-qr-code-menu-in-next.js."},"modified":"2023-04-20T12:59:00","modified_gmt":"2023-04-20T19:59:00","slug":"create-a-restaurant-qr-code-menu-in-next-js","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/","title":{"rendered":"Create a Restaurant QR Code Menu in Next.js"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>QR Codes (Quick Response code) gained popularity due to their quick readability and larger storage capacity compared to traditional UPC (Universal Product Code) barcodes. For almost 30 years, QR codes have been utilized in commerce, technology, and industrial sectors.<\/p>\n<p>A QR code is a barcode that stores information as a series of pixels in a square-shaped grid and can be scanned by a digital device. QR codes are widely used to track information about products in a supply chain, and they are utilized frequently in marketing and advertising efforts.<\/p>\n<p>This article briefly discusses the application of QR code technology in building a restaurant QR code menu.<\/p>\n<h3>Codesandbox and Github<\/h3>\n<p>The completed project is on <a href=\"https:\/\/codesandbox.io\/s\/modest-northcutt-4069ql\">CodeSandbox<\/a>. Fork it to get started quickly.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" 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\">Codesandbox<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"modest-northcutt-4069ql\"<\/span> <span class=\"hljs-attr\">title<\/span>=<span class=\"hljs-string\">\"Create a restaurant QR code menu in Next.js\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><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 source code is on <a href=\"https:\/\/github.com\/ugwutotheeshoes\/next-qrcode\">Github<\/a>.<\/p>\n<h3>Prerequisite<\/h3>\n<p>Adequate knowledge of JavaScript and React.js is required for this article. The knowledge of Next.js is preferred but not required.<\/p>\n<h3>Getting Started with Next.js<\/h3>\n<p><a href=\"https:\/\/nextjs.org\/\">Next.js<\/a> is a React-based framework with functionalities like pre-rendering, automatic code-splitting for faster page loads, and API routes to build API endpoints with serverless functions for back-end features.<\/p>\n<p>Created by <a href=\"https:\/\/vercel.com\/\">Vercel<\/a>, Next.js is open source and based on <a href=\"https:\/\/nodejs.org\/\">Node.js<\/a> and <a href=\"https:\/\/babeljs.io\/\">Babel<\/a>\u2014 and also integrates with React to create single-page apps.<\/p>\n<h3>Project setup and installation<\/h3>\n<p>To create a new project, run the following command in our terminal:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">    npx create-next-app <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">project-name<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><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>Next, navigate into the project directory and install the <code>qrcode.react<\/code> package with the command below:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\">    cd <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">project-name<\/span>&gt;<\/span> &amp;&amp; npm install qrcode.react\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><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>Running <code>npm run dev<\/code> will start the development server by default at <code>http:\/\/localhost:3000<\/code> in our browser.<\/p>\n<h3>What is qrcode.react?<\/h3>\n<p><a href=\"https:\/\/www.npmjs.com\/package\/qrcode.react\/v\/3.0.1\"><code>qrcode.react<\/code><\/a> is a flexible, high-performance component for displaying typical 1D and 2D QR codes in React applications. It is practical and does not require the usage of typefaces. The generated QR codes are suited for printing and on-screen scanning.<\/p>\n<p><code>qrcode.react<\/code> is fully customizable, as it provides options to customize its color, height, width, and more. It can display different QR code forms such as **SVGs **and <strong>canvas<\/strong>. It uses a set of default option values to display a QR code.<\/p>\n<h3>Building the QR code component<\/h3>\n<p>With the project fully set up and configured, we can start building the QR code menu.<\/p>\n<p>Import the QR code component from <code>qrcode.react<\/code> to create a QR code from the input value.\nThen, add the following code.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">    <span class=\"hljs-comment\">\/\/ .\/pages\/index.js<\/span>\n    \n    <span class=\"hljs-keyword\">import<\/span> React, { useState, useRef } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">\"react\"<\/span>;\n    <span class=\"hljs-keyword\">import<\/span> { QRCodeSVG } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">\"qrcode.react\"<\/span>;\n    <span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Home<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\n      <span class=\"hljs-keyword\">const<\/span> qrcodeRef = useRef(<span class=\"hljs-literal\">null<\/span>);\n      <span class=\"hljs-keyword\">const<\/span> &#91;qrcode, setQrcode] = useState(<span class=\"hljs-string\">\"\"<\/span>);\n      <span class=\"hljs-keyword\">const<\/span> handleChange = <span class=\"hljs-function\">(<span class=\"hljs-params\">event<\/span>) =&gt;<\/span> {\n        setQrcode(event.target.value ? event.target.value : <span class=\"hljs-string\">\"\"<\/span>);\n      };\n      <span class=\"hljs-keyword\">return<\/span> (\n        <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"App\"<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span> <span class=\"hljs-attr\">className<\/span>=<span class=\"hljs-string\">\"title\"<\/span>&gt;<\/span>Restaurant qr code Menu<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n          <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"text\"<\/span> <span class=\"hljs-attr\">placeholder<\/span>=<span class=\"hljs-string\">\"type here\"<\/span> <span class=\"hljs-attr\">onChange<\/span>=<span class=\"hljs-string\">{handleChange}<\/span> \/&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/span>\n      );\n    }\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><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 block above does the following:<\/p>\n<ul>\n<li>Creates an input element and a state variable called <code>qrcode<\/code> in <code>.\/pages\/index.js<\/code>.<\/li>\n<li>The input accepts the restaurant\u2019s URL, which will be transformed into a QR code and stored in the <code>qrcode<\/code> state variable.<\/li>\n<li>The input will also trigger an event to update the <code>qrcode<\/code> value as the input value changes.<\/li>\n<\/ul>\n<p>Next, we\u2019ll add the QR code component, which utilizes some options to display the QR code. The QR code component allows inline <code>style<\/code> or custom <code>className<\/code> to customize the rendering.<\/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\">QRCodeSVG<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">{qrcode}<\/span> <span class=\"hljs-attr\">size<\/span>=<span class=\"hljs-string\">\"250\"<\/span> <span class=\"hljs-attr\">fgColor<\/span>=<span class=\"hljs-string\">\"#000\"<\/span> <span class=\"hljs-attr\">ref<\/span>=<span class=\"hljs-string\">{qrcodeRef}<\/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 options in the code snippet above do the following:<\/p>\n<ul>\n<li>\n<code>value<\/code> &#8211; This holds the input value converted to a QR code.<\/li>\n<li>\n<code>size<\/code> &#8211; Sets the default value of the QR code\u2019s width and height to 250px.<\/li>\n<li>\n<code>fgColor<\/code> &#8211; The foreground color of the QR code.<\/li>\n<li>\n<code>ref<\/code> &#8211; To access the <code>QRCodeSVG<\/code> element after being mounted to the DOM.<\/li>\n<\/ul>\n<p>The QR code menu should look like this in our browser:<\/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_sanity\/6213c02c5e790729acbaa4eaa4b4c84bb3d85846-1366x663.png\" alt=\"image\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1366\" height=\"663\"\/><\/p>\n<h3>Testing the QR code menu<\/h3>\n<p>We\u2019ll transform a random restaurant\u2019s URL into a QR code to ensure the QR code menu is fully functional.<\/p>\n<p>To do this, scan the QR code with the help of any QR code scanner application on our computer system or phone. The QR code scanner will show the same URL like the one in the QR code menu above to show the application is fully functional.<\/p>\n<h3>Conclusion<\/h3>\n<p>This article discussed how to transform URLs into QR codes  and, more importantly, integrate QR codes into web applications.<\/p>\n<h3>Resources<\/h3>\n<ul>\n<li>\n<a href=\"https:\/\/github.com\/zpao\/qrcode.react\"><code>qrcode.react<\/code> Documentation<\/a>\n<\/li>\n<li>\n<a href=\"https:\/\/www.npmjs.com\/package\/qrcode.react\/v\/3.0.1\"><code>qrcode.react<\/code> package<\/a>\n<\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":28489,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134,370,212,246,371],"class_list":["post-28488","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post","tag-image","tag-next-js","tag-react","tag-under-review"],"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>Create a Restaurant QR Code Menu in Next.js<\/title>\n<meta name=\"description\" content=\"A web application for transforming restaurant URLs into QR codes.\" \/>\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\/create-a-restaurant-qr-code-menu-in-next-js\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create a Restaurant QR Code Menu in Next.js\" \/>\n<meta property=\"og:description\" content=\"A web application for transforming restaurant URLs into QR codes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-05T15:40:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-20T19:59:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb-jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"4402\" \/>\n\t<meta property=\"og:image:height\" content=\"2935\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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\/create-a-restaurant-qr-code-menu-in-next-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Create a Restaurant QR Code Menu in Next.js\",\"datePublished\":\"2022-05-05T15:40:13+00:00\",\"dateModified\":\"2023-04-20T19:59:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA\",\"keywords\":[\"Guest Post\",\"Image\",\"Next.js\",\"React\",\"Under Review\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2022\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/\",\"url\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/\",\"name\":\"Create a Restaurant QR Code Menu in Next.js\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA\",\"datePublished\":\"2022-05-05T15:40:13+00:00\",\"dateModified\":\"2023-04-20T19:59:00+00:00\",\"description\":\"A web application for transforming restaurant URLs into QR codes.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA\",\"width\":4402,\"height\":2935},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a Restaurant QR Code Menu in Next.js\"}]},{\"@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":"Create a Restaurant QR Code Menu in Next.js","description":"A web application for transforming restaurant URLs into QR codes.","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\/create-a-restaurant-qr-code-menu-in-next-js\/","og_locale":"en_US","og_type":"article","og_title":"Create a Restaurant QR Code Menu in Next.js","og_description":"A web application for transforming restaurant URLs into QR codes.","og_url":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/","og_site_name":"Cloudinary Blog","article_published_time":"2022-05-05T15:40:13+00:00","article_modified_time":"2023-04-20T19:59:00+00:00","og_image":[{"width":4402,"height":2935,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb-jpg?_i=AA","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/"},"author":{"name":"","@id":""},"headline":"Create a Restaurant QR Code Menu in Next.js","datePublished":"2022-05-05T15:40:13+00:00","dateModified":"2023-04-20T19:59:00+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/"},"wordCount":9,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA","keywords":["Guest Post","Image","Next.js","React","Under Review"],"inLanguage":"en-US","copyrightYear":"2022","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/","url":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/","name":"Create a Restaurant QR Code Menu in Next.js","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA","datePublished":"2022-05-05T15:40:13+00:00","dateModified":"2023-04-20T19:59:00+00:00","description":"A web application for transforming restaurant URLs into QR codes.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA","width":4402,"height":2935},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/create-a-restaurant-qr-code-menu-in-next-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create a Restaurant QR Code Menu in Next.js"}]},{"@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\/v1681928530\/Web_Assets\/blog\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb\/ca4e885e4ea882b22cf711874a60adb616899258-4402x2935-1_2848935dcb.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28488","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=28488"}],"version-history":[{"count":1,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28488\/revisions"}],"predecessor-version":[{"id":28588,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/28488\/revisions\/28588"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/28489"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=28488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=28488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=28488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}