{"id":124190,"date":"2025-03-04T11:48:43","date_gmt":"2025-03-04T11:48:43","guid":{"rendered":"\/tutorials\/?p=124190"},"modified":"2026-03-09T19:16:47","modified_gmt":"2026-03-09T19:16:47","slug":"create-recipe-web-app","status":"publish","type":"post","link":"\/ng\/tutorials\/create-recipe-web-app","title":{"rendered":"How to create a recipe web app"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>A recipe web app is a great way to organize and access all your favorite dishes in one place. Whether you&rsquo;re a home cook experimenting in the kitchen or a parent who wants to streamline meal planning, a well-designed recipe app can make cooking easier and more enjoyable.<\/p><p>Instead of paying for third-party apps with features I didn&rsquo;t need, I decided to build my own custom recipe web app. Normally, this would require coding, UI design, and database setup &ndash; but with Hostinger Horizons, I created a fully functional app without writing a single line of code.<\/p><p>In this guide, I&rsquo;ll walk you through how I built my recipe web app, from planning and design to publishing and testing. After reading these steps, you&rsquo;ll know how to create your own.<\/p><p>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-recipe-web-app-p-lanning-and-design\"><strong>Recipe web app p<\/strong><strong>lanning and design<\/strong><\/h2><p>Cooking is one of my favorite hobbies, but keeping track of recipes was always a mess. I&rsquo;d save them in different places &ndash; notes apps, bookmarked websites, you name it &ndash; and would struggle to find specific recipes when I needed them.<\/p><p>I wanted a simple way to organize my favorite recipes and generate a shopping list based on what I was going to be cooking.<\/p><p>Before jumping into the build, I defined what my app needed:<\/p><p>&#9989; A <strong>recipe library<\/strong> where users can save and categorize their favorite recipes.<br>&#9989; An <strong>ingredient tracker<\/strong> to keep a list of items needed for each recipe.<br>&#9989; A <strong>shopping list generator<\/strong> to quickly create lists based on selected recipes.<br>&#9989; A <strong>clean, intuitive interface<\/strong> for easy navigation and quick access to saved recipes.<\/p><p>I didn&rsquo;t want to spend weeks coding or worrying about setting up a server, so I used <a href=\"\/ng\/horizons\">Hostinger Horizons<\/a>. Here&rsquo;s why:<\/p><ul class=\"wp-block-list\">\n<li><strong>No coding required.<\/strong> Just describe the app you want, and AI will generate it.<\/li>\n\n\n\n<li><strong>Instant updates.<\/strong> Easily refine features, improve UI, and fix bugs in real time.<\/li>\n\n\n\n<li><strong>One-click publishing.<\/strong> Once the app is ready, it can go live immediately.<\/li>\n<\/ul><p>Getting started is simple, too: <strong>Hostinger Horizons includes a free plan<\/strong> (5 messages\/day) for existing Hostinger web hosting customers.<\/p><p>To unlock more message credits, you can purchase a plan starting at <strong>\u20a630900.00\/month<\/strong>.<\/p><p>Check out our full guide on <a href=\"\/ng\/tutorials\/hostinger-horizons-getting-started\">getting started with Hostinger Horizons<\/a> to explore all setup options.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a class=\"hgr-tutorials-cta hgr-tutorials-cta-horizons\" href=\"\/ng\/horizons\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"600\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/public\" alt=\"\" class=\"wp-image-129223\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=2048,fit=scale-down 2048w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-how-i-created-a-recipe-web-app-with-hostinger-horizons\"><strong>How I created a recipe web app with Hostinger Horizons<\/strong><\/h2><p>With my plan purchased, I was ready to bring my recipe web app to life.<\/p><h3 class=\"wp-block-heading\" id=\"h-step-1-setting-up-the-project\"><strong>Step 1: Setting up the project<\/strong><\/h3><p>To start, I went to <strong>hPanel &rarr; Websites &rarr; Websites List &rarr; Add Website &rarr; Hostinger Horizons<\/strong>. This opened the project&rsquo;s start screen, where I described my app idea:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57a4664\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"1074\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-start-screen-1.png\/public\" alt=\"Hostinger Horizons start screen\" class=\"wp-image-124193\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-start-screen-1.png\/w=1999,fit=scale-down 1999w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-start-screen-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-start-screen-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-start-screen-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-start-screen-1.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-start-screen-1.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1999px) 100vw, 1999px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p><strong>Prompt example:<\/strong><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"atomic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Create a recipe web app where users can save and categorize recipes, track ingredients, and generate a shopping list. The app should have a clean and simple interface.<\/pre><p>The tool instantly generated a basic interface with a recipe manager and shopping list functionality:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57a5d31\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"1055\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Basic-recipe-manager-app.png\/public\" alt=\"Basic recipe manager app\" class=\"wp-image-124194\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Basic-recipe-manager-app.png\/w=1999,fit=scale-down 1999w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Basic-recipe-manager-app.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Basic-recipe-manager-app.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Basic-recipe-manager-app.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Basic-recipe-manager-app.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Basic-recipe-manager-app.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1999px) 100vw, 1999px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Since a lot of my recipes are saved as bookmarks across various sites, I wanted to add a URL import so that I could collect all my favorites in one place.<\/p><p>I simply told the AI what I wanted to do, and it talked me through an API setup, something I had never done before:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57a7257\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1050\" height=\"1090\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-explaining-how-to-add-an-API-so-I-could-import-recipes-from-URLs-to-my-tracker.png\/public\" alt=\"Hostinger Horizons explaining how to add an API so I could import recipes from URLs to my tracker\" class=\"wp-image-124195\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-explaining-how-to-add-an-API-so-I-could-import-recipes-from-URLs-to-my-tracker.png\/w=1050,fit=scale-down 1050w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-explaining-how-to-add-an-API-so-I-could-import-recipes-from-URLs-to-my-tracker.png\/w=289,fit=scale-down 289w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-explaining-how-to-add-an-API-so-I-could-import-recipes-from-URLs-to-my-tracker.png\/w=986,fit=scale-down 986w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-explaining-how-to-add-an-API-so-I-could-import-recipes-from-URLs-to-my-tracker.png\/w=144,fit=scale-down 144w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Hostinger-Horizons-explaining-how-to-add-an-API-so-I-could-import-recipes-from-URLs-to-my-tracker.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1050px) 100vw, 1050px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-step-2-refining-the-app-logic\"><strong>Step 2: Refining the app logic<\/strong><\/h3><p>The first version worked, but I wanted to make sure I avoided the <a href=\"\/ng\/tutorials\/avoid-common-mistakes-with-hostinger-horizons\">common mistakes first-time web app builders make<\/a>.<\/p><p>Luckily, refining the app logic was easy in Hostinger Horizons. It&rsquo;s like having a conversation with a web developer since all you need to do is describe the changes you need, and the tool does all the heavy lifting for you.<\/p><p>Key improvements I made included:<\/p><p>&#9989; <strong>Added recipe categories.<\/strong> Users could now group recipes by meal type (for example, main dishes, salads, desserts).<br>&#9989; <strong>Improved UI layout.<\/strong> Adjusted button placements, animations, and colors for a cleaner experience.<br>&#9989; <strong>Ingredient tracker.<\/strong> Allowed users to store ingredient lists with each recipe.<br>&#9989; <strong>Shopping list generator.<\/strong> Users could now select multiple recipes and automatically generate a shopping list.<\/p><p><strong>Prompt example:<\/strong><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"atomic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Can you add an uploading animation to the URL import button so it's clearer when the app is working on importing content?<\/pre><p>The AI quickly made adjustments, adding a loading wheel animation to the recipe import button. This made it easier to see when the app was working on importing a recipe from an external URL.<\/p><p>I also experimented with different navigation styles, testing a tab-based system:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57a8adc\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"1070\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Recipe-manager-app-with-tab-based-menu-system.png\/public\" alt=\"Recipe manager app with tab based menu system\" class=\"wp-image-124196\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Recipe-manager-app-with-tab-based-menu-system.png\/w=1999,fit=scale-down 1999w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Recipe-manager-app-with-tab-based-menu-system.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Recipe-manager-app-with-tab-based-menu-system.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Recipe-manager-app-with-tab-based-menu-system.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Recipe-manager-app-with-tab-based-menu-system.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Recipe-manager-app-with-tab-based-menu-system.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1999px) 100vw, 1999px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-step-3-testing-and-debugging\"><strong>Step 3: Testing and debugging<\/strong><\/h3><p>Once my app was functional, I tested how it worked in a few different scenarios:<\/p><ul class=\"wp-block-list\">\n<li><strong>Adding and deleting recipes<\/strong> to make sure all entries updated correctly.<\/li>\n\n\n\n<li><strong>Generating a shopping list<\/strong> based on multiple selected recipes.<\/li>\n\n\n\n<li><strong>Checking for UI bugs<\/strong> and ensuring smooth navigation.<\/li>\n<\/ul><p>When I noticed that the shopping list wasn&rsquo;t formatted correctly, I asked Horizons to fix it.<\/p><p><strong>Troubleshooting prompt example:<\/strong><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"atomic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">The shopping list formatting is incorrect &ndash; all the items are written in lower case. I would like it to be in sentence case. Can you fix it?<\/pre><p>The AI analyzed the issue and provided a quick fix:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57aa5d5\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1658\" height=\"1156\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Shopping-list-with-items-written-in-sentence-case.png\/public\" alt=\"Shopping list with items written in sentence case\" class=\"wp-image-124197\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Shopping-list-with-items-written-in-sentence-case.png\/w=1658,fit=scale-down 1658w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Shopping-list-with-items-written-in-sentence-case.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Shopping-list-with-items-written-in-sentence-case.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Shopping-list-with-items-written-in-sentence-case.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Shopping-list-with-items-written-in-sentence-case.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Shopping-list-with-items-written-in-sentence-case.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1658px) 100vw, 1658px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Once, I also ran into a runtime error:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57abe04\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1078\" height=\"1338\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Runtime-error-in-Hostinger-Horizons.png\/public\" alt=\"Runtime error in Hostinger Horizons\" class=\"wp-image-124198\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Runtime-error-in-Hostinger-Horizons.png\/w=1078,fit=scale-down 1078w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Runtime-error-in-Hostinger-Horizons.png\/w=242,fit=scale-down 242w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Runtime-error-in-Hostinger-Horizons.png\/w=825,fit=scale-down 825w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Runtime-error-in-Hostinger-Horizons.png\/w=121,fit=scale-down 121w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Runtime-error-in-Hostinger-Horizons.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1078px) 100vw, 1078px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Luckily, it&rsquo;s easy to ask Hostinger Horizons to troubleshoot itself &ndash; I just clicked the <strong>Ask to fix<\/strong> button, and the tool restarted the task. For more troubleshooting tips, check out our guide on the <a href=\"\/ng\/tutorials\/avoid-common-mistakes-with-hostinger-horizons\">most common mistakes to avoid<\/a>. <\/p><h2 class=\"wp-block-heading\" id=\"h-recipe-web-app-deployment\"><strong>Recipe web app deployment<\/strong><\/h2><p>After refining my app, I published it with one click from the editor. It was then live and ready to use:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57ac6a3\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1392\" height=\"936\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-successful-deployment-cofirmation-message-publish.png\/public\" alt=\"Published successfully message in Hostinger Horizons\" class=\"wp-image-125193\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-successful-deployment-cofirmation-message-publish.png\/w=1392,fit=scale-down 1392w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-successful-deployment-cofirmation-message-publish.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-successful-deployment-cofirmation-message-publish.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-successful-deployment-cofirmation-message-publish.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-successful-deployment-cofirmation-message-publish.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1392px) 100vw, 1392px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>You can connect a <a href=\"\/ng\/tutorials\/what-is-a-domain-name\">custom domain<\/a> to your app by clicking on the <strong>Get domain<\/strong> button. You can also do this by going to <strong>hPanel &rarr; Websites List<\/strong> &ndash; just click on <strong>Change domain<\/strong> under the temporary domain you want to link a custom domain to.<\/p><p>Since Horizons allows me to edit my app even after deployment, I can tweak features anytime. For example, after a few days, I realized I wanted a meal-planning calendar. Instead of rebuilding my app, I simply asked:<\/p><p><strong>Prompt example:<\/strong><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"atomic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Add a calendar feature where users can plan meals for the week.<\/pre><p>Within seconds, Horizons updated my app with a fully functional meal planner based on the recipes in my app, with a day and a week view:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e1ab57addd0\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"1073\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Meal-planner-in-my-recipe-app.png\/public\" alt=\"Meal planner in my recipe app\" class=\"wp-image-124200\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Meal-planner-in-my-recipe-app.png\/w=1999,fit=scale-down 1999w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Meal-planner-in-my-recipe-app.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Meal-planner-in-my-recipe-app.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Meal-planner-in-my-recipe-app.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Meal-planner-in-my-recipe-app.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Meal-planner-in-my-recipe-app.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 1999px) 100vw, 1999px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-conclusion\"><strong>Conclusion<\/strong><\/h3><p>Building a recipe web app from scratch would normally take weeks of coding &ndash; but with Hostinger Horizons, I had a working version in minutes.<\/p><p>Now, I use this app daily to save new recipes, plan my grocery shopping, and decide what to cook well in advance.<\/p><p>Thinking of building your own recipe app? Try Hostinger Horizons risk-free with a 30-day money-back guarantee, and see if you can build one that&rsquo;s better than mine!<\/p><p>Join our <a href=\"https:\/\/discord.com\/invite\/8p8nBUHrZk\">Discord channel<\/a> for more tips and inspiration on making the most of Hostinger Horizons. Connect with the community, get expert advice, and stay updated on the latest features!<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a class=\"hgr-tutorials-cta hgr-tutorials-cta-horizons\" href=\"\/ng\/horizons\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"600\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/public\" alt=\"\" class=\"wp-image-129223\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=2048,fit=scale-down 2048w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/Horizons-in-text-banner-no-code-website-builder.png\/w=1536,fit=scale-down 1536w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>A recipe web app is a great way to organize and access all your favorite dishes in one place. Whether you&rsquo;re a home cook experimenting in the kitchen or a parent who wants to streamline meal planning, a well-designed recipe app can make cooking easier and more enjoyable. Instead of paying for third-party apps with [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/ng\/tutorials\/create-recipe-web-app\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":357,"featured_media":143426,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to create a recipe web app with Hostinger Horizons","rank_math_description":"Build a custom recipe web app in minutes with Hostinger Horizons. Organize recipes, track ingredients, and plan meals \u2013 no coding required.","rank_math_focus_keyword":"how to create a recipe web app","footnotes":""},"categories":[22652],"tags":[],"class_list":["post-124190","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-application-blueprints"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/create-recipe-web-app","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/create-recipe-web-app","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/create-recipe-web-app","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/create-recipe-web-app","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/create-recipe-web-app","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/create-recipe-web-app","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/create-recipe-web-app","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/create-recipe-web-app","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/124190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/users\/357"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/comments?post=124190"}],"version-history":[{"count":7,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/124190\/revisions"}],"predecessor-version":[{"id":143425,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/124190\/revisions\/143425"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/media\/143426"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/media?parent=124190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/categories?post=124190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/tags?post=124190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}