{"id":124662,"date":"2025-03-06T19:10:28","date_gmt":"2025-03-06T19:10:28","guid":{"rendered":"\/tutorials\/?p=124662"},"modified":"2025-08-26T08:55:33","modified_gmt":"2025-08-26T08:55:33","slug":"create-habit-tracking-web-app","status":"publish","type":"post","link":"\/tutorials\/create-habit-tracking-web-app","title":{"rendered":"How to create a daily habit-tracking web app"},"content":{"rendered":"<p>In our increasingly busy lives, building positive habits can be challenging without the right tools. A habit-tracking web app makes it easier to build better habits &ndash; whether it&rsquo;s drinking more water, meditating, or sticking to a workout routine. It helps you stay on track by logging progress, setting goals, and sending reminders.<\/p><p>While many of these web apps already exist, creating a custom solution provides a personalized experience that off-the-shelf options can&rsquo;t match.<\/p><p>Typically, building one from scratch would mean writing a bunch of code using React or Next.js for a sleek UI, Node.js for real-time updates, and PostgreSQL to store user habits. If this sounds like something that&rsquo;s way over your head, here&rsquo;s the cool part: <strong>you don&rsquo;t need to write code at all<\/strong>.<\/p><p>With AI tools like <strong>Hostinger Horizons<\/strong>, you describe what you want from a web app, and the tool handles all the heavy lifting.<\/p><p>In this article, I&rsquo;ll explain how I developed my own habit-tracking web app &ndash; from the first idea to getting it live. And don&rsquo;t worry, even if you&rsquo;ve never created an app before, you can follow along. The process is simple.<\/p><p>Let&rsquo;s jump right in!<\/p><p>\n\n\n\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-planning-my-habit-tracking-web-app\"><strong>Planning my habit-tracking web app<\/strong><\/h2><p>I decided to create my own habit-tracking web app because the ones I&rsquo;d tried before were either too complicated or packed with unnecessary features.<\/p><p>I just wanted something simple and effective that would allow me to:<\/p><ul class=\"wp-block-list\">\n<li>Choose from habit recommendations or create my own.<\/li>\n\n\n\n<li>Track progress daily, whether for single or multi-step habits.<\/li>\n\n\n\n<li>See everything in a calendar format to help remain consistent.<\/li>\n\n\n\n<li>Have the login and registration feature, so my friends can use it too.<\/li>\n<\/ul><p>Since I wanted to bring my idea to life quickly and easily, I went with<a href=\"\/horizons\"> Hostinger Horizons<\/a>. Here&rsquo;s why:<\/p><ul class=\"wp-block-list\">\n<li><strong>No coding required<\/strong>. Just describe what you want, and Hostinger Horizons generates it for you. No need to mess with frontend or backend logic.<\/li>\n\n\n\n<li><strong>Instant refinements<\/strong>. You can tweak features, adjust the design, and fix bugs by adding prompts. Plus, you can test everything in real-time with the live preview.<\/li>\n\n\n\n<li><strong>One-click deployment<\/strong>. When your web app is ready, just hit <strong>Publish<\/strong>. It goes live instantly on Hostinger&rsquo;s fast and reliable hosting, and you can even connect your app to a custom domain.<\/li>\n<\/ul><p>Hostinger Horizons has different plans, starting at <strong>$19.99\/month<\/strong>. All plans share the same features, with message limits of up to <strong>1,000 messages\/month<\/strong>.<\/p><p>If you already use Hostinger&rsquo;s web hosting service, you get <strong>5 free messages daily<\/strong> to try out the AI tool.<\/p><figure class=\"wp-block-image size-large\"><a class=\"hgr-tutorials-cta hgr-tutorials-cta-horizons\" href=\"\/horizons\" target=\"_blank\" rel=\"noreferrer noopener\"><img 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=\"(max-width: 2048px) 100vw, 2048px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-how-i-created-a-habit-tracking-web-app-with-hostinger-horizons\"><strong>How I created a habit-tracking web app with Hostinger Horizons<\/strong><\/h2><p>With my plan set out, it was time for the fun part: actually developing my habit-tracking web app. Here&rsquo;s how it went.<\/p><h3 class=\"wp-block-heading\" id=\"h-step-1-project-setup-and-the-first-prompt\"><strong>Step 1: Project setup and the first prompt<\/strong><\/h3><p>To get started, I opened <strong>hPanel<\/strong> with my Hostinger account and navigated to <strong>Websites &rarr; Websites list &rarr; Add website &rarr; Hostinger Horizons<\/strong>.<\/p><figure data-wp-context='{\"imageId\":\"69dfbcbe041d3\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2792\" height=\"894\" 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\/hpanel-websites-hostinger-horizons-highlighted.png\/public\" alt=\"The Hostinger Horizons menu in hPanel\n\" class=\"wp-image-124665\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hpanel-websites-hostinger-horizons-highlighted.png\/w=2792,fit=scale-down 2792w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hpanel-websites-hostinger-horizons-highlighted.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hpanel-websites-hostinger-horizons-highlighted.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hpanel-websites-hostinger-horizons-highlighted.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hpanel-websites-hostinger-horizons-highlighted.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hpanel-websites-hostinger-horizons-highlighted.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hpanel-websites-hostinger-horizons-highlighted.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2792px) 100vw, 2792px\" \/><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><p>This took me to the Hostinger Horizons start screen, where I typed in my first <a href=\"\/tutorials\/ai-prompt-engineering\">prompt<\/a> to set up the core functionality of my habit-tracking web app:<\/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 habit-tracking web app where users can add, edit, and delete daily habits. The app should allow users to mark habits as completed each day and display a progress summary. Keep the design minimal, using a combination of teal and lilac colors, with intuitive navigation.<\/pre><figure data-wp-context='{\"imageId\":\"69dfbcbe05646\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2880\" height=\"1552\" 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-2.png\/public\" alt=\"Hostinger Horizons' start screen with the first prompt\n\" class=\"wp-image-124666\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-start-screen-2.png\/w=2880,fit=scale-down 2880w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-start-screen-2.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-start-screen-2.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-start-screen-2.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-start-screen-2.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-start-screen-2.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-start-screen-2.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2880px) 100vw, 2880px\" \/><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><p>Within seconds, Hostinger Horizons generated a working version of my web app. The interface is split into two views:<\/p><ul class=\"wp-block-list\">\n<li><strong>Left pane<\/strong> &ndash; where I could refine my prompt and make changes.<\/li>\n\n\n\n<li><strong>Right pane<\/strong> &ndash; a live preview of my app in action.<\/li>\n<\/ul><p>Here&rsquo;s how my habit-tracking web app looked right after the first prompt:<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe06213\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"2880\" height=\"1542\" 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-project-dashboard-publish.png\/public\" alt=\"Hostinger Horizons' main project area with prompt window visible\" class=\"wp-image-125189\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-project-dashboard-publish.png\/w=2880,fit=scale-down 2880w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-project-dashboard-publish.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-project-dashboard-publish.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-project-dashboard-publish.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-project-dashboard-publish.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-project-dashboard-publish.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-project-dashboard-publish.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 2880px) 100vw, 2880px\" \/><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>I tested it by adding a new habit through the input field, and it worked just fine.<\/p><figure data-wp-context='{\"imageId\":\"69dfbcbe06bbd\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1686\" height=\"964\" 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-habit-tracking-first-look.png\/public\" alt=\"The habit-tracking web app's first look\n\" class=\"wp-image-124669\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-first-look.png\/w=1686,fit=scale-down 1686w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-first-look.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-first-look.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-first-look.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-first-look.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-first-look.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1686px) 100vw, 1686px\" \/><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><p>But I knew this was just the starting point &ndash; my web app still lacked some key features I wanted, like habit recommendations and a calendar view.<\/p><h3 class=\"wp-block-heading\" id=\"h-step-2-adding-habit-recommendations\"><strong>Step 2: Adding habit recommendations<\/strong><\/h3><p>Next, I wanted to add habit recommendations alongside the custom habit input. I often struggle to decide exactly what to track, so having predefined habit templates would make it easier to get started.<\/p><p>Here&rsquo;s the prompt I used:<\/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 habit recommendation system alongside the existing custom habit input. Users should be able to choose from predefined habit templates categorized into Health &amp; Fitness, Personal Growth, Productivity, Wellness, Social &amp; Relationships, and Mindfulness &amp; Mental Health, each containing relevant subcategories.<\/pre><p>Hostinger Horizons successfully generated the habit template system, so I tested it by adding a habit from the list. It worked &ndash; but there was one issue: <strong>no confirmation message<\/strong>. I had no idea if the action actually went through.<\/p><figure data-wp-context='{\"imageId\":\"69dfbcbe07521\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1706\" height=\"1222\" 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-habit-tracking-habit-templates.png\/public\" alt=\"The web app's habit template system with recommended habits\n\" class=\"wp-image-124670\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-habit-templates.png\/w=1706,fit=scale-down 1706w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-habit-templates.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-habit-templates.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-habit-templates.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-habit-templates.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-habit-templates.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1706px) 100vw, 1706px\" \/><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><p>Normally, after adding a habit, the web app should redirect users back to the dashboard and display a confirmation message so they know it worked. Here&rsquo;s the prompt I used to fix that:<\/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=\"\">After a user selects a habit from the template, redirect them to the dashboard. Display a confirmation message, such as 'Habit added successfully!' to confirm the action upon returning.<\/pre><p>This minor UX tweak made the habit recommendation system work exactly how I wanted.<\/p><figure data-wp-context='{\"imageId\":\"69dfbcbe07df0\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1694\" height=\"1150\" 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-habit-tracking-dashboard-template-system.png\/public\" alt=\"The web app's main dashboard after adding a habit template system\n\" class=\"wp-image-124672\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-template-system.png\/w=1694,fit=scale-down 1694w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-template-system.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-template-system.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-template-system.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-template-system.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-template-system.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1694px) 100vw, 1694px\" \/><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><h3 class=\"wp-block-heading\" id=\"h-step-3-tracking-incremental-progress\"><strong>Step 3: Tracking incremental progress<\/strong><\/h3><p>The next feature I tackled was progress tracking. A simple one-click completion works fine for habits that require just one action, such as taking daily vitamins or making the bed.<\/p><p>But what about habits with multiple steps, like drinking eight glasses of water or doing five sets of push-ups? It wouldn&rsquo;t make sense to mark them as &ldquo;complete&rdquo; after just one click. Instead, I needed a system that let me track each step until I finished the habit for the day.<\/p><p>Here&rsquo;s how I prompted Hostinger Horizons to handle it:<\/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=\"\">For habits that require multiple steps, implement a step-based tracking system instead of a single-click completion. Users should be able to track progress incrementally (e.g., mark each glass of water, push-up, or page read) until they complete the habit for the day.<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe08784\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1668\" height=\"1136\" 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-habit-tracking-dashboard-progress-tracking.png\/public\" alt=\"The web app's main dashboard after adding habit progress tracking\" class=\"wp-image-124673\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-tracking.png\/w=1668,fit=scale-down 1668w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-tracking.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-tracking.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-tracking.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-tracking.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-tracking.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1668px) 100vw, 1668px\" \/><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>It worked! But there was still room for improvement. The app could look better and feel more intuitive if step-based habits had a progress bar.<\/p><p>So, I added this prompt:<\/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=\"\">Ensure the dashboard clearly differentiates between single-action and multi-step habits by displaying progress bars for step-based habits.<\/pre><p>And just like that, my habit-tracking web app got a nice visual upgrade. Here&rsquo;s how it looked at this stage:<\/p><figure data-wp-context='{\"imageId\":\"69dfbcbe092af\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1404\" height=\"970\" 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-habit-tracking-dashboard-progress-bar.png\/public\" alt=\"The web app's main dashboard after adding a progress bar for multi-step habits\n\" class=\"wp-image-124674\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-bar.png\/w=1404,fit=scale-down 1404w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-bar.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-bar.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-bar.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-dashboard-progress-bar.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1404px) 100vw, 1404px\" \/><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><p>\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Suggested reading<\/h4>\n                    <p>Breaking down complex tasks &ndash; like when I first asked Hostinger Horizons to add multi-step tracking and then a progress bar in a separate prompt &ndash; is just one of the many ways to get better results. Discover more <a href=\"\/tutorials\/prompting-with-hostinger-horizons\">prompting tips and best practices with Hostinger Horizons<\/a> in my other article.<\/p>\n                <\/div>\n\n\n\n<\/p><h3 class=\"wp-block-heading\" id=\"h-step-4-implementing-the-calendar-view\"><strong>Step 4: Implementing the calendar view<\/strong><\/h3><p>Another feature I wanted in my web app was a calendar view &ndash; something that would let me look back at my progress over time instead of just focusing on daily habits.<\/p><p>To make that happen, I used this prompt:<\/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 view to track progress over time. The calendar should reflect real dates, months, and years. Place it in a separate tab to keep the main dashboard focused on daily habit tracking.<\/pre><p>But instead of generating the feature, Hostinger Horizons threw a runtime error:<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe0a4ac\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1094\" height=\"1256\" 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-runtime-error.png\/public\" alt=\"A runtime error in Hostinger Horizons\" class=\"wp-image-124675\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-runtime-error.png\/w=1094,fit=scale-down 1094w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-runtime-error.png\/w=261,fit=scale-down 261w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-runtime-error.png\/w=892,fit=scale-down 892w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-runtime-error.png\/w=131,fit=scale-down 131w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-runtime-error.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1094px) 100vw, 1094px\" \/><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>I know that Hostinger Horizons is still in <strong>early access<\/strong>, so I expected occasional hiccups. For the impatient ones, there&rsquo;s even a <strong>30-day money-back guarantee<\/strong>, so there&rsquo;s no real risk in experimenting with it.<\/p><p>If you ever run into an error like this, don&rsquo;t panic &ndash; just let the tool handle it. I clicked the <strong>Ask to fix<\/strong> button and let it do its thing.<\/p><p>The second time&rsquo;s the charm! My calendar view appeared and worked fine. By clicking on a specific date, I could see which habits I tracked that day and check my progress over time.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe0ada3\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1380\" height=\"1158\" 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-habit-tracking-calendar-view.png\/public\" alt=\"The web app's calendar view\" class=\"wp-image-124676\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-calendar-view.png\/w=1380,fit=scale-down 1380w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-calendar-view.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-calendar-view.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-calendar-view.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-habit-tracking-calendar-view.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1380px) 100vw, 1380px\" \/><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-5-improving-the-design\"><strong>Step 5: Improving the design<\/strong><\/h3><p>So far, my application only had the web design that I specified in the first prompt. As you can see in the previous sections, the default visual appearance was okay, but I wanted to improve it further.<\/p><p>Doing so not only makes your application look more appealing but also ensures its design adheres to the best practices for usability and accessibility.<\/p><p>\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Suggested reading<\/h4>\n                    <p>Read the <a href=\"\/tutorials\/web-app-design-tips-with-hostinger-horizons%20\">web application design tips with Hostinger Horizons<\/a> tutorial to learn more about the areas you should focus on when redesigning your web application and the best prompt to use. <\/p>\n                <\/div>\n\n\n\n<\/p><p>Depending on the initial result, you might need to adjust more visual aspects. In my case, I was quite happy with the design and just wanted some minor improvements.<\/p><p>When refining your web app, I recommend focusing on one design aspect at a time and then moving to another only when you are satisfied with the result.<\/p><p>I started by changing the font for better readability. Here&rsquo;s the prompt I used:<\/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=\"\">Apply Roboto for all the text. Use a medium weight for the body and bold for headings. Maintain a 16px body text size and 24px for headings.<\/pre><p>Next, I wanted to minimize the white space in my application because it made the design look very empty. This was the prompt that I found effective:<\/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=\"\">Minimize the whitespace in my web application to make it look less empty. However, maintain around 20px padding between sections and 10px for elements.&nbsp;<\/pre><p>Lastly, I wanted to add night mode that reverses my application&rsquo;s color palette when needed. Here&rsquo;s the prompt:<\/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 night mode for my application. Include a toggle to switch between the modes at the top right corner of the main dashboard.<\/pre><figure data-wp-context='{\"imageId\":\"69dfbcbe0b8fd\"}' data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1460\" height=\"976\" 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-create-a-dark-mode-for-the-app.png\/public\" alt=\"Hostinger Horizons creates a dark mode for the app\n\" class=\"wp-image-124678\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-create-a-dark-mode-for-the-app.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-create-a-dark-mode-for-the-app.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-create-a-dark-mode-for-the-app.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-create-a-dark-mode-for-the-app.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-create-a-dark-mode-for-the-app.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1460px) 100vw, 1460px\" \/><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><h3 class=\"wp-block-heading\" id=\"h-step-6-adding-a-login-and-registration-page\"><strong>Step 6: Adding a login and registration page<\/strong><\/h3><p>A login or registration page allows users to create an account to save their profiles, progress, goals, and preferences. It is important to give them a more personalized experience.<\/p><p>A login or sign-up page can take different shapes depending on the developer&rsquo;s needs, and I wanted mine to have the following elements:<\/p><ul class=\"wp-block-list\">\n<li><strong>Credentials fields <\/strong>&ndash; fields where users enter their username, email address, and username to access or create an account.&nbsp;<\/li>\n\n\n\n<li><strong>Login or sign-up option <\/strong>&ndash; a button that switches the user to the account login or creation page.&nbsp;<\/li>\n\n\n\n<li><strong>Error message <\/strong>&ndash; an error pop-up that appears when the inputted data is invalid.&nbsp;<\/li>\n\n\n\n<li><strong>Forgot password link <\/strong>&ndash; a feature that lets users reset their forgotten account password.<\/li>\n<\/ul><p>Based on these requirements, I created my login\/sign-up page using the following prompt:<\/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 page in my web application where users can make a new account or log in to an existing one. Here&rsquo;s what you should add:\n\n- Fields for entering their email address, username, and password. For the login page, omit the email address form.\n\n- A button for logging in or signing up.\n\n- A link that redirects users from the login page to the sign-up page and vice versa.\n\n- A link that prompts the password reset menu. Make the function for this as well.&nbsp;\n\n- An error message that pops up in the middle when the entered data is invalid or doesn&rsquo;t match the database records.<\/pre><p>At this point, I had a login\/sign-up page that looked like this:<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe0c300\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1460\" height=\"720\" 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-creates-a-login-and-registration-page-publish.png\/public\" alt=\"Hostinger Horizons creates a login and registration page\" class=\"wp-image-125191\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-creates-a-login-and-registration-page-publish.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-creates-a-login-and-registration-page-publish.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-creates-a-login-and-registration-page-publish.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-creates-a-login-and-registration-page-publish.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/hostinger-horizons-creates-a-login-and-registration-page-publish.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1460px) 100vw, 1460px\" \/><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>While this registration or login page looked fine, it was not yet functional because I hadn&rsquo;t connected a database to store the entered data.<\/p><h3 class=\"wp-block-heading\" id=\"h-step-7-connecting-a-database\"><strong>Step 7: Connecting a database<\/strong><\/h3><p>Now that my application already had all the features and the design, I moved on to the back end to enable data storage and processing.<\/p><p>To configure my application&rsquo;s back-end, I used a database service from <a href=\"https:\/\/supabase.com\/\" target=\"_blank\" rel=\"noopener\">Supabase<\/a>. You, of course, can use any other platform you want.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe0cbd0\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1460\" height=\"517\" 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\/supabase-database-credentials.png\/public\" alt=\"The database credentials in Supabase project dashboard\" class=\"wp-image-124680\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/supabase-database-credentials.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/supabase-database-credentials.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/supabase-database-credentials.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/supabase-database-credentials.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/supabase-database-credentials.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1460px) 100vw, 1460px\" \/><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>I started by registering for a Supabase account using my email address. Then, I created a new organization and selected the free plan. In my experience, this plan was sufficient for testing and personal use.<\/p><p>Next, I set up a new project by entering its name, database password, and region. Once finished, I was redirected to the Supabase project page.<\/p><p>From the Project API section, I copied the Project URL and API Key. I used these credentials to connect the database to my application.<\/p><p>Next, I headed back to the Hostinger Horizons dashboard and connected the database with this prompt:<\/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=\"\">Connect my Supabase database with my application using the following credentials:\n\n- Project URL: your-project-url\n\n- API Key: your-api-key\n\nThis database will store the user credentials and data, including their progress, preferences, and habits.&nbsp;\n\nMake the necessary database tables and connect them with the corresponding fields in my application.\n\nMake sure each field only accepts valid data. For example, the email form should only receive an email address.<\/pre><p>In my case, Hostinger Horizons outputted an SQL command to create the necessary tables. I returned to the Supabase dashboard and selected SQL Editor from the sidebar.<\/p><p>Next, I pasted the SQL command into the designated field and hit Run to execute it. I headed back to Hostinger Horizons and told the AI that I had run the command using this prompt:<\/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=\"\">I ran the SQL command you provided. Validate all the tables and forms to make sure my database works properly.<\/pre><h2 class=\"wp-block-heading\" id=\"h-deploying-and-testing-my-habit-tracking-web-app\"><strong>Deploying and testing my habit-tracking<\/strong><strong> web app<\/strong><\/h2><p>Now that my application was finished, the last step was to publish it online. Before doing so, however, I wanted to <a href=\"\/tutorials\/web-app-testing\">test my web app<\/a> it to ensure that all functions worked as expected.<\/p><p>I simply interacted with my application from Hostinger Horizon&rsquo;s preview menu on the right pane. When covering these steps, I recommend you create a checklist to keep track of what functions you have tested.<\/p><p>If you encounter any error or issue, simply ask Hostinger Horizons to fix it for you. For example, I noticed that the <strong>Log out <\/strong>button was missing during testing, so I entered the following prompt:<\/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 logout button on the top right of the main dashboard next to the dark mode toggle. Make it so when a user clicks it, they will get redirected to the login page.<\/pre><p>During my testing, I also checked how my application looked and functioned on a mobile phone by toggling the viewport on Hostinger Horizon&rsquo;s preview menu.<\/p><p>After ensuring my application worked and looked as expected, I clicked the <strong>Publish <\/strong>button to publish my project. Since <strong>Hostinger Horizons includes a Business web hosting plan<\/strong>, I didn&rsquo;t need to set one up manually.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe0f0c2\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1460\" height=\"1254\" 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\/the-publish-button-on-hostinger-horizons-1.png\/public\" alt=\"The Deploy button on Hostinger Horizons\" class=\"wp-image-125192\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/the-publish-button-on-hostinger-horizons-1.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/the-publish-button-on-hostinger-horizons-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/the-publish-button-on-hostinger-horizons-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/the-publish-button-on-hostinger-horizons-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/03\/the-publish-button-on-hostinger-horizons-1.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1460px) 100vw, 1460px\" \/><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>By default, Hostinger Horizons attaches a temporary domain name to the application for testing purposes. I wanted to replace it with my own domain name.<\/p><p>I clicked the <strong>Get Domain <\/strong>button on the publishing confirmation window, entered my desired domain name, and hit <strong>Next<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69dfbcbe125cf\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img 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=\"Hostinger Horizons successful deployment confirmation message\" 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=\"(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>After finishing the registration and payment process, my domain name was already connected to Hostinger Horizons. And that was it! My application was now online.<\/p><h2 class=\"wp-block-heading\" id=\"h-what-s-next\"><strong>What&rsquo;s next?<\/strong><\/h2><p>Now that I have shown you how I created my habit tracking app, it&rsquo;s your turn to develop your own using <strong>Hostinger Horizons<\/strong>!<\/p><p>You can always experiment with the prompts and add your own twist to the application. You can use a different design, add extra functionalities and do things completely differently. For example, you can add reminders, rewards, milestones, and social-sharing features to encourage people to use your application more often. Sky is the limit when it comes to what you can do with this tool.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our increasingly busy lives, building positive habits can be challenging without the right tools. A habit-tracking web app makes [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/tutorials\/create-habit-tracking-web-app\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":411,"featured_media":124688,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How I built a habit-tracking web app with Hostinger Horizons","rank_math_description":"See my experience using Hostinger Horizons to create a habit-tracking web app by writing prompts, from the first idea to publishing it live.","rank_math_focus_keyword":"create habit tracking web app with Hostinger Horizons","footnotes":""},"categories":[22651,22652],"tags":[],"class_list":["post-124662","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-app","category-web-application-blueprints"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/create-habit-tracking-web-app","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/create-habit-tracking-web-app","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/create-habit-tracking-web-app","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/create-habit-tracking-web-app","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/create-habit-tracking-web-app","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/create-habit-tracking-web-app","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/create-habit-tracking-web-app","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/create-habit-tracking-web-app","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/124662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/users\/411"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/comments?post=124662"}],"version-history":[{"count":10,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/124662\/revisions"}],"predecessor-version":[{"id":125196,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/124662\/revisions\/125196"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/media\/124688"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/media?parent=124662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/categories?post=124662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/tags?post=124662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}