# cPanel Deployment — Skulitech Laravel 13

## Preferred layout

Keep the Laravel project outside `public_html` and configure the domain/subdomain document root to the project's `public` directory.

Example:

```
/home/ACCOUNT/skulitech-laravel13/
/home/ACCOUNT/skulitech-laravel13/public/   <- domain document root
```

## Steps

1. Upload/extract the package.
2. Select PHP 8.3+ in cPanel.
3. In Terminal/SSH run `composer install --no-dev --optimize-autoloader`.
4. Copy `.env.example` to `.env` and enter cPanel MySQL credentials.
5. Run `php artisan key:generate`.
6. Point the domain's document root to `.../skulitech_laravel13/public`.
7. Give the web user write access to `storage` and `bootstrap/cache`.
8. If this is an existing installation, point Laravel to the existing database. Do not re-import the schema.
9. For a new blank database, use `php artisan skulitech:install-schema --force`.
10. Run `php artisan optimize`.

## Queue/scaling preparation

The compatibility modules remain synchronous initially. When a module is converted natively, move email, bulk PDFs, imports, exports and large notifications to Laravel queues. On VPS hosting, use Redis + Supervisor/Horizon. On basic cPanel, use the database queue plus a cron/worker if persistent processes are unavailable.

## Security

Never expose the project root, `legacy/`, `.env`, `vendor/`, or database SQL files as the web document root. Only `public/` should be web-accessible.
