# Panduan Deploy ke Hosting FTP

## 1) Siapkan file yang wajib di-upload
Upload seluruh isi project, kecuali folder yang biasanya tidak perlu di-upload (atau bisa di-skip jika hosting sudah menyediakannya):
- `app/`
- `bootstrap/`
- `config/`
- `database/`
- `public/`
- `resources/`
- `routes/`
- `storage/` (upload isi folder, termasuk `app`, `framework`, `logs`)
- `vendor/`
- `.env`
- `artisan`
- `composer.json`
- `composer.lock`
- `package.json`
- `vite.config.js`

> Untuk shared hosting, biasanya yang penting adalah semua file aplikasi kecuali `node_modules` dan folder cache yang bisa dibuat ulang.

## 2) Atur folder root hosting
Jika hosting Anda memakai folder publik seperti `public_html`, maka:
- upload semua project ke folder utama project, misalnya `public_html` atau subfolder.
- pastikan file `index.php` dari folder `public/` dipindahkan ke root web atau gunakan aturan pointing domain ke folder `public`.

## 3) Konfigurasi `.env` untuk produksi
Ubah nilai berikut sesuai hosting:

```env
APP_NAME="Absensi TA"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://domain-anda.com

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=username_database
DB_PASSWORD=password_database

CACHE_STORE=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
FILESYSTEM_DISK=local
```

## 4) Jalankan perintah setelah upload
Karena Anda deploy lewat FTP, perintah berikut biasanya perlu dijalankan via panel hosting / SSH (kalau tersedia):

```bash
php artisan key:generate
php artisan config:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan migrate --force
php artisan storage:link
```

## 5) Atur izin folder
Pastikan folder berikut writable:
- `storage/`
- `bootstrap/cache/`

Biasanya set permission:
- `storage/` = 775 atau 777 (tergantung hosting)
- `bootstrap/cache/` = 775 atau 777

## 6) Jika domain tidak langsung mengarah ke folder `public`
Buat file `.htaccess` di root hosting dengan isi seperti ini:

```apache
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
```

## 7) Tips penting
- Jangan upload file `.env.example` ke produksi.
- Setelah upload, pastikan file `public/index.php` benar-benar dipakai sebagai entry point.
- Jika ada error 500, cek log error hosting atau file `storage/logs/`.
