{"id":125292,"date":"2025-12-02T16:08:44","date_gmt":"2025-12-02T16:08:44","guid":{"rendered":"\/ph\/tutorials\/how-to-create-a-reviews-web-app"},"modified":"2026-03-10T09:33:21","modified_gmt":"2026-03-10T09:33:21","slug":"how-to-create-a-reviews-web-app","status":"publish","type":"post","link":"\/ph\/tutorials\/how-to-create-a-reviews-web-app","title":{"rendered":"How to create a reviews web app"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>I&rsquo;m a huge fan of trying new restaurants and cafes, and I also definitely have my favorite spots that I return to regularly.<\/p><p>But I&rsquo;ve seen how online reviews can have a big impact on these businesses. Some great places don&rsquo;t get as much foot traffic due to a few bad reviews that could have been easily fixed.<\/p><p>That&rsquo;s why I was inspired to build a solution that could encourage more positive reviews on public websites and platforms, while directing negative feedback straight to the owners &ndash; giving them a chance to improve before their reputation suffers.<\/p><p>With Hostinger Horizons, I built this kind of web app without writing a single line of code.<\/p><p>In this guide, I&rsquo;ll walk you through how to create a reviews web app, from initial concept to final launch.<\/p><p>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-reviews-web-app-p-lanning-and-design\"><strong>Reviews web app &ndash; p<\/strong><strong>lanning and design<\/strong><\/h2><p>My goal with the reviews web app is to channel negative ratings to a private form that goes directly to the business. This gives business owners the chance to address concerns before they become public.<\/p><p>The app would also direct positive ratings to public platforms like Google Reviews and TripAdvisor, encouraging satisfied customers to leave public reviews.<\/p><p>To get started, I sketched out the core features my app would need:<\/p><ul class=\"wp-block-list\">\n<li><strong>Star rating system. <\/strong>A simple 1-5 star rating interface that&rsquo;s easy for customers to use.<\/li>\n\n\n\n<li><strong>Feedback form. <\/strong>For collecting detailed information on negative experiences.<\/li>\n\n\n\n<li><strong>Review redirection.<\/strong> To send positive reviewers to their preferred platform.<\/li>\n<\/ul><p>Normally, creating a web app like this would require weeks of coding and a technical setup I wasn&rsquo;t equipped for. That&rsquo;s why <a href=\"\/ph\/horizons\">Hostinger Horizons AI web app builder<\/a> was a great solution.<\/p><p>All I did was describe my idea and the features I wanted with simple prompts and let AI do the work.<\/p><p>It was also easy to update the look and feel of the web app by describing what I wanted in the chat box.<\/p><p>When it was ready, I could publish the app with one click and host it on a custom domain, all from the same dashboard. There was no need for a technical setup.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a href=\"\/ph\/horizons\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/EN_Horizons_in-text-banner-1024x300.png\" alt=\"\" class=\"wp-image-124045\" srcset=\"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-1024x300.png 1024w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-300x88.png 300w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-150x44.png 150w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-768x225.png 768w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-1536x450.png 1536w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-how-i-created-a-reviews-web-app-with-hostinger-horizons\"><strong>How I created a reviews web app with Hostinger Horizons<\/strong><\/h2><p>By following the steps in our <a href=\"\/ph\/tutorials\/how-to-make-web-app\">guide about how to make a web app<\/a>, I was able to create my web app pretty quickly.<\/p><p>I also made sure to use our <a href=\"\/ph\/tutorials\/prompting-with-hostinger-horizons\">prompting with Hostinger Horizons<\/a> guide to write effective prompts and get the results I was looking for.<\/p><p>Here&rsquo;s how it went.<\/p><h3 class=\"wp-block-heading\" id=\"h-step-1-describe-the-idea\"><strong>Step 1: Describe the idea<\/strong><\/h3><p>To get started, I went into Hostinger Horizons and 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=\"\">Create a web app that helps small businesses manage customer reviews. The app should have a star rating system (1-5 stars). If customers give 4-5 stars, redirect them to leave a public review on Google, TripAdvisor, or similar platforms. If they give 1-3 stars, send them to a feedback form that delivers their comments privately to the business owner.<\/pre><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b2214e817\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/horizons-start-page-1024x799.png\" alt=\"Hostinger Horizons start page with example prompt\" class=\"wp-image-126556\"><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>The AI app generator got to work and created a basic interface with the star rating system and a submit button.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b22151b47\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/horizons-web-app-interface-1024x539.png\" alt=\"Reviews web app basic interface\" class=\"wp-image-126557\"><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 was actually interesting to see the steps it went through to create the web app.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b2215445f\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/horizons-process.png\" alt=\"Process of creating the web app\" class=\"wp-image-126558\"><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 I wanted to improve the visuals, I also made sure not to make one of the <a href=\"\/ph\/tutorials\/avoid-common-mistakes-with-hostinger-horizons\">common web app building mistakes<\/a>: focusing too much on visuals before functionality.<\/p><p>I tested the rating system, and for a negative rating, it redirected me to a feedback form, just as I wanted.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b2215502e\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/web-app-negative-1024x734.png\" alt=\"Feedback form after a negative rating\" class=\"wp-image-126560\"><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 refreshed the interface and then entered a positive rating. This time it just redirected me to Google Maps and showed this message:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b2215800d\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/web-app-positive-1024x570.png\" alt=\"Thank you page after a positive rating\" class=\"wp-image-126561\"><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>This wasn&rsquo;t quite what I wanted. The aim was to have a redirect to the thank you page with buttons that would link to the public platforms to leave a review.<\/p><p>I realized I should have been more specific in the prompt, so it was time to focus on making the core features work properly.<\/p><h3 class=\"wp-block-heading\" id=\"h-step-2-refine-the-features\"><strong>Step 2: Refine the features<\/strong><\/h3><p>I wanted a page with buttons that would link to a business&rsquo; specific profile where people can leave a review.<\/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=\"\">When there is a positive rating, please don't redirect to anything. Just go to the thank you page and have two different buttons: one button says \"Leave a review on TripAdvisor\" and links to this https:\/\/www.tripadvisor.es\/Restaurant_Review-g488307-d17195579-Reviews-DuKELA-Pontevedra_Province_of_Pontevedra_Galicia.html?m=69573 The other button says \"Leave a review on Google\" and links to this https:\/\/g.co\/kgs\/wr1t32A In the thank you message encourage people to click and leave a positive review on the platforms.<\/pre><p>And this worked perfectly. When someone clicks on a button, they will be taken to the restaurant&rsquo;s review page and be able to leave a review on that platform:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b2215accc\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/web-app-positive-update-1024x638.png\" alt=\"Thank you page with buttons after positive rating\" class=\"wp-image-126562\"><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-update-the-visuals\"><strong>Step 3: Update the visuals<\/strong><\/h3><p>Once I got the core functionality to work the way I wanted, the next step was to make everything look better.<\/p><p>First, I added the business logo at the top of the web app. I did this by attaching an image in the chat box and using this prompt:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b2215db72\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/web-app-logo.png\" alt=\"Chat box showing an attached image\" class=\"wp-image-126563\"><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 then made the color scheme match the logo&rsquo;s colors and updated the copy to sound more engaging.<\/p><p>Something I enjoyed about building a web app with Hostinger Horizons was being able to speak to it naturally. My prompts didn&rsquo;t need to be complex or have technical wording. I just had to describe what I wanted in a straightforward way.<\/p><p>Overall, it turned out quite well:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b22160447\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/web-app-done-1024x799.png\" alt=\"Completed web app interface\" class=\"wp-image-126564\"><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><h2 class=\"wp-block-heading\" id=\"h-reviews-web-app-publishing-and-testing\"><strong>Reviews web app &ndash; publishing and testing<\/strong><\/h2><p>Once everything was working and looking the way I wanted, publishing was as simple as clicking a button.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b22162ae0\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/web-app-published-1024x458.png\" alt=\"Published web app panel\" class=\"wp-image-126565\"><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 was also possible to host the web app on a custom domain straight from the interface.<\/p><p>Normally this would require a third-party setup with a separate hosting provider. With Hostinger Horizons, you get hosting, a domain, and the web app builder all in one.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a href=\"\/ph\/horizons\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/EN_Horizons_in-text-banner-1024x300.png\" alt=\"\" class=\"wp-image-124045\" srcset=\"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-1024x300.png 1024w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-300x88.png 300w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-150x44.png 150w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-768x225.png 768w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-1536x450.png 1536w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>After testing the deployed app, I noticed businesses could benefit from more details on the feedback form after a negative rating.<\/p><p>So, I went back in and added a dropdown menu to select which aspect they were unhappy with and a checkbox asking if they wanted the business to contact them. If someone checked the contact box, then an email field would appear.<\/p><p>And it worked:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e9b221658f4\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" 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:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/web-app-feedback-form-1024x831.png\" alt=\"Updated feedback form with more fields\" class=\"wp-image-126566\"><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><h2 class=\"wp-block-heading\" id=\"h-future-updates\"><strong>Future updates<\/strong><\/h2><p>Now, this is the <a href=\"\/ph\/tutorials\/how-to-build-a-saas-product-without-coding#6_Create_a_minimum_viable_product_MVP\">minimum viable product (MVP)<\/a> for the reviews web app. It&rsquo;s the simplest working version of the tool that a business can use with its customers.<\/p><p>Building an MVP is important because it lets you test it in real-world conditions and get feedback from actual users.<\/p><p>That way, you can continue to improve your web app with even more features and advanced functionality.<\/p><p>After testing the web app in real-world conditions, I plan to allow other restaurants to create profiles and have their own versions of the web app.<\/p><p>This will include:<\/p><ul class=\"wp-block-list\">\n<li>Hosting the web app on a custom domain and giving restaurants their own page on a subdirectory. That way, they can create a QR code that links to their page or link to it on their social media profiles.<\/li>\n\n\n\n<li>A login feature for restaurants to customize their pages.<\/li>\n\n\n\n<li>Options to add different platforms, including Yelp and Facebook.<\/li>\n<\/ul><p>The key is to validate the core idea first, see what real users think, and then make improvements based on their feedback.<\/p><h2 class=\"wp-block-heading\" id=\"h-conclusion\"><strong>Conclusion<\/strong><\/h2><p>Creating this reviews web app was surprisingly simple, but there are a few important things to keep in mind if you want to build your own web app.<\/p><p>First, keep your prompts clear and specific. Use natural language to explain what you want without overwhelming the AI with unnecessary information.<\/p><p>Then focus on making the core functionality work properly before spending time on visual elements.<\/p><p>And finally, ensure you test your MVP to receive feedback from real users and update your web app regularly to make it even better.<\/p><p>If you&rsquo;re looking to create a useful tool for yourself or your clients, Hostinger Horizons makes it incredibly easy without any coding knowledge.<\/p><p>Give it a try with a 30-day money-back guarantee.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a href=\"\/ph\/horizons\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2025\/03\/EN_Horizons_in-text-banner-1024x300.png\" alt=\"\" class=\"wp-image-124045\" srcset=\"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-1024x300.png 1024w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-300x88.png 300w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-150x44.png 150w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-768x225.png 768w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner-1536x450.png 1536w, https:\/\/www.hostinger.com\/ph\/tutorials\/wp-content\/uploads\/sites\/44\/2025\/03\/EN_Horizons_in-text-banner.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>Join our <a href=\"https:\/\/discord.com\/invite\/8p8nBUHrZk\" target=\"_blank\" rel=\"noopener\">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>\n","protected":false},"excerpt":{"rendered":"<p>I&rsquo;m a huge fan of trying new restaurants and cafes, and I also definitely have my favorite spots that I return to regularly. But I&rsquo;ve seen how online reviews can have a big impact on these businesses. Some great places don&rsquo;t get as much foot traffic due to a few bad reviews that could have [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/ph\/tutorials\/how-to-create-a-reviews-web-app\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":455,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"","rank_math_description":"","rank_math_focus_keyword":"","footnotes":""},"categories":[22646,22647],"tags":[],"class_list":["post-125292","post","type-post","status-publish","format-standard","hentry","category-web-app","category-web-application-blueprints"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-create-a-reviews-web-app","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-create-a-reviews-web-app","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-create-a-reviews-web-app","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-create-a-reviews-web-app","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-create-a-reviews-web-app","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-create-a-reviews-web-app","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-create-a-reviews-web-app","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-create-a-reviews-web-app","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/posts\/125292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/users\/455"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/comments?post=125292"}],"version-history":[{"count":0,"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/posts\/125292\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/media?parent=125292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/categories?post=125292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/ph\/tutorials\/wp-json\/wp\/v2\/tags?post=125292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}