TIM SERVICE PROVIDER — CPANEL DEPLOYMENT PACKAGE
Domain target: https://timserviceprovider.co.za
Runtime target: PHP 8.1 / MySQL 8 / cPanel

PACKAGE CONTENTS
- public_html_files/: upload THESE FILES into the actual document root of timserviceprovider.co.za. This includes index.php, the existing PHP pages, assets, and .htaccess.
- private_files/timsp-private/: upload this folder OUTSIDE the public document root, ideally to /home/CPANEL_USERNAME/timsp-private/. It contains app/, config/, database/, and storage/.

IMPORTANT BEFORE UPLOADING
1. Back up the current domain document root and any database. Do not overwrite a live site without a backup.
2. In cPanel > Domains, confirm the document root for timserviceprovider.co.za. This package assumes the document root is /home/CPANEL_USERNAME/public_html/. If the domain uses a different document root, update the PHP bootstrap include path in every public PHP page accordingly.
3. The public PHP pages reference the private bootstrap at: dirname(__DIR__) . '/timsp-private/app/bootstrap.php'. This is correct when public_html is directly under the account home and timsp-private is a sibling of public_html.
4. Upload the contents of public_html_files/ into the domain document root. Do not upload the folder public_html_files itself as the web root unless you intentionally set the domain document root to it.
5. Upload private_files/timsp-private/ so the final path is /home/CPANEL_USERNAME/timsp-private/. Do NOT put the private_files folder inside public_html.
6. In cPanel > MySQL Databases, create a dedicated database and database user. Assign only the privileges needed for this app. cPanel database/user names commonly have account prefixes.
7. In /home/CPANEL_USERNAME/timsp-private/config/, copy config.example.php to config.php. Edit config.php on the server and enter the actual cPanel database host, database name, database username, and password. Never send credentials in chat.
8. In phpMyAdmin, select the new app database and import /home/CPANEL_USERNAME/timsp-private/database/schema.sql (download it locally first if phpMyAdmin cannot import from that path).
9. Verify a valid SSL certificate for timserviceprovider.co.za and www if used. Then test the homepage, contact, login, registration, privacy, and tender pages.
10. If a 500/503 error occurs, restore the backup and check cPanel > Metrics > Errors. Do not enable public PHP error display.

SECURITY / LIMITATIONS
- config.php is not included because it must contain your own server-specific credentials. Only config.example.php is supplied.
- No real payment keys or notification-provider credentials are included.
- This is a Phase 1 starter. Login/registration, payments, reminders and live tender data are placeholders and must be implemented and security-tested before accepting sensitive client data or payments.
- The homepage catches catalogue-query failures, but bootstrap/config loading must succeed before any page can render.
- Keep private files outside the public document root.
