{"id":130594,"date":"2025-07-08T19:07:33","date_gmt":"2025-07-08T23:07:33","guid":{"rendered":"https:\/\/www.inmotionhosting.com\/support\/?p=130594"},"modified":"2025-07-14T12:36:23","modified_gmt":"2025-07-14T16:36:23","slug":"publish-lovable-webapp-via-github","status":"publish","type":"post","link":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/","title":{"rendered":"Publish Your Lovable Created React WebApp to InMotion Hosting Shared Hosting via GitHub"},"content":{"rendered":"<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub-1024x538.png\" class=\"optimized-lcp-image\" alt=\"How to Publish Your Lovable Created React WebApp to InMotion Hosting via GitHub Hero Image\" loading=\"eager\" fetchpriority=\"high\" sizes=\"(max-width: 768px) 100vw, 768px\" srcset=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub-1024x538.png 1024w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub-300x158.png 300w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub-768x403.png 768w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png 1200w\"><\/figure>\n\n\n\n<p>You\u2019ve built an incredible React web app using Lovable\u2019s AI-powered development platform, and now you\u2019re ready to deploy it to your InMotion Hosting shared hosting . This comprehensive guide walks you through the entire process of connecting Lovable to GitHub and deploying your application to any cPanel-based InMotion Hosting server environment using Git version control.<\/p>\n\n\n\n<p>InMotion Hosting\u2019s <a href=\"https:\/\/www.inmotionhosting.com\/shared-hosting\">Shared Hosting<\/a>, VPS, and Dedicated Server accounts fully support GitHub Actions and remote Git repositories, making it straightforward to deploy your Lovable-created React applications. You\u2019ll learn how to set up the complete pipeline from Lovable\u2019s development environment to your live website, including database migration if your app uses Supabase.<\/p>\n\n\n\n<p>With this guide, you\u2019ll be able to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Connect your <a href=\"https:\/\/lovable.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">Lovable<\/a> project to GitHub for version control<\/li>\n\n\n\n<li>Set up Git repositories in your InMotion cPanel account<\/li>\n\n\n\n<li>Configure automatic deployments using GitHub Actions<\/li>\n\n\n\n<li>Migrate from Supabase to PostgreSQL on InMotion if needed<\/li>\n\n\n\n<li>Manage ongoing updates and deployments<\/li>\n<\/ul>\n\n\n\n<p>Let\u2019s get started with the technical setup.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Understanding the Deployment Architecture<\/h2>\n\n\n\n<p>Before diving into the setup process, it\u2019s important to understand how the pieces fit together. Lovable creates React applications that run in the browser, but they need to be built and deployed to a web server to be accessible to your users.<\/p>\n\n\n\n<p><strong>Your deployment pipeline will look like this<\/strong>: You develop in Lovable \u2192 Changes sync to GitHub \u2192 GitHub Actions builds your app \u2192 Built files deploy to your InMotion hosting account \u2192 Your website goes live.<\/p>\n\n\n\n<p>This architecture gives you the best of both worlds: <strong>rapid development with Lovable\u2019s AI assistance and the reliability of professional hosting with InMotion<\/strong>. You maintain full control over your code through GitHub while leveraging automated deployment processes.<\/p>\n\n\n\n<p>InMotion\u2019s <a href=\"https:\/\/www.inmotionhosting.com\/shared-hosting\">Shared Hosting<\/a> servers run on AlmaLinux 8, which provides excellent compatibility with modern web applications. The platform supports Node.js applications, PostgreSQL databases, and SSH access (on port 2222), giving you everything needed for React app deployment.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Setting Up Lovable GitHub Integration<\/h2>\n\n\n\n<p>The first step in your deployment pipeline is connecting Lovable to GitHub. This creates a bridge between your AI-powered development environment and the version control system that will manage your code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Initial GitHub Connection<\/h3>\n\n\n\n<p>Start by linking your Lovable account to GitHub. In your Lovable project editor, look for the GitHub option in the top-right corner and click \u201c<strong>Connect to GitHub<\/strong>.\u201d This initiates the authorization process that allows Lovable to create and manage repositories on your behalf.<\/p>\n\n\n\n<p>When GitHub opens, you\u2019ll be asked to authorize the Lovable GitHub App. Sign in to your GitHub account if you haven\u2019t already. You\u2019ll see options to grant access to all repositories or only select repositories. For simplicity, granting access to all repositories works well, but you can be selective if you prefer to limit access.<\/p>\n\n\n\n<p>If you belong to GitHub organizations, you\u2019ll need to choose which account or organization should host your project\u2019s repository. Make sure you have admin permissions in any organization you select, as Lovable needs to create repositories and manage commits.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1190\" height=\"633\" src=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/lovable-connect-github.png\" alt=\"If you belong to GitHub organizations, you'll need to choose which account or organization should host your project's repository.\" class=\"wp-image-130641\" srcset=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/lovable-connect-github.png 1190w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/lovable-connect-github-300x160.png 300w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/lovable-connect-github-1024x545.png 1024w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/lovable-connect-github-768x409.png 768w\" sizes=\"auto, (min-width: 1360px) 876px, (min-width: 960px) calc(61.58vw + 51px), calc(100vw - 80px)\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Your Project Repository<\/h3>\n\n\n\n<p>Once GitHub authorization is complete, return to your Lovable project. Click the \u201c<strong>Create Repository<\/strong>\u201d button, which should now be visible in the GitHub section of your project interface. Lovable will create a new GitHub repository specifically for your project and perform the initial code push.<\/p>\n\n\n\n<p>This process typically takes a few seconds to complete. Lovable is transferring all your project files, including your React components, configuration files, and any assets you\u2019ve created. Once finished, you\u2019ll see a confirmation message and a link to view your repository on GitHub.<\/p>\n\n\n\n<p>Navigate to your GitHub account to verify the repository creation. You should see a new repository with your project name containing all the code from your Lovable application. This repository will serve as the central hub for your code, connecting Lovable\u2019s development environment to your InMotion hosting account.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"548\" src=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/image-1-1024x548.png\" alt=\"\" class=\"wp-image-130703\" srcset=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/image-1-1024x548.png 1024w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/image-1-300x160.png 300w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/image-1-768x411.png 768w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/image-1.png 1290w\" sizes=\"auto, (min-width: 1360px) 876px, (min-width: 960px) calc(61.58vw + 51px), calc(100vw - 80px)\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Understanding Lovable\u2019s Sync Behavior<\/h3>\n\n\n\n<p>Lovable maintains real-time synchronization between your project and GitHub, but this sync operates specifically with your repository\u2019s default branch (typically \u201cmain\u201d or \u201cmaster\u201d). When you make changes in Lovable, they\u2019re automatically committed and pushed to this default branch within seconds.<\/p>\n\n\n\n<p>Similarly, if you push changes to the default branch from your local development environment or directly through GitHub\u2019s interface, Lovable will pull these changes and reflect them in your project editor almost immediately. This bidirectional sync ensures that your code stays consistent whether you\u2019re working in Lovable or using traditional development tools.<\/p>\n\n\n\n<p>However, Lovable only tracks the default branch. If you create feature branches or work on separate branches in GitHub, those changes won\u2019t appear in Lovable until they\u2019re merged into the default branch. This is important to remember when setting up your deployment workflow.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Configuring Git in Your InMotion cPanel Account<\/h2>\n\n\n\n<p>With your Lovable project connected to GitHub, the next step is <a href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/cpanel\/how-to-use-git-version-control-in-cpanel\/\">setting up Git Version Control<\/a> in your InMotion Hosting account with cPanel. This creates the destination for your deployed code and establishes the connection between GitHub and your web server.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Accessing Git Version Control<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log into your InMotion cPanel account by navigating to <code>https:\/\/yourdomain.com\/cpanel<\/code> or using the cPanel login link in your Account Management Panel.<\/li>\n\n\n\n<li>Navigate to the Files section in your cPanel dashboard. You\u2019ll see several file management options listed in a grid or menu format.<\/li>\n\n\n\n<li>Click on \u201c<strong>Git Version Control<\/strong>\u201d which should appear as an icon with a Git logo. This opens InMotion\u2019s Git management interface where you can create and manage repositories directly on your hosting account.<br><br><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"284\" src=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/cpanel-files-git-version-control-1024x284.png\" alt=\"Select Git Version Control under Files in cPanel\" class=\"wp-image-130623\" srcset=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/cpanel-files-git-version-control-1024x284.png 1024w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/cpanel-files-git-version-control-300x83.png 300w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/cpanel-files-git-version-control-768x213.png 768w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/cpanel-files-git-version-control-1536x427.png 1536w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/cpanel-files-git-version-control.png 2016w\" sizes=\"auto, (min-width: 1360px) 876px, (min-width: 960px) calc(61.58vw + 51px), calc(100vw - 80px)\" \/><\/li>\n\n\n\n<li>Review the initial screen. If this is your first time using Git in cPanel, you\u2019ll be prompted to create a repository immediately and can skip to the next section. Otherwise, you\u2019ll see a list of existing repositories (if any) and a blue \u201c<strong>Create<\/strong>\u201d button to add new ones.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Your Deployment Repository<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click the \u201c<strong>Create<\/strong>\u201d button to start setting up your deployment repository. This opens a form with several configuration options.<br><br><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" src=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-version-control-create-1024x316.png\" alt=\"Click on Create to link a Repository\" class=\"wp-image-130622\" srcset=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-version-control-create-1024x316.png 1024w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-version-control-create-300x93.png 300w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-version-control-create-768x237.png 768w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-version-control-create-1536x475.png 1536w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-version-control-create-2048x633.png 2048w\" sizes=\"auto, (min-width: 1360px) 876px, (min-width: 960px) calc(61.58vw + 51px), calc(100vw - 80px)\" \/><\/li>\n\n\n\n<li>Enable repository cloning by toggling <strong>ON<\/strong> the \u201c<strong>Clone a Repository<\/strong>\u201d option. You\u2019ll see the form change to show fields for cloning an existing repository instead of creating a new empty one.<br><br><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"955\" class=\"wp-image-130621\" src=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-create-repository-1024x955.png\" alt=\"Create Git Repository with Clone On\" srcset=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-create-repository-1024x955.png 1024w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-create-repository-300x280.png 300w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-create-repository-768x716.png 768w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2018\/08\/git-create-repository.png 1364w\" sizes=\"auto, (min-width: 1360px) 876px, (min-width: 960px) calc(61.58vw + 51px), calc(100vw - 80px)\" \/><\/li>\n\n\n\n<li>Get your GitHub repository\u2019s clone URL by opening your GitHub repository in a new browser tab. Click the green \u201c<strong>Code<\/strong>\u201d button and you\u2019ll see options for <strong>HTTPS<\/strong>, <strong>SSH<\/strong>, and <strong>GitHub CLI<\/strong>. Copy the <strong>HTTPS URL<\/strong> (it will look like <code>https:\/\/github.com\/yourusername\/your-repo-name.git<\/code>).<\/li>\n\n\n\n<li>Enter the clone URL in the \u201c<strong>Clone URL<\/strong>\u201d field in cPanel. Paste the <strong>HTTPS URL<\/strong> you copied from GitHub. For shared hosting, the <strong>HTTPS URL<\/strong> typically works best initially, though you can switch to SSH later for automated deployments.<\/li>\n\n\n\n<li>Set the repository path to specify where your website files will live on the server. Choose one of these options:\n<ul class=\"wp-block-list\">\n<li>For your main domain: <code>public_html\/your-app-name<\/code><\/li>\n\n\n\n<li>For a subdomain: <code>public_html\/subdomain-name\/your-app-name<\/code><\/li>\n\n\n\n<li>For a subdirectory: <code>public_html\/directory-name\/your-app-name<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Provide a repository name that will appear in your cPanel interface. Choose something descriptive like \u201c<strong>Lovable React App<\/strong>\u201d or \u201c<strong>My Production Website<\/strong>\u201d so you can easily identify it later.<\/li>\n\n\n\n<li>Click \u201c<strong>Create<\/strong>\u201d at the bottom of the form. cPanel will now clone your GitHub repository to your hosting account. This process typically takes 30-60 seconds depending on your repository size.<\/li>\n\n\n\n<li>Wait for the confirmation message that says \u201c<strong>Repository created successfully<\/strong>\u201d or similar. You\u2019ll then see your new repository listed in the Git Version Control interface.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Configuring SSH Access for Shared Hosting<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Generate an SSH key pair on your local machine if you don\u2019t already have one. Open your terminal or command prompt and run:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">ssh-keygen<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-t<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">rsa<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-b<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">4096<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-C<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"your_email@example.com\"<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>You\u2019ll see prompts like this:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Generating public\/private rsa key pair.\nEnter file in which to save the key (\/home\/yourusername\/.ssh\/id_rsa): [Press Enter]\nEnter passphrase (empty for no passphrase): [Enter a passphrase or press Enter]\nEnter same passphrase again: [Repeat passphrase or press Enter]<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">Generating<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">public\/private<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">rsa<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">key<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">pair.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Enter<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">file<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">in<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">which<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">save<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">key<\/span><span style=\"color: #E1E4E8\"> (\/home\/yourusername\/.ssh\/id_rsa): [Press Enter]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Enter<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">passphrase<\/span><span style=\"color: #E1E4E8\"> (empty <\/span><span style=\"color: #9ECBFF\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">no<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">passphrase<\/span><span style=\"color: #E1E4E8\">): [Enter a passphrase or press Enter]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Enter<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">same<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">passphrase<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">again:<\/span><span style=\"color: #E1E4E8\"> [Repeat <\/span><span style=\"color: #9ECBFF\">passphrase<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">or<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">press<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Enter]<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>View your public key by running:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>cat ~\/.ssh\/id_rsa.pub<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">cat<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">~\/.ssh\/id_rsa.pub<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>This will display your public key, which looks like:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7... your_email@example.com<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">ssh-rsa<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">AAAAB3NzaC1yc2EAAAADAQABAAABgQC7...<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">your_email@example.com<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Copy the entire public key including the <strong>ssh-rsa<\/strong> at the beginning and your email at the end.<\/li>\n\n\n\n<li>Add the SSH key to your cPanel account by navigating to \u201c<strong>SSH Access<\/strong>\u201d \u2192 \u201c<strong>Manage SSH Keys<\/strong>\u201d in your cPanel dashboard.<\/li>\n\n\n\n<li>Click \u201c<strong>Import Key<\/strong>\u201d and paste your public key into the text field. Give it a descriptive name like \u201cMy Development Machine\u201d and click \u201c<strong>Import<\/strong>.\u201d<\/li>\n\n\n\n<li>Authorize the key by clicking \u201c<strong>Manage<\/strong>\u201d next to your newly imported key, then clicking \u201c<strong>Authorize<\/strong>.\u201d You\u2019ll see a confirmation that the key is now authorized.<\/li>\n\n\n\n<li>Test your SSH connection from your local machine. InMotion\u2019s shared hosting environments must use port 2222:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ssh -p 2222 yourusername@yourdomain.com<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"10\" class=\"wp-block-list\">\n<li>If successful, you\u2019ll see:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>The authenticity of host '[yourdomain.com]:2222 ([IP_ADDRESS]:2222)' can't be established.\n\nRSA key fingerprint is SHA256:...\n\nAre you sure you want to continue connecting (yes\/no)? yes\n\nWarning: Permanently added '[yourdomain.com]:2222' (RSA) to the list of known hosts.\n\nWelcome to yourdomain.com!\n\n[yourusername@server ~]$<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #79B8FF\">The authenticity of host '[yourdomain.com]:2222 ([IP_ADDRESS]:2222)' can't be established.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">RSA key fingerprint is SHA256:...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Are you sure you want to continue connecting (yes\/no)? yes<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Warning: Permanently added '[yourdomain.com]:2222' (RSA) to the list of known hosts.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Welcome to yourdomain.com!<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">[yourusername@server ~]<\/span><span style=\"color: #E1E4E8\">$<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"11\" class=\"wp-block-list\">\n<li>Remember the SSH connection format for InMotion shared hosting:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ssh:\/\/yourusername@yourdomain.com:2222\/home\/yourusername\/repository-path<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">ssh:\/\/yourusername@yourdomain.com:2222\/home\/yourusername\/repository-path<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Testing Your Repository Connection<\/h3>\n\n\n\n<p>Once your repository is created in cPanel, test the connection by making a small change to your GitHub repository. You can edit a file directly on GitHub or push a change from your local development environment. The change should appear in your cPanel Git interface within a few minutes.<\/p>\n\n\n\n<p>If changes aren\u2019t syncing properly, check your repository settings in cPanel. Ensure the clone URL is correct and that you have the necessary permissions. You may need to update your repository credentials or re-authenticate with GitHub.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Setting Up PostgreSQL Database (If Needed)<\/h2>\n\n\n\n<p>Many Lovable projects use Supabase for their database needs during development. When deploying to InMotion Hosting, you\u2019ll want to migrate to a PostgreSQL database hosted on your account for better performance and control.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating a PostgreSQL Database<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Access the PostgreSQL Databases section in your cPanel by navigating to the \u201c<strong>Databases<\/strong>\u201d section and clicking on \u201c<strong>PostgreSQL Databases<\/strong>.\u201d You\u2019ll see a management interface for creating and managing PostgreSQL databases.<\/li>\n\n\n\n<li>Create your database by following these detailed steps:\n<ul class=\"wp-block-list\">\n<li>Locate the \u201c<strong>Create New Database<\/strong>\u201d section at the top of the page<\/li>\n\n\n\n<li>Enter a descriptive database name in the \u201c<strong>Database Name<\/strong>\u201d field. Choose something that relates to your project, such as <code>lovable_app_prod<\/code>, <code>react_webapp_db<\/code>, or <code>myproject_main<\/code><\/li>\n\n\n\n<li>Note the full database name that will be created. InMotion automatically prefixes your database name with your cPanel username, so <code>lovable_app_prod<\/code> becomes <code>username_lovable_app_prod<\/code><\/li>\n\n\n\n<li>Click \u201c<strong>Create Database<\/strong>\u201d and wait for the system to process your request.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Confirm database creation by looking for the success message that reads \u201cAdded the database username_lovable_app_prod\u201d (or your chosen name). This confirms that your database has been created successfully.<\/li>\n\n\n\n<li>Click \u201c<strong>Go Back<\/strong>\u201d to return to the PostgreSQL Databases main page, where you\u2019ll now see your new database listed in the \u201cCurrent Databases\u201d section.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Database Users and Permissions<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create a database user by scrolling down to the \u201c<strong>PostgreSQL Users<\/strong>\u201d section:\n<ul class=\"wp-block-list\">\n<li>Enter a username in the \u201c<strong>Username<\/strong>\u201d field. Choose something descriptive like <code>lovable_app_user<\/code> or <code>webapp_user<\/code><\/li>\n\n\n\n<li>Generate a strong password by clicking the \u201c<strong>Password Generator<\/strong>\u201d button, or create your own secure password with at least 12 characters including uppercase, lowercase, numbers, and symbols<\/li>\n\n\n\n<li>Confirm your password by entering it again in the \u201c<strong>Password (Again)<\/strong>\u201d field<\/li>\n\n\n\n<li>Click \u201c<strong>Create User<\/strong>\u201d to create the database user account<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Record your database credentials immediately after creation. You\u2019ll need these for your application configuration:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Database Host: localhost (or your domain name)\nDatabase Port: 2222\nDatabase Name: username_lovable_app_prod\nDatabase Username: username_lovable_app_user\nDatabase Password: [the password you created]<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">Database Host: localhost (or your domain name)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Database Port: <\/span><span style=\"color: #79B8FF\">2222<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Database Name: username_lovable_app_prod<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Database Username: username_lovable_app_user<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Database Password: [<\/span><span style=\"color: #F97583\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">password<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">you<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">created<\/span><span style=\"color: #E1E4E8\">]<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Grant permissions to your user by scrolling to the \u201c<strong>Add User to Database<\/strong>\u201d section:\n<ul class=\"wp-block-list\">\n<li>Select your database user from the \u201c<strong>User<\/strong>\u201d dropdown menu<\/li>\n\n\n\n<li>Select your database from the \u201c<strong>Database<\/strong>\u201d dropdown menu<\/li>\n\n\n\n<li>Click \u201c<strong>Add<\/strong>\u201d to proceed to the permissions screen<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Set user permissions on the permissions page:\n<ul class=\"wp-block-list\">\n<li>Check \u201c<strong>ALL PRIVILEGES<\/strong>\u201d to grant full access to your database user. This allows your application to create tables, insert data, update records, and delete data as needed<\/li>\n\n\n\n<li>Review the individual permissions if you prefer granular control. For most React applications, you\u2019ll need <code>SELECT<\/code>, <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code>, <code>CREATE<\/code>, and <code>DROP<\/code> permissions<\/li>\n\n\n\n<li>Click \u201c<strong>Make Changes<\/strong>\u201d to save the permissions<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Verify user access by testing the database connection. You can do this through cPanel\u2019s phpPgAdmin interface:\n<ul class=\"wp-block-list\">\n<li>Navigate to phpPgAdmin in the \u201c<strong>Databases\u201d<\/strong> section of cPanel<\/li>\n\n\n\n<li>Log in using your database credentials<\/li>\n\n\n\n<li>Select your database from the left sidebar<\/li>\n\n\n\n<li>Run a test query like <code>SELECT version();<\/code> to confirm connectivity<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Updating Your Application Configuration<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Locate your application\u2019s database configuration which is typically found in one of these files:\n<ul class=\"wp-block-list\">\n<li><code>.env<\/code> or <code>.env.local<\/code> (environment variables)<\/li>\n\n\n\n<li><code>config\/database.js<\/code> (configuration file)<\/li>\n\n\n\n<li><code>src\/lib\/database.js<\/code> (database connection module)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Replace Supabase configuration with your InMotion PostgreSQL details. Change from:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Old Supabase configuration\nconst supabaseUrl = 'https:\/\/your-project.supabase.co'\nconst supabaseKey = 'your-anon-key'\nconst supabase = createClient(supabaseUrl, supabaseKey)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\">\/\/ Old Supabase configuration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">supabaseUrl<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'https:\/\/your-project.supabase.co'<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">supabaseKey<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'your-anon-key'<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">supabase<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">createClient<\/span><span style=\"color: #E1E4E8\">(supabaseUrl, supabaseKey)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>To PostgreSQL configuration:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ New PostgreSQL configuration\nconst databaseConfig = {\n\u00a0\u00a0host: 'localhost', \/\/ or your domain name\n\u00a0\u00a0port: 2222,\n\u00a0\u00a0database: 'username_lovable_app_prod',\n\u00a0\u00a0user: 'username_lovable_app_user',\n\u00a0\u00a0password: 'your_secure_password',\n\u00a0\u00a0ssl: false \/\/ InMotion's shared hosting typically doesn't require SSL for local connections\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\">\/\/ New PostgreSQL configuration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">const<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">databaseConfig<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0host: <\/span><span style=\"color: #9ECBFF\">'localhost'<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #6A737D\">\/\/ or your domain name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0port: <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0database: <\/span><span style=\"color: #9ECBFF\">'username_lovable_app_prod'<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0user: <\/span><span style=\"color: #9ECBFF\">'username_lovable_app_user'<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0password: <\/span><span style=\"color: #9ECBFF\">'your_secure_password'<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0ssl: <\/span><span style=\"color: #79B8FF\">false<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\">\/\/ InMotion's shared hosting typically doesn't require SSL for local connections<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Update environment variables if your application uses them. Create or modify your <strong>.env.production<\/strong> file:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Database Configuration\nREACT_APP_DB_HOST=localhost\nREACT_APP_DB_PORT=2222\nREACT_APP_DB_NAME=username_lovable_app_prod\nREACT_APP_DB_USER=username_lovable_app_user\nREACT_APP_DB_PASSWORD=your_secure_password\n\n# Application Configuration\nREACT_APP_NODE_ENV=production\nREACT_APP_API_URL=https:\/\/yourdomain.com\/api<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Database Configuration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">REACT_APP_DB_HOST<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">localhost<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">REACT_APP_DB_PORT<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #79B8FF\">2222<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">REACT_APP_DB_NAME<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">username_lovable_app_prod<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">REACT_APP_DB_USER<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">username_lovable_app_user<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">REACT_APP_DB_PASSWORD<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">your_secure_password<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Application Configuration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">REACT_APP_NODE_ENV<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">production<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">REACT_APP_API_URL<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #9ECBFF\">https:\/\/yourdomain.com\/api<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Test your database connection locally before deploying:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Install a PostgreSQL client for testing\nnpm install pg\n\n# Create a test connection script\nnode -e \"\nconst { Client } = require('pg');\nconst client = new Client({\n\u00a0\u00a0host: 'yourdomain.com',\n\u00a0\u00a0port: 2222,\n\u00a0\u00a0database: 'username_lovable_app_prod',\n\u00a0\u00a0user: 'username_lovable_app_user',\n\u00a0\u00a0password: 'your_secure_password'\n});\nclient.connect()\n\u00a0\u00a0.then(() =&gt; console.log('Database connection successful!'))\n\u00a0\u00a0.catch(err =&gt; console.error('Database connection failed:', err))\n\u00a0\u00a0.finally(() =&gt; client.end());\n\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Install a PostgreSQL client for testing<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">install<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">pg<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Create a test connection script<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">node<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-e<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">const { Client } = require('pg');<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">const client = new Client({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0host: 'yourdomain.com',<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0port: 2222,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0database: 'username_lovable_app_prod',<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0user: 'username_lovable_app_user',<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0password: 'your_secure_password'<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">});<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">client.connect()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0.then(() =&gt; console.log('Database connection successful!'))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0.catch(err =&gt; console.error('Database connection failed:', err))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\u00a0\u00a0.finally(() =&gt; client.end());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9ECBFF\">\"<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Commit your configuration changes to your GitHub repository:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git add .env.production\ngit add src\/config\/database.js\u00a0 # or your specific config file\ngit commit -m \"Update database configuration for InMotion PostgreSQL\"\ngit push origin main<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">add<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">.env.production<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">add<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">src\/config\/database.js\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># or your specific config file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">commit<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-m<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Update database configuration for InMotion PostgreSQL\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">push<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li>Verify the changes by checking your GitHub repository to ensure the updated configuration files are committed and will be included in your next deployment.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Configuring GitHub Actions for Deployment<\/h2>\n\n\n\n<p>GitHub Actions provides the automation that makes your deployment pipeline work seamlessly. You\u2019ll create a workflow that builds your React application and deploys it to your InMotion hosting account whenever you push changes to your main branch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Your Workflow File<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Navigate to your GitHub repository in your web browser and ensure you\u2019re viewing the main branch.<\/li>\n\n\n\n<li>Create the workflows directory by clicking on \u201c<strong>Create new file<\/strong>\u201d in your repository\u2019s main page.<\/li>\n\n\n\n<li>Type the file path <strong>.github\/workflows\/deploy.yml<\/strong> in the file name field. GitHub will automatically create the necessary directories when you include the forward slashes.<\/li>\n\n\n\n<li>Add your workflow configuration by copying and pasting the following complete YAML configuration:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>name: Deploy Lovable React App to InMotion Hosting\non:\n\u00a0\u00a0push:\n\u00a0\u00a0\u00a0\u00a0branches: [ main ]\n\u00a0\u00a0pull_request:\n\u00a0\u00a0\u00a0\u00a0branches: [ main ]\njobs:\n\u00a0\u00a0deploy:\n\u00a0\u00a0\u00a0\u00a0runs-on: ubuntu-latest\n\u00a0\u00a0\u00a0\u00a0steps:\n\u00a0\u00a0\u00a0\u00a0- name: Checkout code\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uses: actions\/checkout@v3\n\u00a0\u00a0\u00a0\u00a0- name: Setup Node.js environment\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uses: actions\/setup-node@v3\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0with:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0node-version: '18'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cache: 'npm'\n\u00a0\u00a0\u00a0\u00a0- name: Install dependencies\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: |\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Installing npm dependencies...\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0npm ci\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Dependencies installed successfully\"\n\u00a0\u00a0\u00a0\u00a0- name: Build React application\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: |\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Building React application for production...\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0npm run build\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Build completed successfully\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ls -la build\/\n\u00a0\u00a0\u00a0\u00a0- name: Setup SSH key for deployment\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: |\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Setting up SSH key...\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir -p ~\/.ssh\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"${{ secrets.SSH_KEY }}\" &gt; ~\/.ssh\/id_rsa\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0chmod 600 ~\/.ssh\/id_rsa\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ssh-keyscan -p 2222 ${{ secrets.SSH_HOST }} &gt;&gt; ~\/.ssh\/known_hosts\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"SSH key configured successfully\"\n\u00a0\u00a0\u00a0\u00a0- name: Deploy to InMotion Hosting\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: |\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Starting deployment to InMotion Hosting...\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0rsync -avz --delete --progress \\\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-e \"ssh -p 2222 -o StrictHostKeyChecking=no\" \\\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0build\/ \\\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.SSH_PATH }}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Deployment completed successfully\"\n\u00a0\u00a0\u00a0\u00a0- name: Verify deployment\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: |\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Verifying deployment...\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ssh -p 2222 ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }} \"ls -la ${{ secrets.SSH_PATH }}\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Deployment verification completed\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Deploy Lovable React App to InMotion Hosting<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">on<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0<\/span><span style=\"color: #85E89D\">push<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">branches<\/span><span style=\"color: #E1E4E8\">: [ <\/span><span style=\"color: #9ECBFF\">main<\/span><span style=\"color: #E1E4E8\"> ]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0<\/span><span style=\"color: #85E89D\">pull_request<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">branches<\/span><span style=\"color: #E1E4E8\">: [ <\/span><span style=\"color: #9ECBFF\">main<\/span><span style=\"color: #E1E4E8\"> ]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">jobs<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0<\/span><span style=\"color: #85E89D\">deploy<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">runs-on<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">ubuntu-latest<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">steps<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0- <\/span><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Checkout code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">uses<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">actions\/checkout@v3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0- <\/span><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Setup Node.js environment<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">uses<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">actions\/setup-node@v3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">with<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">node-version<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">'18'<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">cache<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">'npm'<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0- <\/span><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Install dependencies<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">run<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #F97583\">|<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Installing npm dependencies...\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">npm ci<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Dependencies installed successfully\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0- <\/span><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Build React application<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">run<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #F97583\">|<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Building React application for production...\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">npm run build<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Build completed successfully\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">ls -la build\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0- <\/span><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Setup SSH key for deployment<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">run<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #F97583\">|<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Setting up SSH key...\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">mkdir -p ~\/.ssh<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"${{ secrets.SSH_KEY }}\" &gt; ~\/.ssh\/id_rsa<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">chmod 600 ~\/.ssh\/id_rsa<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">ssh-keyscan -p 2222 ${{ secrets.SSH_HOST }} &gt;&gt; ~\/.ssh\/known_hosts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"SSH key configured successfully\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0- <\/span><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Deploy to InMotion Hosting<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">run<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #F97583\">|<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Starting deployment to InMotion Hosting...\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">rsync -avz --delete --progress \\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">-e \"ssh -p 2222 -o StrictHostKeyChecking=no\" \\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">build\/ \\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.SSH_PATH }}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Deployment completed successfully\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0- <\/span><span style=\"color: #85E89D\">name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Verify deployment<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #85E89D\">run<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #F97583\">|<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Verifying deployment...\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">ssh -p 2222 ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }} \"ls -la ${{ secrets.SSH_PATH }}\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #9ECBFF\">echo \"Deployment verification completed\"<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Review the workflow configuration to understand what each step does:\n<ul class=\"wp-block-list\">\n<li><strong>Checkout code: <\/strong>Downloads your repository code to the GitHub Actions runner<\/li>\n\n\n\n<li><strong>Setup Node.js:<\/strong> Installs Node.js version 18 with npm caching for faster builds<\/li>\n\n\n\n<li><strong>Install dependencies:<\/strong> Runs <strong>npm ci<\/strong> to install your project dependencies<\/li>\n\n\n\n<li><strong>Build React application:<\/strong> Creates the production build of your React app<\/li>\n\n\n\n<li><strong>Setup SSH key:<\/strong> Configures SSH authentication for secure deployment<\/li>\n\n\n\n<li><strong>Deploy to InMotion:<\/strong> Uses rsync to transfer files to your hosting account<\/li>\n\n\n\n<li><strong>Verify deployment:<\/strong> Confirms that files were transferred successfully<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Commit the workflow file by scrolling to the bottom of the page, adding a commit message like \u201c<strong>Add GitHub Actions deployment workflow<\/strong>\u201c, and clicking \u201c<strong>Commit new file<\/strong>.\u201d<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Setting Up Deployment Secrets<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Navigate to your repository settings by clicking on the \u201c<strong>Settings<\/strong>\u201d tab in your GitHub repository.<\/li>\n\n\n\n<li>Access the secrets section by clicking on \u201c<strong>Secrets and variables<\/strong>\u201d in the left sidebar, then selecting \u201c<strong>Actions.<\/strong>\u201c<\/li>\n\n\n\n<li>Add your InMotion hosting secrets by clicking \u201c<strong>New repository secret<\/strong>\u201d for each of the following: INMOTION_HOST Secret:\n<ul class=\"wp-block-list\">\n<li>Name: <strong>INMOTION_HOST<\/strong><\/li>\n\n\n\n<li>Value: <strong>yourdomain.com<\/strong> (replace with your actual domain)<\/li>\n\n\n\n<li>Click \u201c<strong>Add secret<\/strong>\u201c<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>INMOTION_USERNAME Secret:\n<ul class=\"wp-block-list\">\n<li>Name: <strong>INMOTION_USERNAME<\/strong><\/li>\n\n\n\n<li>Value: <strong>your_cpanel_username<\/strong> (found in your cPanel login details)<\/li>\n\n\n\n<li>Click \u201c<strong>Add secret<\/strong>\u201c<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>INMOTION_SSH_KEY Secret:\n<ul class=\"wp-block-list\">\n<li>Name: <strong>INMOTION_SSH_KEY<\/strong><\/li>\n\n\n\n<li>Value: Your private SSH key content (run <strong>cat ~\/.ssh\/id_rsa<\/strong> on your local machine to view it)<\/li>\n\n\n\n<li>The key should start with <strong>\u2014\u2013BEGIN OPENSSH PRIVATE KEY\u2014\u2013<\/strong> and end with <strong>\u2014\u2013END OPENSSH PRIVATE KEY\u2014\u2013<\/strong><\/li>\n\n\n\n<li>Click \u201c<strong>Add secret<\/strong>\u201c<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>INMOTION_PATH Secret:\n<ul class=\"wp-block-list\">\n<li>Name: <strong>INMOTION_PATH<\/strong><\/li>\n\n\n\n<li>Value: <strong>\/home\/yourusername\/public_html\/your-app-directory<\/strong> (replace with your actual path)<\/li>\n\n\n\n<li>Click \u201c<strong>Add secret<\/strong>\u201c<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Verify all secrets are added by checking that you see all four secrets listed in your repository secrets page.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Implementing the Deployment Step<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Understand the rsync command used in the deployment step:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>rsync -avz --delete --progress \\\n\u00a0\u00a0-e \"ssh -p 2222 -o StrictHostKeyChecking=no\" \\\n\u00a0\u00a0build\/ \\\nusername@yourdomain.com:\/home\/username\/public_html\/your-app\/<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">rsync<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-avz<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--delete<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--progress<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0-e <\/span><span style=\"color: #9ECBFF\">\"ssh -p 2222 -o StrictHostKeyChecking=no\"<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0build\/ <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">username@yourdomain.com:\/home\/username\/public_html\/your-app\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Break down the rsync options:\n<ul class=\"wp-block-list\">\n<li><strong><code>-a<\/code><\/strong>: Archive mode (preserves permissions, timestamps, etc.)<\/li>\n\n\n\n<li><strong><code>-v<\/code><\/strong>: Verbose output (shows files being transferred)<\/li>\n\n\n\n<li><strong><code>-z<\/code><\/strong>: Compress data during transfer (faster over network)<\/li>\n\n\n\n<li><strong><code>--delete<\/code><\/strong>: Remove files on destination that don\u2019t exist in source<\/li>\n\n\n\n<li><strong><code>--progress<\/code><\/strong>: Show transfer progress<\/li>\n\n\n\n<li><strong><code>-e \"ssh -p 2222\"<\/code><\/strong>: Use SSH on port 2222 for transfer<\/li>\n\n\n\n<li><code><strong>-o StrictHostKeyChecking=no<\/strong>:<\/code> Skip SSH host key verification<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Customize the deployment path by updating the <strong>INMOTION_PATH<\/strong> secret to match your specific hosting setup:\n<ul class=\"wp-block-list\">\n<li>Main domain: <strong>\/home\/yourusername\/public_html<\/strong><\/li>\n\n\n\n<li>Subdomain: <strong>\/home\/yourusername\/public_html\/subdomain<\/strong><\/li>\n\n\n\n<li>Subdirectory: <strong>\/home\/yourusername\/public_html\/directory<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Testing Your Deployment Workflow<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Make a test change to your repository by editing a file (like updating the <strong>README.md<\/strong> or making a small change to your React app).<\/li>\n\n\n\n<li>Commit and push the change to your main branch:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git add .\ngit commit -m \"Test deployment workflow\"\ngit push origin main<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">add<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">commit<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-m<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Test deployment workflow\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">push<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Monitor the workflow execution by navigating to the \u201cActions\u201d tab in your GitHub repository. You should see a new workflow run starting with the name \u201cDeploy Lovable React App to InMotion Hosting.\u201d<\/li>\n\n\n\n<li>Click on the workflow run to see detailed logs. You\u2019ll see output like:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Run npm ci\n\nInstalling npm dependencies...\n\nnpm WARN prepare removing existing node_modules\n\nadded 1234 packages in 45s\n\nDependencies installed successfully\n\nRun npm run build\n\nBuilding React application for production...\n\n&gt; my-app@0.1.0 build\n\n&gt; react-scripts build\n\nCreating an optimized production build...\n\nCompiled successfully.\n\nFile sizes after gzip:\n\n\u00a0\u00a0123.45 KB\u00a0 build\/static\/js\/main.abc123.js\n\u00a0\u00a012.34 KB \u00a0 build\/static\/css\/main.def456.css\n\nBuild completed successfully<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">Run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">ci<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Installing<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">dependencies...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">WARN<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">prepare<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">removing<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">existing<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">node_modules<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">added<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1234<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">packages<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">in<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">45<\/span><span style=\"color: #9ECBFF\">s<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Dependencies<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">installed<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">successfully<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Building<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">React<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">application<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">production...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #E1E4E8\"> my-app@0.1.0 build<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #E1E4E8\"> react-scripts build<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Creating<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">an<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">optimized<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">production<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Compiled<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">successfully.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">File<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">sizes<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">after<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">gzip:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0123.45<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">KB\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build\/static\/js\/main.abc123.js<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a012.34<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">KB<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build\/static\/css\/main.def456.css<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Build<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">completed<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">successfully<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Check the deployment step output for successful file transfer:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Run rsync -avz --delete --progress...\n\nStarting deployment to InMotion Hosting...\n\nbuilding file list ... done\n\n.\/\n\nasset-manifest.json\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01,234 100%\u00a0 \u00a0 0.00kB\/s\u00a0 \u00a0 0:00:00 (xfr#1, to-chk=25\/27)\n\nfavicon.ico\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a03,456 100%\u00a0 \u00a0 3.29MB\/s\u00a0 \u00a0 0:00:00 (xfr#2, to-chk=24\/27)\n\nindex.html\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02,345 100%\u00a0 \u00a0 2.24MB\/s\u00a0 \u00a0 0:00:00 (xfr#3, to-chk=23\/27)\n\nsent 567,890 bytes\u00a0 received 1,234 bytes\u00a0 379,416.00 bytes\/sec\n\ntotal size is 567,890\u00a0 speedup is 1.00\n\nDeployment completed successfully<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">Run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">rsync<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-avz<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--delete<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--progress...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Starting<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">deployment<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">InMotion<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Hosting...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">building<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">file<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">list<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">...<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">done<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">.\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">asset-manifest.json<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01,234<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">100<\/span><span style=\"color: #9ECBFF\">%\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0.00<\/span><span style=\"color: #9ECBFF\">kB\/s\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #9ECBFF\">:00:00<\/span><span style=\"color: #E1E4E8\"> (xfr#1, to-chk=25\/27)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">favicon.ico<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a03,456<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">100<\/span><span style=\"color: #9ECBFF\">%\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">3.29<\/span><span style=\"color: #9ECBFF\">MB\/s\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #9ECBFF\">:00:00<\/span><span style=\"color: #E1E4E8\"> (xfr#2, to-chk=24\/27)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">index.html<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02,345<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">100<\/span><span style=\"color: #9ECBFF\">%\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2.24<\/span><span style=\"color: #9ECBFF\">MB\/s\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #9ECBFF\">:00:00<\/span><span style=\"color: #E1E4E8\"> (xfr#3, to-chk=23\/27)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sent<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">567<\/span><span style=\"color: #9ECBFF\">,890<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">bytes\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">received<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #9ECBFF\">,234<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">bytes\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">379<\/span><span style=\"color: #9ECBFF\">,416.00<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">bytes\/sec<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">total<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">size<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">567<\/span><span style=\"color: #9ECBFF\">,890\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">speedup<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1.00<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Deployment<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">completed<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">successfully<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Verify deployment success by checking that your website is accessible at your domain and that all functionality works correctly.<\/li>\n\n\n\n<li>Troubleshoot any failures by examining the error logs in the GitHub Actions interface. Common issues and their solutions:\n<ul class=\"wp-block-list\">\n<li><strong>SSH connection failures<\/strong>: Check your SSH key format and ensure it\u2019s properly formatted in the secret<\/li>\n\n\n\n<li><strong>Permission denied errors<\/strong>: Verify your SSH key is authorized in cPanel<\/li>\n\n\n\n<li><strong>Build failures<\/strong>: Check your <strong>package.json<\/strong> for missing dependencies<\/li>\n\n\n\n<li><strong>Rsync errors<\/strong>: Confirm your deployment path is correct in the <strong>INMOTION_PATH<\/strong> secret<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Managing the Lovable to Main Branch Workflow<\/h2>\n\n\n\n<p>Lovable typically creates its own branch for development work, separate from your main branch. To deploy changes from Lovable to your live website, you\u2019ll need to merge these changes into your main branch, which then triggers your deployment workflow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Understanding Branch Structure<\/h3>\n\n\n\n<p>When Lovable connects to GitHub, it often creates a branch called \u201clovable\u201d or similar for its development work. This keeps Lovable\u2019s AI-generated changes separate from your main branch until you\u2019re ready to deploy them. Your GitHub Actions workflow is configured to deploy only from the main branch, so you control when changes go live.<\/p>\n\n\n\n<p>This branching strategy gives you the opportunity to review Lovable\u2019s changes before they\u2019re deployed to your live website. You can test functionality, make additional modifications, or even revert changes if needed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Manual Merge Process<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Check your repository\u2019s branch structure by navigating to your GitHub repository homepage and clicking on the branch dropdown (usually shows \u201cmain\u201d by default). You should see your main branch and the Lovable development branch (often named \u201clovable\u201d or similar).<\/li>\n\n\n\n<li>Review recent commits on the Lovable branch:\n<ul class=\"wp-block-list\">\n<li>Click on the Lovable branch to switch to it<\/li>\n\n\n\n<li>Examine recent commits by clicking on the commit history. You\u2019ll see entries like:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Update component styling and layout\nAdd new user authentication features\u00a0\u00a0\nFix database connection issues\nImplement responsive design improvements<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">Update component styling and layout<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Add new user authentication features\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Fix database connection issues<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Implement responsive design improvements<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Review the changes by clicking on individual commits to see what code was modified<\/li>\n<\/ul>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Create a pull request to merge Lovable changes into your main branch:\n<ul class=\"wp-block-list\">\n<li>Click \u201c<strong>Pull requests<\/strong>\u201d in the top navigation of your repository<\/li>\n\n\n\n<li>Click \u201c<strong>New pull request<\/strong>\u201d (green button on the right)<\/li>\n\n\n\n<li>Set the base branch to \u201c<strong>main<\/strong>\u201d using the dropdown on the left<\/li>\n\n\n\n<li>Set the compare branch to your Lovable branch using the dropdown on the right<\/li>\n\n\n\n<li>Review the pull request preview which shows you:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Able to merge. These branches can be automatically merged.\nShowing 15 changed files with 234 additions and 67 deletions.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #79B8FF\">Able to merge. These branches can be automatically merged.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Showing 15 changed files with 234 additions and 67 deletions.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Examine the code changes in detail:\n<ul class=\"wp-block-list\">\n<li>Scroll through the \u201c<strong>Files changed<\/strong>\u201d tab to see exactly what modifications were made<\/li>\n\n\n\n<li>Look for critical changes like:\n<ul class=\"wp-block-list\">\n<li>Database configuration updates<\/li>\n\n\n\n<li>New component additions<\/li>\n\n\n\n<li>Styling modifications<\/li>\n\n\n\n<li>API endpoint changes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Add comments on specific lines if you notice issues that need attention<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Add a descriptive pull request title and description:\n<ul class=\"wp-block-list\">\n<li>Title example: \u201cDeploy latest Lovable updates \u2013 authentication and UI improvements\u201d<\/li>\n\n\n\n<li>Description example:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>This PR includes the following updates from Lovable:\n\n- New user authentication system\n- Improved responsive design\n- Database connection optimizations\n- UI component updates\n\nReady for production deployment.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">This PR includes the following updates from Lovable:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> New user authentication system<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Improved responsive design<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Database connection optimizations<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> UI component updates<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Ready for production deployment.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Merge the pull request once you\u2019re satisfied with the changes:\n<ul class=\"wp-block-list\">\n<li>Click \u201c<strong>Merge pull request<\/strong>\u201d (green button)<\/li>\n\n\n\n<li>Choose your merge strategy:\n<ul class=\"wp-block-list\">\n<li><strong>Create a merge commit<\/strong>: Preserves the branch history<\/li>\n\n\n\n<li><strong>Squash and merge<\/strong>: Combines all commits into one clean commit<\/li>\n\n\n\n<li><strong>Rebase and merge<\/strong>: Replays commits without creating a merge commit<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Click \u201c<strong>Confirm merge<\/strong>\u201d to complete the process<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Monitor the automatic deployment that triggers after merging:\n<ul class=\"wp-block-list\">\n<li>Navigate to the \u201c<strong>Actions<\/strong>\u201d tab immediately after merging<\/li>\n\n\n\n<li>Click on the latest workflow run that should be starting<\/li>\n\n\n\n<li>Watch the deployment progress in real-time:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Checkout code\nSetup Node.js environment\u00a0\u00a0\nInstall dependencies\nBuild React application\nSetup SSH key for deployment\nDeploy to InMotion Hosting<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #79B8FF\">Checkout code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Setup Node.js environment\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Install dependencies<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Build React application<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Setup SSH key for deployment<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Deploy to InMotion Hosting<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"8\" class=\"wp-block-list\">\n<li>Verify deployment success by checking your live website:\n<ul class=\"wp-block-list\">\n<li>Visit your domain in a web browser<\/li>\n\n\n\n<li>Test key functionality that was updated<\/li>\n\n\n\n<li>Check browser console for any JavaScript errors<\/li>\n\n\n\n<li>Test on mobile devices if responsive changes were made<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Alternative: Command Line Merge Process<\/h3>\n\n\n\n<p>If you prefer working from the command line, you can merge branches locally:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Clone your repository if you haven\u2019t already:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git clone https:\/\/github.com\/yourusername\/your-repo-name.git\ncd your-repo-name<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">clone<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">https:\/\/github.com\/yourusername\/your-repo-name.git<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">cd<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">your-repo-name<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Fetch all branches from your remote repository:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git fetch origin<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">fetch<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>List all branches to see your available branches:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git branch -a<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">branch<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-a<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Output:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>* main\n\u00a0\u00a0remotes\/origin\/main\n\u00a0\u00a0remotes\/origin\/lovable<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\"> main<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0remotes\/origin\/main<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0remotes\/origin\/lovable<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Switch to your main branch:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git checkout main<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">checkout<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Pull the latest changes from the remote main branch:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git pull origin main<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">pull<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li>Merge the Lovable branch into main:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git merge origin\/lovable<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">merge<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin\/lovable<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"8\" class=\"wp-block-list\">\n<li>If the merge is successful, you\u2019ll see:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Auto-merging src\/components\/UserProfile.js\nAuto-merging src\/styles\/main.css\nMerge made by the 'recursive' strategy.\n15 files changed, 234 insertions(+), 67 deletions(-)\ncreate mode 100644 src\/components\/NewFeature.js<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">Auto-merging<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">src\/components\/UserProfile.js<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Auto-merging<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">src\/styles\/main.css<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Merge<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">made<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">by<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">the<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'recursive'<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">strategy.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">15<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">files<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">changed,<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">234<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">insertions<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">+<\/span><span style=\"color: #E1E4E8\">)<\/span><span style=\"color: #9ECBFF\">,<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">67<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">deletions<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">-<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">create<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">mode<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">100644<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">src\/components\/NewFeature.js<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"9\" class=\"wp-block-list\">\n<li>Push the merged changes to trigger deployment:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>it push origin main<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">it<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">push<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"10\" class=\"wp-block-list\">\n<li>Handle merge conflicts if they occur:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># If you see a message like:\n# Auto-merging src\/config\/database.js\n# CONFLICT (content): Merge conflict in src\/config\/database.js\n# Automatic merge failed; fix conflicts and then commit the result.\n# Edit the conflicted files to resolve conflicts\nnano src\/config\/database.js\n\n# Look for conflict markers and resolve them:\n# &lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD\n# Your current code\n# =======\n# Lovable's code\n# &gt;&gt;&gt;&gt;&gt;&gt;&gt; origin\/lovable\n# After resolving conflicts, add the files\ngit add src\/config\/database.js\n\n# Complete the merge\ngit commit -m \"Merge lovable branch with conflict resolution\"\n\n# Push the changes\ngit push origin main<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># If you see a message like:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Auto-merging src\/config\/database.js<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># CONFLICT (content): Merge conflict in src\/config\/database.js<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Automatic merge failed; fix conflicts and then commit the result.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Edit the conflicted files to resolve conflicts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">nano<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">src\/config\/database.js<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Look for conflict markers and resolve them:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># &lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Your current code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># =======<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Lovable's code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># &gt;&gt;&gt;&gt;&gt;&gt;&gt; origin\/lovable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># After resolving conflicts, add the files<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">add<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">src\/config\/database.js<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Complete the merge<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">commit<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-m<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Merge lovable branch with conflict resolution\"<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Push the changes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">push<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Setting Up Automated Merges (Optional)<\/h3>\n\n\n\n<p>For a more streamlined workflow, you can configure automatic merging from the Lovable branch to main under certain conditions. This requires setting up additional GitHub Actions workflows that monitor the Lovable branch and create pull requests automatically.<\/p>\n\n\n\n<p>However, this approach requires careful consideration. Automatic merges mean that Lovable\u2019s changes deploy immediately without human review. This can be convenient for solo developers but may not be appropriate for applications where code review is important.<\/p>\n\n\n\n<p>If you choose to implement automatic merges, consider adding automated testing to your workflow. This ensures that code changes pass basic functionality tests before being deployed to your live website.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Configuring Your React App for Production<\/h2>\n\n\n\n<p>Your React application needs specific configuration adjustments to work correctly in the InMotion hosting environment. These changes ensure that your app loads properly, handles routing correctly, and connects to your production database.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Building for Production<\/h3>\n\n\n\n<p>React applications need to be built for production to achieve optimal performance and compatibility. Your GitHub Actions workflow handles this through the <strong>npm run build<\/strong> command, which creates optimized, minified files ready for deployment.<\/p>\n\n\n\n<p>Verify that your <strong>package.json<\/strong> file includes the correct build script. Most React applications use <strong>react-scripts build<\/strong> or a similar command. If your Lovable project uses a different build system, adjust your workflow accordingly.<\/p>\n\n\n\n<p>The build process creates a <strong>build<\/strong> directory containing all the files needed for your live website. These files are what get deployed to your InMotion hosting account, not your source code. This means your live website contains only the compiled, optimized version of your application.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Handling Client-Side Routing<\/h3>\n\n\n\n<p>If your React application uses client-side routing (React Router), you\u2019ll need to configure your web server to handle route requests correctly. When users navigate to different pages in your app, the web server needs to serve your React application instead of trying to find physical files.<\/p>\n\n\n\n<p>Create a <strong>.htaccess<\/strong> file in your project\u2019s public directory with the following content:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Options -MultiViews\nRewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteRule ^ index.html [QSA,L]<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">Options<\/span><span style=\"color: #E1E4E8\"> -MultiViews<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">RewriteEngine<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">On<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">RewriteCond<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #DBEDFF\">%{REQUEST_FILENAME}<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">!-f<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">RewriteRule<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #DBEDFF\">^<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">index.html<\/span><span style=\"color: #E1E4E8\"> [QSA,L]<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>This configuration tells Apache to serve your <strong>index.html<\/strong> file for any request that doesn\u2019t match an existing file. This allows React Router to handle navigation on the client side while ensuring that direct links to your app\u2019s routes work correctly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Environment Variables and Configuration<\/h3>\n\n\n\n<p>Your production application needs a different configuration than your development environment. Database connections, API endpoints, and other settings should be optimized for your InMotion hosting environment.<\/p>\n\n\n\n<p>React applications typically use environment variables for configuration. Create a <strong>.env.production<\/strong> file in your project root with production-specific settings. These variables will be used automatically when your application is built for production.<\/p>\n\n\n\n<p>Common production environment variables include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Database connection strings<\/li>\n\n\n\n<li>API endpoint URLs<\/li>\n\n\n\n<li>Feature flags or configuration options<\/li>\n\n\n\n<li>Third-party service keys<\/li>\n<\/ul>\n\n\n\n<p>Remember that React environment variables must be prefixed with <code>REACT_APP_<\/code> to be available in your application code. Variables without this prefix are not included in the production build.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Optimizing Performance<\/h3>\n\n\n\n<p>InMotion\u2019s shared hosting environment performs well, but you can optimize your React application for even better performance. Enable gzip compression by adding appropriate headers to your <strong>.htaccess<\/strong> file:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;IfModule mod_deflate.c&gt;\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE text\/plain\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE text\/html\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE text\/xml\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE text\/css\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE application\/xml\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE application\/xhtml+xml\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE application\/rss+xml\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE application\/javascript\n\u00a0\u00a0\u00a0\u00a0AddOutputFilterByType DEFLATE application\/x-javascript\n&lt;\/IfModule&gt;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">&lt;<\/span><span style=\"color: #B392F0\">IfModule<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">mod_deflate.c<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">text\/plain<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">text\/html<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">text\/xml<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">text\/css<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">application\/xml<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">application\/xhtml+xml<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">application\/rss+xml<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">application\/javascript<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">AddOutputFilterByType<\/span><span style=\"color: #E1E4E8\"> DEFLATE <\/span><span style=\"color: #B392F0\">application\/x-javascript<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">&lt;\/<\/span><span style=\"color: #B392F0\">IfModule<\/span><span style=\"color: #E1E4E8\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>This configuration compresses your application files before serving them to users, reducing load times and bandwidth usage.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting Common Deployment Issues<\/h2>\n\n\n\n<p>Even with careful setup, you might encounter issues during deployment. Here are the most common problems and their detailed solutions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Build Failures<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Identify build failure symptoms by checking your GitHub Actions workflow logs. You\u2019ll see error messages like:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Run npm run build\nBuilding React application for production...\n\n&gt; my-app@0.1.0 build\n&gt; react-scripts build\n\nCreating an optimized production build...\nFailed to compile.\nModule not found: Can't resolve 'some-missing-package' in '\/home\/runner\/work\/my-app\/my-app\/src'<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">Run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Building<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">React<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">application<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">production...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #E1E4E8\"> my-app@0.1.0 build<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #E1E4E8\"> react-scripts build<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Creating<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">an<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">optimized<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">production<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Failed<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">compile.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Module<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">not<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">found:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Can't resolve 'some-missing-package' in '\/home\/runner\/work\/my-app\/my-app\/src'<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Check for missing dependencies by comparing your local package.json with your repository:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># On your local machine, list all installed packages\nnpm list --depth=0\n\n# Compare with your package.json dependencies\ncat package.json | grep -A 20 '\"dependencies\"'<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># On your local machine, list all installed packages<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">list<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--depth=0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Compare with your package.json dependencies<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">cat<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">package.json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">|<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">grep<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-A<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">20<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'\"dependencies\"'<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Fix missing dependencies by installing them locally and updating your repository:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Install missing packages\nnpm install missing-package-name\n\n# Verify the package.json is updated\ngit diff package.json\n\n# Commit the changes\ngit add package.json package-lock.json\ngit commit -m \"Add missing dependencies\"\ngit push origin main<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Install missing packages<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">install<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">missing-package-name<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Verify the package.json is updated<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">diff<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">package.json<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Commit the changes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">add<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">package.json<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">package-lock.json<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">commit<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-m<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Add missing dependencies\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">push<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Resolve Node.js version conflicts by checking your local Node.js version:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Check your local Node.js version\nnode --version\n\n# Output: v18.17.0\n# Update your GitHub Actions workflow to match\n# Edit .github\/workflows\/deploy.yml and change:\nnode-version: '18'\u00a0 # Match your local version<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Check your local Node.js version<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">node<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--version<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Output: v18.17.0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Update your GitHub Actions workflow to match<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Edit .github\/workflows\/deploy.yml and change:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">node-version:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'18'\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Match your local version<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Test the build locally before pushing to GitHub:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Clean install dependencies\nrm -rf node_modules package-lock.json\nnpm install\n\n# Run the build command\nnpm run build\n\n# Check if build directory is created\nls -la build\/<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Clean install dependencies<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">rm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-rf<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">node_modules<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">package-lock.json<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">install<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Run the build command<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Check if build directory is created<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">build\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Deployment Connection Issues<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Diagnose SSH connection problems by testing your connection manually:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Test SSH connection to your InMotion account\nssh -p 2222 yourusername@yourdomain.com<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Test SSH connection to your InMotion account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>SSH error \u2013 Connection refused:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ssh: connect to host yourdomain.com port 2222: Connection refused<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">ssh:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">connect<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">host<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourdomain.com<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">port<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #9ECBFF\">:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Connection<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">refused<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Solution:<\/strong> Verify your domain name and ensure SSH is enabled in cPanel.\u00a0<\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>SSH error \u2013 Permission denied:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>yourusername@yourdomain.com: Permission denied (publickey).<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">yourusername@yourdomain.com:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Permission<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">denied<\/span><span style=\"color: #E1E4E8\"> (publickey).<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Solution:<\/strong> Check your SSH key configuration:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Verify your SSH key exists\nls -la ~\/.ssh\/id_rsa*\n\n# Check your SSH key is properly formatted\nhead -1 ~\/.ssh\/id_rsa\n\n# Should show: -----BEGIN OPENSSH PRIVATE KEY-----\n\n# Test SSH key authentication\nssh -p 2222 -i ~\/.ssh\/id_rsa yourusername@yourdomain.com<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Verify your SSH key exists<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">~\/.ssh\/id_rsa<\/span><span style=\"color: #79B8FF\">*<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Check your SSH key is properly formatted<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">head<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-1<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">~\/.ssh\/id_rsa<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Should show: -----BEGIN OPENSSH PRIVATE KEY-----<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Test SSH key authentication<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-i<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">~\/.ssh\/id_rsa<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Fix GitHub Actions SSH key issues:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># On your local machine, display your private key\ncat ~\/.ssh\/id_rsa\n\n# Copy the ENTIRE key including the BEGIN and END lines\n# Update your GitHub secret INMOTION_SSH_KEY with this content<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># On your local machine, display your private key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">cat<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">~\/.ssh\/id_rsa<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Copy the ENTIRE key including the BEGIN and END lines<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Update your GitHub secret INMOTION_SSH_KEY with this content<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Verify rsync command syntax by testing it manually:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Test the rsync command from your local machine\nrsync -avz --dry-run --delete \\\n\u00a0\u00a0-e \"ssh -p 2222 -o StrictHostKeyChecking=no\" \\\n\u00a0\u00a0.\/build\/ \\\n\nyourusername@yourdomain.com:\/home\/yourusername\/public_html\/your-app\/\n\nExpected output:\nbuilding file list ... done\n\n.\/\nindex.html\nstatic\/\nstatic\/css\/\nstatic\/css\/main.abc123.css\nstatic\/js\/\nstatic\/js\/main.def456.js\n\nsent 1,234 bytes\u00a0 received 56 bytes\u00a0 516.00 bytes\/sec\n\ntotal size is 567,890\u00a0 speedup is 440.38 (DRY RUN)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Test the rsync command from your local machine<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">rsync<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-avz<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--dry-run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--delete<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0-e <\/span><span style=\"color: #9ECBFF\">\"ssh -p 2222 -o StrictHostKeyChecking=no\"<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0.\/build\/ <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">yourusername@yourdomain.com:\/home\/yourusername\/public_html\/your-app\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Expected<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">output:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">building<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">file<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">list<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">...<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">done<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">.\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">index.html<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">static\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">static\/css\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">static\/css\/main.abc123.css<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">static\/js\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">static\/js\/main.def456.js<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sent<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #9ECBFF\">,234<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">bytes\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">received<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">56<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">bytes\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">516.00<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">bytes\/sec<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">total<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">size<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">567<\/span><span style=\"color: #9ECBFF\">,890\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">speedup<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">is<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">440.38<\/span><span style=\"color: #E1E4E8\"> (DRY <\/span><span style=\"color: #9ECBFF\">RUN<\/span><span style=\"color: #E1E4E8\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">File Permission Problems<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Check file permissions on your hosting account:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># SSH into your InMotion account\nssh -p 2222 yourusername@yourdomain.com\n\n# Check permissions on your web directory\nls -la \/home\/yourusername\/public_html\/your-app\/<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># SSH into your InMotion account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Check permissions on your web directory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Expected output:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>drwxr-xr-x\u00a0 3 yourusername yourusername\u00a0 4096 Oct 15 10:30 .\ndrwxr-xr-x\u00a0 8 yourusername yourusername\u00a0 4096 Oct 15 10:25 ..\n-rw-r--r--\u00a0 1 yourusername yourusername\u00a0 1234 Oct 15 10:30 index.html\ndrwxr-xr-x\u00a0 2 yourusername yourusername\u00a0 4096 Oct 15 10:30 static<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">drwxr-xr-x\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">3<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">4096<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Oct<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">15<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">10<\/span><span style=\"color: #9ECBFF\">:30<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">drwxr-xr-x\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">8<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">4096<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Oct<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">15<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">10<\/span><span style=\"color: #9ECBFF\">:25<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">..<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">-rw-r--r--\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">1234<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Oct<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">15<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">10<\/span><span style=\"color: #9ECBFF\">:30<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">index.html<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">drwxr-xr-x\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">4096<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Oct<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">15<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">10<\/span><span style=\"color: #9ECBFF\">:30<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">static<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Fix incorrect file permissions:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Set correct permissions for directories (755)\nfind \/home\/yourusername\/public_html\/your-app\/ -type d -exec chmod 755 {} \\;\n\n# Set correct permissions for files (644)\nfind \/home\/yourusername\/public_html\/your-app\/ -type f -exec chmod 644 {} \\;\n\n# Verify permissions are correct\nls -la \/home\/yourusername\/public_html\/your-app\/<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Set correct permissions for directories (755)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">find<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-type<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">d<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-exec<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">chmod<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">755<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">{}<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Set correct permissions for files (644)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">find<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-type<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">f<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-exec<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">chmod<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">644<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">{}<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Verify permissions are correct<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Update your GitHub Actions workflow to set permissions automatically:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>- name: Deploy to InMotion Hosting\n\n\u00a0\u00a0run: |\n\n\u00a0\u00a0\u00a0\u00a0echo \"Starting deployment to InMotion Hosting...\"\n\n\u00a0\u00a0\u00a0\u00a0rsync -avz --delete --progress \\\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--chmod=D755,F644 \\\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-e \"ssh -p 2222 -o StrictHostKeyChecking=no\" \\\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0build\/ \\\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.SSH_PATH }}\n\n\u00a0\u00a0\u00a0\u00a0echo \"Deployment completed successfully\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">-<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">name:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Deploy<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">to<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">InMotion<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">Hosting<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0run:<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">|<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0\u00a0\u00a0echo<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Starting deployment to InMotion Hosting...\"<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0\u00a0\u00a0rsync<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-avz<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--delete<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--progress<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--chmod=D755,F644 <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-e <\/span><span style=\"color: #9ECBFF\">\"ssh -p 2222 -o StrictHostKeyChecking=no\"<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0build\/ <\/span><span style=\"color: #79B8FF\">\\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.SSH_PATH }}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">\u00a0\u00a0\u00a0\u00a0echo<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Deployment completed successfully\"<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Database Connection Errors<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Test database connectivity from your hosting account:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># SSH into your InMotion account\nssh -p 2222 yourusername@yourdomain.com\n\n# Test PostgreSQL connection\npsql -h localhost -p 2222 -U yourusername_dbuser -d yourusername_dbname<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># SSH into your InMotion account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Test PostgreSQL connection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">psql<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-h<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">localhost<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-U<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername_dbuser<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-d<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername_dbname<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Successful connection output:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Password for user yourusername_dbuser: [enter your password]\n\npsql (13.7)\n\nType \"help\" for help.\n\nyourusername_dbname=&gt; SELECT version();\n\nversion\n\n----------------------------------------------------------------------------------------------------\n\nPostgreSQL 13.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)\n\n(1 row)\n\nyourusername_dbname=&gt; \\q<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #79B8FF\">Password for user yourusername_dbuser: [enter your password]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">psql (13.7)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Type \"help\" for help.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">yourusername_dbname=&gt; SELECT version();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">version<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">----------------------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">PostgreSQL 13.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">(1 row)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">yourusername_dbname=&gt; \\q<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Database Error \u2013 Connection refused:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>psql: error: connection to server at \"localhost\" (127.0.0.1), port 2222 failed: Connection refused<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #79B8FF\">psql: error: connection to server at \"localhost\" (127.0.0.1), port 2222 failed: Connection refused<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Solution: <\/strong>Check that PostgreSQL is running and your database exists in cPanel.<\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Database Error \u2013 Authentication failed:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>psql: error: connection to server at \"localhost\" (127.0.0.1), port 2222 failed: FATAL: password authentication failed for user \"yourusername_dbuser\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #79B8FF\">psql: error: connection to server at \"localhost\" (127.0.0.1), port 2222 failed: FATAL: password authentication failed for user \"yourusername_dbuser\"<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Solution:<\/strong> Verify your database username and password in cPanel.<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Test database connection from your application:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Create a test script on your hosting account\ncat &gt; test_db_connection.php &lt;&lt; 'EOF'\n\n&lt;?php\n$host = 'localhost';\n$port = '2222';\n$dbname = 'yourusername_dbname';\n$user = 'yourusername_dbuser';\n$password = 'your_password';\n$dsn = \"pgsql:host=$host;port=$port;dbname=$dbname\";\n\ntry {\n\u00a0\u00a0\u00a0\u00a0$pdo = new PDO($dsn, $user, $password);\n\u00a0\u00a0\u00a0\u00a0echo \"Database connection successful!\\n\";\n\u00a0\u00a0\u00a0\u00a0$stmt = $pdo-&gt;query('SELECT version()');\n\u00a0\u00a0\u00a0\u00a0$version = $stmt-&gt;fetchColumn();\n\u00a0\u00a0\u00a0\u00a0echo \"PostgreSQL version: $version\\n\";\n\n} catch (PDOException $e) {\n\u00a0\u00a0\u00a0\u00a0echo \"Database connection failed: \" . $e-&gt;getMessage() . \"\\n\";\n}\n?&gt;\n\nEOF\n\n# Run the test script\nphp test_db_connection.php<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Create a test script on your hosting account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">cat<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">test_db_connection<\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #79B8FF\">php<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">&lt;&lt;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'EOF'<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #79B8FF\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">$host <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'localhost'<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">$port <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'2222'<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">$dbname <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'yourusername_dbname'<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">$user <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'yourusername_dbuser'<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">$password <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'your_password'<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">$dsn <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"pgsql:host=<\/span><span style=\"color: #E1E4E8\">$host<\/span><span style=\"color: #9ECBFF\">;port=<\/span><span style=\"color: #E1E4E8\">$port<\/span><span style=\"color: #9ECBFF\">;dbname=<\/span><span style=\"color: #E1E4E8\">$dbname<\/span><span style=\"color: #9ECBFF\">\"<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">try<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #E1E4E8\">$pdo <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #E1E4E8\">($dsn, $user, $password);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">\u00a0\u00a0\u00a0\u00a0echo<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Database connection successful!<\/span><span style=\"color: #79B8FF\">\\n<\/span><span style=\"color: #9ECBFF\">\"<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #E1E4E8\">$stmt <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> $pdo<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">query<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">'<\/span><span style=\"color: #F97583\">SELECT<\/span><span style=\"color: #9ECBFF\"> <\/span><span style=\"color: #F97583\">version<\/span><span style=\"color: #9ECBFF\">()'<\/span><span style=\"color: #E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #E1E4E8\">$version <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\"> $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">fetchColumn<\/span><span style=\"color: #E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">\u00a0\u00a0\u00a0\u00a0echo<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"PostgreSQL version: <\/span><span style=\"color: #E1E4E8\">$version<\/span><span style=\"color: #79B8FF\">\\n<\/span><span style=\"color: #9ECBFF\">\"<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">} <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #E1E4E8\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #E1E4E8\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">\u00a0\u00a0\u00a0\u00a0echo<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"Database connection failed: \"<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #E1E4E8\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #E1E4E8\">() <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\"<\/span><span style=\"color: #79B8FF\">\\n<\/span><span style=\"color: #9ECBFF\">\"<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">EOF<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Run the test script<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">php<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">test_db_connection<\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #79B8FF\">php<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Update your application\u2019s database configuration with the correct connection parameters:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ In your React app's environment variables\n\nREACT_APP_DB_HOST=localhost\nREACT_APP_DB_PORT=2222\nREACT_APP_DB_NAME=yourusername_dbname\nREACT_APP_DB_USER=yourusername_dbuser\nREACT_APP_DB_PASSWORD=your_secure_password\n\n\/\/ Test the connection in your application\n\nconsole.log('Database config:', {\n\u00a0\u00a0host: process.env.REACT_APP_DB_HOST,\n\u00a0\u00a0port: process.env.REACT_APP_DB_PORT,\n\u00a0\u00a0database: process.env.REACT_APP_DB_NAME,\n\u00a0\u00a0user: process.env.REACT_APP_DB_USER\n});<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\">\/\/ In your React app's environment variables<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">REACT_APP_DB_HOST<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">localhost<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">REACT_APP_DB_PORT<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #79B8FF\">2222<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">REACT_APP_DB_NAME<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">yourusername_dbname<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">REACT_APP_DB_USER<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">yourusername_dbuser<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">REACT_APP_DB_PASSWORD<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #E1E4E8\">your_secure_password<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\">\/\/ Test the connection in your application<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">console.<\/span><span style=\"color: #B392F0\">log<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #9ECBFF\">'Database config:'<\/span><span style=\"color: #E1E4E8\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0host: process.env.<\/span><span style=\"color: #79B8FF\">REACT_APP_DB_HOST<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0port: process.env.<\/span><span style=\"color: #79B8FF\">REACT_APP_DB_PORT<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0database: process.env.<\/span><span style=\"color: #79B8FF\">REACT_APP_DB_NAME<\/span><span style=\"color: #E1E4E8\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0user: process.env.<\/span><span style=\"color: #79B8FF\">REACT_APP_DB_USER<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">});<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Advanced Troubleshooting Commands<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Monitor your deployment in real-time:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Watch GitHub Actions workflow progress\n# (Install GitHub CLI: https:\/\/cli.github.com\/)\ngh run watch\n\n# View detailed logs\ngh run view --log<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Watch GitHub Actions workflow progress<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># (Install GitHub CLI: https:\/\/cli.github.com\/)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">gh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">watch<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># View detailed logs<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">gh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">run<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">view<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--log<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Debug SSH connection issues:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Test SSH connection with verbose output\nssh -p 2222 -v yourusername@yourdomain.com\n\n# Test SSH key specifically\nssh -p 2222 -i ~\/.ssh\/id_rsa -v yourusername@yourdomain.com<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Test SSH connection with verbose output<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-v<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Test SSH key specifically<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-i<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">~\/.ssh\/id_rsa<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-v<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Verify your deployed files:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># SSH into your hosting account\nssh -p 2222 yourusername@yourdomain.com\n\n# Check deployed files\nls -la \/home\/yourusername\/public_html\/your-app\/\n\n# Verify file contents\nhead -10 \/home\/yourusername\/public_html\/your-app\/index.html\n\n# Check file timestamps\nfind \/home\/yourusername\/public_html\/your-app\/ -type f -exec ls -la {} \\;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># SSH into your hosting account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Check deployed files<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Verify file contents<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">head<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-10<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/index.html<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Check file timestamps<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">find<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-type<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">f<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-exec<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">{}<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Updating Your Deployed Application<\/h2>\n\n\n\n<p>Once your initial deployment is complete, you\u2019ll need to manage ongoing updates as you continue developing your application in Lovable. This process becomes routine once you understand the workflow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Development Workflow<\/h3>\n\n\n\n<p>Your typical development cycle will involve making changes in Lovable, which automatically sync to your Lovable branch on GitHub. When you\u2019re ready to deploy updates, you\u2019ll merge the Lovable branch into your main branch, triggering an automatic deployment.<\/p>\n\n\n\n<p>Monitor your GitHub repository to see when Lovable pushes new changes. You\u2019ll receive notifications about commits, and you can review the changes before deciding to deploy them.<\/p>\n\n\n\n<p>Consider implementing a staging environment where you can test changes before deploying to your live website. This gives you an additional layer of quality control and helps catch issues before they affect your users.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Rollback Procedures<\/h3>\n\n\n\n<p>If a deployment causes issues on your live website, you need a quick way to revert to a previous version. GitHub maintains a complete history of your code, making rollbacks straightforward.<\/p>\n\n\n\n<p>To rollback, identify the last known good commit in your main branch. Create a new branch from this commit, then merge it back into main. This will trigger a new deployment with your previous code.<\/p>\n\n\n\n<p>Alternatively, you can revert specific commits using GitHub\u2019s interface. Navigate to the problematic commit and click \u201cRevert\u201d to create a new commit that undoes the changes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring Deployments<\/h3>\n\n\n\n<p>Keep track of your deployments by monitoring the GitHub Actions workflow results. Failed deployments should be investigated immediately to prevent your website from becoming out of sync with your code.<\/p>\n\n\n\n<p>Set up notifications for workflow failures so you\u2019re alerted when deployments don\u2019t complete successfully. GitHub can send email notifications or integrate with Slack and other communication tools.<\/p>\n\n\n\n<p>Consider adding health checks to your deployment workflow. These can verify that your website is accessible and functioning correctly after each deployment.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">High-Level Process Summary<\/h2>\n\n\n\n<p>Here\u2019s the complete process for deploying updates to your Lovable application:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Initial Setup (One-Time Configuration)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Connect Lovable to GitHub:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Access your Lovable project editor<\/li>\n\n\n\n<li>Click \u201cGitHub\u201d \u2192 \u201cConnect to GitHub\u201d in the top-right corner<\/li>\n\n\n\n<li>Authorize the Lovable GitHub App with appropriate permissions<\/li>\n\n\n\n<li>Select your GitHub account or organization<\/li>\n\n\n\n<li>Click \u201cCreate Repository\u201d to establish the connection<\/li>\n\n\n\n<li>Verify the repository appears in your GitHub account<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Configure InMotion cPanel Git Repository:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Log into your InMotion cPanel account<\/li>\n\n\n\n<li>Navigate to \u201cFiles\u201d \u2192 \u201cGit Version Control\u201d<\/li>\n\n\n\n<li>Click \u201cCreate\u201d and toggle \u201cClone a Repository\u201d<\/li>\n\n\n\n<li>Enter your GitHub repository\u2019s HTTPS clone URL<\/li>\n\n\n\n<li>Set repository path (e.g., public_html\/your-app-name)<\/li>\n\n\n\n<li>Provide a descriptive repository name<\/li>\n\n\n\n<li>Click \u201cCreate\u201d and wait for completion<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Set up SSH authentication:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Generate SSH key pair on your local machine: ssh-keygen -t rsa -b 4096<\/li>\n\n\n\n<li>Copy your public key: cat ~\/.ssh\/id_rsa.pub<\/li>\n\n\n\n<li>Add the public key to cPanel under \u201cSSH Access\u201d \u2192 \u201cManage SSH Keys\u201d<\/li>\n\n\n\n<li>Test SSH connection: ssh -p 2222 yourusername@yourdomain.com<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Create PostgreSQL database (if needed):<\/strong>\n<ul class=\"wp-block-list\">\n<li>Navigate to \u201cDatabases\u201d \u2192 \u201cPostgreSQL Databases\u201d in cPanel<\/li>\n\n\n\n<li>Create new database with descriptive name<\/li>\n\n\n\n<li>Create database user with strong password<\/li>\n\n\n\n<li>Grant all privileges to the user for the database<\/li>\n\n\n\n<li>Update your application\u2019s database configuration<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Configure GitHub Actions workflow:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Create .github\/workflows\/deploy.yml in your repository<\/li>\n\n\n\n<li>Set up the complete workflow with build and deployment steps<\/li>\n\n\n\n<li>Configure repository secrets in GitHub Settings:\n<ul class=\"wp-block-list\">\n<li>INMOTION_HOST: Your domain name<\/li>\n\n\n\n<li>INMOTION_USERNAME: Your cPanel username<\/li>\n\n\n\n<li>INMOTION_SSH_KEY: Your private SSH key content<\/li>\n\n\n\n<li>INMOTION_PATH: Path to your web directory<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Test the complete pipeline:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Make a test commit to your main branch<\/li>\n\n\n\n<li>Monitor the GitHub Actions workflow execution<\/li>\n\n\n\n<li>Verify files are deployed correctly to your hosting account<\/li>\n\n\n\n<li>Test your live website functionality<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Regular Update Process<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Develop in Lovable:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Use Lovable\u2019s AI-powered development environment to make changes<\/li>\n\n\n\n<li>Add new features, fix bugs, or modify your application<\/li>\n\n\n\n<li>Lovable automatically commits changes to your GitHub repository\u2019s development branch<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Monitor GitHub repository:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Check your GitHub repository for new commits from Lovable<\/li>\n\n\n\n<li>Review commit messages to understand what changes were made<\/li>\n\n\n\n<li>Example commit messages you might see:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>feat: Add user profile management interface\nfix: Resolve database connection timeout issues\u00a0\u00a0\nstyle: Update responsive design for mobile devices\nrefactor: Improve component organization and structure<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">feat: Add user profile management interface<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">fix: Resolve database connection timeout issues\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">style: Update responsive design for mobile devices<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">refactor: Improve component organization and structure<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Review changes before deployment:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Navigate to your repository and switch to the Lovable branch<\/li>\n\n\n\n<li>Click on recent commits to see detailed code changes<\/li>\n\n\n\n<li>Look for potential issues or conflicts<\/li>\n\n\n\n<li>Consider testing changes in a staging environment if available<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Create and review pull request:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Click \u201cPull requests\u201d \u2192 \u201cNew pull request\u201d<\/li>\n\n\n\n<li>Set base branch to \u201cmain\u201d and compare branch to your Lovable branch<\/li>\n\n\n\n<li>Review the \u201cFiles changed\u201d tab to see all modifications<\/li>\n\n\n\n<li>Add descriptive title and comments<\/li>\n\n\n\n<li>Example pull request descriptions:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Deploy Update: User Authentication &amp; UI Improvements\n\nChanges include:\n- New user login\/registration system\n- Improved dashboard layout\n- Mobile-responsive navigation\n- Database query optimizations\n\nTested functionality:\n- User registration flow\n- Login\/logout process\n- Dashboard responsiveness\n- Database connections<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">Deploy Update: User Authentication &amp; UI Improvements<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Changes include:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> New user login\/registration system<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Improved dashboard layout<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Mobile-responsive navigation<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Database query optimizations<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">Tested functionality:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> User registration flow<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Login\/logout process<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Dashboard responsiveness<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFAB70\">-<\/span><span style=\"color: #E1E4E8\"> Database connections<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><strong>Merge and deploy:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Click \u201cMerge pull request\u201d after review<\/li>\n\n\n\n<li>Choose merge strategy (merge commit, squash, or rebase)<\/li>\n\n\n\n<li>Click \u201cConfirm merge\u201d to complete the process<\/li>\n\n\n\n<li>GitHub Actions automatically triggers deployment workflow<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Monitor deployment progress:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Navigate to \u201cActions\u201d tab immediately after merging<\/li>\n\n\n\n<li>Click on the latest workflow run<\/li>\n\n\n\n<li>Watch each step complete:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Checkout code (15s)\nSetup Node.js environment (22s)\nInstall dependencies (1m 34s)\nBuild React application (2m 12s)\nSetup SSH key for deployment (8s)\nDeploy to InMotion Hosting (1m 45s)\nVerify deployment (12s)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #79B8FF\">Checkout code (15s)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Setup Node.js environment (22s)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Install dependencies (1m 34s)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Build React application (2m 12s)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Setup SSH key for deployment (8s)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Deploy to InMotion Hosting (1m 45s)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">Verify deployment (12s)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li><strong>Verify deployment success:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Visit your live website URL<\/li>\n\n\n\n<li>Test all updated functionality<\/li>\n\n\n\n<li>Check browser console for JavaScript errors<\/li>\n\n\n\n<li>Test responsive design on different devices<\/li>\n\n\n\n<li>Verify database connections are working<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Handle deployment failures (if they occur):<\/strong>\n<ul class=\"wp-block-list\">\n<li>Check GitHub Actions logs for error messages<\/li>\n\n\n\n<li>Common issues and quick fixes:\n<ul class=\"wp-block-list\">\n<li><strong>Build failures<\/strong>: Check package.json dependencies<\/li>\n\n\n\n<li><strong>SSH connection issues<\/strong>: Verify SSH keys and port 2222<\/li>\n\n\n\n<li><strong>Permission errors<\/strong>: Check file permissions in deployment script<\/li>\n\n\n\n<li><strong>Database errors<\/strong>: Verify connection parameters<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Emergency Rollback Process<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Identify the issue:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Determine if the problem is with the latest deployment<\/li>\n\n\n\n<li>Check error logs and user reports<\/li>\n\n\n\n<li>Access your website to confirm the issue<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Perform quick rollback:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Navigate to your GitHub repository<\/li>\n\n\n\n<li>Go to \u201cActions\u201d tab and find the last successful deployment<\/li>\n\n\n\n<li>Click on \u201cRe-run jobs\u201d to redeploy the previous working version<\/li>\n\n\n\n<li>Alternatively, revert the problematic commit:<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>git log --oneline\u00a0 # Find the commit to revert\ngit revert abc123\u00a0 # Revert the specific commit\ngit push origin main\u00a0 # Push the revert commit<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">log<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">--oneline\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Find the commit to revert<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">revert<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">abc123\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Revert the specific commit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">git<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">push<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">origin<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">main\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Push the revert commit<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Verify rollback success:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Check that your website is functioning correctly<\/li>\n\n\n\n<li>Test critical functionality<\/li>\n\n\n\n<li>Monitor for any remaining issues<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Ongoing Maintenance Commands<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Check deployment status:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># SSH into your hosting account\nssh -p 2222 yourusername@yourdomain.com\n\n# Check recent deployments\nls -la \/home\/yourusername\/public_html\/your-app\/\n\n# View file timestamps to confirm latest deployment\nfind \/home\/yourusername\/public_html\/your-app\/ -type f -exec ls -la {} \\; | head -10<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># SSH into your hosting account<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ssh<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername@yourdomain.com<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Check recent deployments<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># View file timestamps to confirm latest deployment<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">find<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\/home\/yourusername\/public_html\/your-app\/<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-type<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">f<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-exec<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">ls<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-la<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">{}<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">\\;<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">|<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-10<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Monitor GitHub Actions usage:\n<ul class=\"wp-block-list\">\n<li>Check your GitHub Actions usage in repository settings<\/li>\n\n\n\n<li>Review workflow run history for patterns<\/li>\n\n\n\n<li>Optimize workflows if needed to reduce build times<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Database maintenance:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Connect to your PostgreSQL database\npsql -h localhost -p 2222 -U yourusername_dbuser -d yourusername_dbname\n\n# Check database size and health\nSELECT pg_size_pretty(pg_database_size('yourusername_dbname'));\n\n# View active connections\nSELECT * FROM pg_stat_activity WHERE datname = 'yourusername_dbname';<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Connect to your PostgreSQL database<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">psql<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-h<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">localhost<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-p<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">2222<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-U<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername_dbuser<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">-d<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">yourusername_dbname<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Check database size and health<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">SELECT<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">pg_size_pretty<\/span><span style=\"color: #E1E4E8\">(<\/span><span style=\"color: #B392F0\">pg_database_size(<\/span><span style=\"color: #B392F0\">'yourusername_dbname'<\/span><span style=\"color: #E1E4E8\">));<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># View active connections<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">SELECT<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">*<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">FROM<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">pg_stat_activity<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">WHERE<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">datname<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">=<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">'yourusername_dbname'<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Update dependencies periodically:<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(26px, 1.625rem, 39px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># In your local development environment\nnpm outdated\u00a0 # Check for outdated packages\nnpm update\u00a0 \u00a0 # Update to latest compatible versions\nnpm audit \u00a0 \u00a0 # Check for security vulnerabilities\nnpm audit fix # Fix security issues automatically<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># In your local development environment<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">outdated\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Check for outdated packages<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">update\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Update to latest compatible versions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">audit<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">\u00a0<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Check for security vulnerabilities<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">npm<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">audit<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #9ECBFF\">fix<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #6A737D\"># Fix security issues automatically<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Performance Optimization Checklist<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Monitor website performance:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Use Google PageSpeed Insights to test your site<\/li>\n\n\n\n<li>Check Core Web Vitals metrics<\/li>\n\n\n\n<li>Monitor loading times after each deployment<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Optimize build process:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Enable npm cache in GitHub Actions (already configured in the workflow)<\/li>\n\n\n\n<li>Consider using build caching for faster deployments<\/li>\n\n\n\n<li>Optimize image assets and file sizes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Database optimization:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Review database query performance<\/li>\n\n\n\n<li>Add indexes for frequently queried fields<\/li>\n\n\n\n<li>Monitor database connection pool usage<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion and Next Steps<\/h2>\n\n\n\n<p>You\u2019ve successfully created a robust deployment pipeline that connects Lovable\u2019s AI-powered development environment with professional hosting through InMotion Hosting. This setup gives you the benefits of rapid development while maintaining the reliability and control needed for production applications.<\/p>\n\n\n\n<p>Your deployment workflow now automatically syncs changes from Lovable to GitHub, builds your React application for production, and deploys updates to your InMotion Hosting account. The database migration from Supabase to PostgreSQL provides you with full control over your application\u2019s data layer.<\/p>\n\n\n\n<p>Moving forward, you can continue developing in Lovable while having confidence that your changes will be deployed reliably to production. The version control integration ensures you have a complete history of your application\u2019s development and the ability to roll back changes if needed.<\/p>\n\n\n\n<p>Consider expanding your deployment pipeline with additional features like staging environments for testing changes before production deployment, automated testing to catch issues before they reach users, and monitoring tools to track your application\u2019s performance and uptime.<\/p>\n\n\n\n<p>The foundation you\u2019ve built supports scaling your application as your needs grow. You can add team members to your development process, implement more sophisticated database features, and take advantage of InMotion Hosting\u2019s scalability options as your user base expands.<\/p>\n\n\n\n<p>This deployment approach represents a professional development workflow that bridges the gap between AI-assisted development and production hosting, giving you the tools to build and maintain sophisticated web applications efficiently and reliably.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<p>Ready to take your web development to the next level? InMotion Hosting\u2019s robust <a href=\"https:\/\/www.inmotionhosting.com\/shared-hosting\">shared hosting<\/a> platform provides the perfect foundation for your Lovable-created applications. With full Git integration, PostgreSQL support, and expert migration assistance, you can focus on building great applications while we handle the hosting infrastructure.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You&#8217;ve built an incredible React web app using Lovable&#8217;s AI-powered development platform, and now you&#8217;re ready to deploy it to your InMotion Hosting shared hosting . This comprehensive guide walks you through the entire process of connecting Lovable to GitHub and deploying your application to any cPanel-based InMotion Hosting server environment using Git version control.<a class=\"moretag\" href=\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\"> Read More ><\/a><\/p>\n","protected":false},"author":28953,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4611,4309],"tags":[],"class_list":["post-130594","post","type-post","status-publish","format-standard","hentry","category-ai-tools","category-git"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Publish Your Lovable App to InMotion Hosting via GitHub<\/title>\n<meta name=\"description\" content=\"Learn how to publish your Lovable React web app to your InMotion Hosting account using GitHub and Shared Hosting.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Publish Your Lovable App to InMotion Hosting via GitHub\" \/>\n<meta property=\"og:description\" content=\"Learn how to publish your Lovable React web app to your InMotion Hosting account using GitHub and Shared Hosting.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\" \/>\n<meta property=\"og:site_name\" content=\"InMotion Hosting Support Center\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inmotionhosting\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-08T23:07:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-14T16:36:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Todd Robinson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@InMotionHosting\" \/>\n<meta name=\"twitter:site\" content=\"@InMotionHosting\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Todd Robinson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\"},\"author\":{\"name\":\"Todd Robinson\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/87423443495bb1e33c4cbc0acd6d2c5d\"},\"headline\":\"Publish Your Lovable Created React WebApp to InMotion Hosting Shared Hosting via GitHub\",\"datePublished\":\"2025-07-08T23:07:33+00:00\",\"dateModified\":\"2025-07-14T16:36:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\"},\"wordCount\":5378,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png\",\"articleSection\":[\"AI Tools\",\"Git\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\",\"name\":\"How to Publish Your Lovable App to InMotion Hosting via GitHub\",\"isPartOf\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png\",\"datePublished\":\"2025-07-08T23:07:33+00:00\",\"dateModified\":\"2025-07-14T16:36:23+00:00\",\"description\":\"Learn how to publish your Lovable React web app to your InMotion Hosting account using GitHub and Shared Hosting.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png\",\"contentUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png\",\"width\":1200,\"height\":630,\"caption\":\"How to Publish Your Lovable Created React WebApp to InMotion Hosting via GitHub Hero Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.inmotionhosting.com\/support\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Publish Your Lovable Created React WebApp to InMotion Hosting Shared Hosting via GitHub\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#website\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/\",\"name\":\"InMotion Hosting Support Center\",\"description\":\"Web Hosting Support &amp; Tutorials\",\"publisher\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.inmotionhosting.com\/support\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\",\"name\":\"InMotion Hosting\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg\",\"contentUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg\",\"width\":696,\"height\":696,\"caption\":\"InMotion Hosting\"},\"image\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/inmotionhosting\/\",\"https:\/\/x.com\/InMotionHosting\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/87423443495bb1e33c4cbc0acd6d2c5d\",\"name\":\"Todd Robinson\",\"description\":\"I would really appreciate any thoughts and guidance you might want to share. Please connect with me on LinkedIn or leave a comment below with requests or questions \u2014 even corrections if I managed to mess up something!\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/toddrobinson2\/\"],\"url\":\"https:\/\/www.inmotionhosting.com\/support\/author\/todd_r\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Publish Your Lovable App to InMotion Hosting via GitHub","description":"Learn how to publish your Lovable React web app to your InMotion Hosting account using GitHub and Shared Hosting.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/","og_locale":"en_US","og_type":"article","og_title":"How to Publish Your Lovable App to InMotion Hosting via GitHub","og_description":"Learn how to publish your Lovable React web app to your InMotion Hosting account using GitHub and Shared Hosting.","og_url":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/","og_site_name":"InMotion Hosting Support Center","article_publisher":"https:\/\/www.facebook.com\/inmotionhosting\/","article_published_time":"2025-07-08T23:07:33+00:00","article_modified_time":"2025-07-14T16:36:23+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png","type":"image\/png"}],"author":"Todd Robinson","twitter_card":"summary_large_image","twitter_creator":"@InMotionHosting","twitter_site":"@InMotionHosting","twitter_misc":{"Written by":"Todd Robinson","Est. reading time":"25 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#article","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/"},"author":{"name":"Todd Robinson","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/87423443495bb1e33c4cbc0acd6d2c5d"},"headline":"Publish Your Lovable Created React WebApp to InMotion Hosting Shared Hosting via GitHub","datePublished":"2025-07-08T23:07:33+00:00","dateModified":"2025-07-14T16:36:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/"},"wordCount":5378,"commentCount":0,"publisher":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#organization"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png","articleSection":["AI Tools","Git"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/","url":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/","name":"How to Publish Your Lovable App to InMotion Hosting via GitHub","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png","datePublished":"2025-07-08T23:07:33+00:00","dateModified":"2025-07-14T16:36:23+00:00","description":"Learn how to publish your Lovable React web app to your InMotion Hosting account using GitHub and Shared Hosting.","breadcrumb":{"@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#primaryimage","url":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png","contentUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2025\/07\/Publish-Lovable-App-to-InMotion-Hosting-via-GitHub.png","width":1200,"height":630,"caption":"How to Publish Your Lovable Created React WebApp to InMotion Hosting via GitHub Hero Image"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/publish-lovable-webapp-via-github\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inmotionhosting.com\/support\/"},{"@type":"ListItem","position":2,"name":"Publish Your Lovable Created React WebApp to InMotion Hosting Shared Hosting via GitHub"}]},{"@type":"WebSite","@id":"https:\/\/www.inmotionhosting.com\/support\/#website","url":"https:\/\/www.inmotionhosting.com\/support\/","name":"InMotion Hosting Support Center","description":"Web Hosting Support &amp; Tutorials","publisher":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inmotionhosting.com\/support\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.inmotionhosting.com\/support\/#organization","name":"InMotion Hosting","url":"https:\/\/www.inmotionhosting.com\/support\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/","url":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg","contentUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg","width":696,"height":696,"caption":"InMotion Hosting"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inmotionhosting\/","https:\/\/x.com\/InMotionHosting"]},{"@type":"Person","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/87423443495bb1e33c4cbc0acd6d2c5d","name":"Todd Robinson","description":"I would really appreciate any thoughts and guidance you might want to share. Please connect with me on LinkedIn or leave a comment below with requests or questions \u2014 even corrections if I managed to mess up something!","sameAs":["https:\/\/www.linkedin.com\/in\/toddrobinson2\/"],"url":"https:\/\/www.inmotionhosting.com\/support\/author\/todd_r\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"primary_category":{"id":4309,"name":"Git","slug":"git","link":"https:\/\/www.inmotionhosting.com\/support\/website\/git\/"},"_links":{"self":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/130594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/users\/28953"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/comments?post=130594"}],"version-history":[{"count":19,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/130594\/revisions"}],"predecessor-version":[{"id":130704,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/130594\/revisions\/130704"}],"wp:attachment":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/media?parent=130594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/categories?post=130594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/tags?post=130594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}