FURNITURE MOVERS ADELAIDE - UPLOAD GUIDE
=========================================
Site: https://furnituremoversadelaide.com.au        Admin: https://furnituremoversadelaide.com.au/admin/login

WHAT IS IN THIS FOLDER
  laravel/       the application (code, vendor libraries, .env settings). Goes ABOVE your web root. Never public.
  public_html/   the website's public files (index.php, assets, .htaccess). Goes INTO your web root.
  database.sql   all content: 86 pages, sections, FAQs, reviews, redirects, settings and the admin user.

WHAT YOUR HOSTING NEEDS
  PHP 8.2 or newer (8.3 is fine), MySQL or MariaDB, Apache/LiteSpeed with mod_rewrite (any normal cPanel host),
  and PHP extensions: mbstring, openssl, pdo_mysql, tokenizer, xml, ctype, fileinfo (all standard).
  HTTPS must be switched on (free AutoSSL / Let's Encrypt in cPanel). The site forces https and non-www.

STEP BY STEP (cPanel)
 1. BACK UP the old WordPress site (files + database) before changing anything.

 2. Create the database: cPanel > MySQL Databases. Create a database, create a user with a strong password,
    add the user to the database with ALL PRIVILEGES. Note the three values (cPanel adds a prefix, e.g. abc123_movers).

 3. Import the content: cPanel > phpMyAdmin > select the new database > Import > choose database.sql > Go.
    (You should then see 16 tables, and 86 rows in "pages".)

 4. Set the PHP version: cPanel > "Select PHP Version" (or MultiPHP Manager) > PHP 8.2 or higher for this domain.

 5. Upload the files:
      a) Upload the "laravel" folder to your HOME folder, next to public_html (NOT inside it).
      b) Remove the old WordPress files from public_html, then upload the CONTENTS of "public_html" into it
         (so that public_html/index.php, public_html/assets and public_html/.htaccess exist).
    Tip: zip each folder, upload the zip in File Manager, and Extract. Make sure hidden files (.htaccess, .env) came across.

    If your host will not let you put a folder outside public_html:
      upload "laravel" INSIDE public_html (public_html/laravel) and edit public_html/index.php, changing
      $laravel = __DIR__ . '/../laravel';   to   $laravel = __DIR__ . '/laravel';
      (laravel/.htaccess already blocks web access to that folder.)

 6. Edit laravel/.env (File Manager > Edit). Fill in the three lines that say CHANGE_ME:
        DB_DATABASE=  DB_USERNAME=  DB_PASSWORD=
    Leave everything else as it is. If the site shows a database error, try DB_HOST=127.0.0.1 instead of localhost.

 7. Permissions: these folders must be writable by PHP (755, or 775 if 755 does not work):
        laravel/storage  (and everything inside)      laravel/bootstrap/cache      public_html/uploads

 8. Open https://furnituremoversadelaide.com.au/ - the site should load. Then /admin/login.

 9. Log in (email bestmoversadelaide@gmail.com, password sent to you separately).
    IMMEDIATELY change the password: Admin > Account.

10. Email (so quote requests reach you): Admin > Settings > "Email" tab.
      - Provider: SMTP (recommended: create a mailbox such as no-reply@furnituremoversadelaide.com.au in cPanel > Email
        Accounts and use its mail server, username and password), or Mailgun (sending domain + private API key), or
        "Server sendmail".
      - From address: an address on your own domain. Reply-to: where customer replies should go.
      - "Send new quote requests to": your inbox(es). Customers' own email address is set as Reply-To automatically.
      - Auto-reply: tick to send customers a confirmation email (edit the text if you like).
      - Press "Send test email". You will see the exact error if it fails. All emails are saved in Admin > Emails.
    Quote requests are ALWAYS saved in Admin > Enquiries, even if email fails.

11. Settings to check: Admin > Settings: business details, phone, lead email(s). "Launch" tab: Staging mode is OFF
    (the site is live and indexable). Turn it ON at any time to hide the whole site from search engines.

12. Test the quote form on the live site (submit it, check Admin > Enquiries and your inbox), and tap-test the phone buttons.

AFTER LAUNCH
  - Google Search Console: submit https://furnituremoversadelaide.com.au/sitemap.xml
  - Admin > Settings > Tracking: paste your Google tag / Ads IDs when you have them (blank = off). Add your Google
    Business Profile URL there too.
  - Each page has Target keywords and an SEO check tab in the editor (Admin > Pages > edit a page).
  - The site sets one first-party cookie (fm_v) to tell new from returning visitors. This is disclosed in the Privacy Policy.
  - All 73 old page URLs are unchanged, so rankings carry over. Old WordPress-only URLs (feed, wp-admin etc.) are
    redirected to the closest page or return 410. Add more old->new mappings in Admin > Redirects.
  - Back up the database regularly (phpMyAdmin > Export) - all your content lives there.

IMPORTANT
  - Do NOT run "php artisan migrate --seed" or "db:seed" on the live site: content is managed in the admin.
  - Keep laravel/.env private. It holds your database password and encryption key.

TROUBLESHOOTING
  Emails not arriving: Admin > Emails shows the exact error. Check SMTP host/port/encryption/password, and that the
    From address is on your domain (set SPF/DKIM for it in cPanel > Email Deliverability). Look in spam too.
  Blank page / "500 error": open laravel/storage/logs/laravel.log. Check PHP is 8.2+, and that storage/ and
    bootstrap/cache are writable. To see the exact error temporarily set APP_DEBUG=true in .env (set it back to false).
  "Database connection" error: re-check DB_* values in laravel/.env (cPanel prefixes names and usernames).
  Pages show 404 except the home page: .htaccess is missing from public_html, or mod_rewrite is off.
  Admin login loops back to the login page: the site must be opened over https (session cookie is secure-only).
  Old pages still showing WordPress: the old index.php/.htaccess were not replaced - delete them and re-upload.
