When you created the shared hosting account with Hostgator, the document root for your primary domain was set to the public_html folder. In a Laravel application, the document root must be set to the public directory and not public_html, because Laravel does not have a directory called public_html.
So you have two options.
Option 1 In your Laravel application, rename the public folder to public_html. If you do this, you need to make sure to override the public path in your Laravel application. In other words, you must tell Laravel that the document root is public_html.
You can do this by putting the following code in your index.php file in the public directory.
$app->bind('path.public', function() {
return __DIR__;
}
Option 2 Rename the public_html folder on your server to public. If you do this, you'll need to change or update the document root for the domain on the server. Generally on shared hosting servers, you can only change the document root for your addon domains and subdomains. If you go with this option, and the domain you are using is the primary domain on the account (unless it's a subdomain of your primary domain), you may have to contact Hostgator and see if they'll update the document root for you.