# Panduan Deploy — PHP Drive Ready Deploy

## 1. Upload dan Extract

Upload ZIP ke hosting, lalu extract menjadi folder:

```text
/home/username/kemuning-memory-gallery
```

Pastikan struktur folder seperti ini:

```text
kemuning-memory-gallery/
├── app/
├── public/
├── scripts/
├── storage/
├── bootstrap.php
├── .env.example
└── README.md
```

Versi ini **tidak butuh Composer**. Jadi tidak ada error “Composer belum diinstall”.

## 2. Arahkan Domain ke Folder Public

Di cPanel, buat subdomain misalnya:

```text
upload.domainkamu.com
```

Document root harus diarahkan ke:

```text
/home/username/kemuning-memory-gallery/public
```

Jangan arahkan domain ke folder utama project.

## 3. Buat File `.env`

Copy file:

```text
.env.example → .env
```

Isi minimal:

```text
APP_NAME="Kemuning Memory Gallery"
APP_URL="https://upload.domainkamu.com"
ADMIN_PASSWORD="password-admin-kuat"
SESSION_SECRET="random-panjang-minimal-32-karakter"
DB_PATH="storage/database.json"

GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""
GOOGLE_REFRESH_TOKEN=""
GOOGLE_DRIVE_PARENT_FOLDER_ID=""

UPLOAD_CHUNK_SIZE_MB="8"
MAX_FILE_SIZE_MB="5120"
MAKE_FILES_PUBLIC="true"
```

## 4. Permission Folder Storage

Set permission folder `storage` agar bisa ditulis PHP.

Biasanya cukup:

```text
775
```

Kalau masih error, coba:

```text
755
```

Tergantung konfigurasi hosting.

## 5. Setup Google Drive

### Buat Folder Utama di Drive

Di Google Drive, buat folder misalnya:

```text
Kemuning Documentation
```

Buka folder tersebut. Dari URL:

```text
https://drive.google.com/drive/folders/1AbCdEfGh123
```

Ambil ID-nya:

```text
1AbCdEfGh123
```

Masukkan ke `.env`:

```text
GOOGLE_DRIVE_PARENT_FOLDER_ID="1AbCdEfGh123"
```

### Aktifkan Google Drive API

Di Google Cloud Console:

1. Buat project.
2. Aktifkan Google Drive API.
3. Buat OAuth Client ID.
4. Ambil `GOOGLE_CLIENT_ID` dan `GOOGLE_CLIENT_SECRET`.
5. Masukkan ke `.env`.

### Buat Refresh Token

Cara paling mudah: gunakan OAuth Playground.

1. Buka Google OAuth Playground.
2. Klik ikon gear di kanan atas.
3. Centang **Use your own OAuth credentials**.
4. Isi Client ID dan Client Secret.
5. Di scope, pilih/isi:

```text
https://www.googleapis.com/auth/drive
```

6. Authorize API.
7. Exchange authorization code for tokens.
8. Copy Refresh Token.
9. Masukkan ke `.env`:

```text
GOOGLE_REFRESH_TOKEN="refresh-token-kamu"
```

Alternatif, kalau hosting/laptop kamu bisa menjalankan PHP CLI:

```bash
php scripts/get-refresh-token.php
```

## 6. Coba Aplikasi

Buka:

```text
https://upload.domainkamu.com/login
```

Lalu:

1. Login admin.
2. Buat event.
3. Cek apakah folder event dan kategori muncul di Google Drive.
4. Copy link upload tim.
5. Upload 1 foto dulu.
6. Publish galeri.
7. Buka link galeri tamu.

## 7. Kalau Error

### Halaman 404

Biasanya document root belum ke folder `public` atau `.htaccess` rewrite belum aktif.

### Error Google OAuth belum dikonfigurasi

Artinya `.env` belum diisi:

```text
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
GOOGLE_REFRESH_TOKEN
GOOGLE_DRIVE_PARENT_FOLDER_ID
```

### Upload error 413 / file too large

Turunkan chunk:

```text
UPLOAD_CHUNK_SIZE_MB="4"
```

Pastikan `.user.ini` di folder public terbaca hosting.

### Foto tidak tampil di galeri tamu

Pastikan:

```text
MAKE_FILES_PUBLIC="true"
```

Kalau file Drive tetap private, tamu harus login Google untuk melihat file.
