# Migrasi Backend → Laravel (PADEBERKINEM)

## Kenapa migrasi?

Node.js + Prisma **crash** di shared hosting RumahWeb (`Aborted core dumped`).
**PHP/Laravel** jalan native di cPanel tanpa masalah virtualenv.

**Frontend Next.js tetap** — tidak diubah. Hanya backend API yang diganti.

---

## Cara deploy (pilih satu)

| Metode | Kapan dipakai | Panduan |
|--------|---------------|---------|
| **Git clone + pull** | Update terus-menerus (disarankan) | **[DEPLOY_GIT.md](./DEPLOY_GIT.md)** |
| ZIP upload | Build lokal, upload sekali | `scripts/build-upload-zip.ps1` + `BACA-DULU.txt` |

Update rutin di server:

```bash
cd ~/public_html/PADEBERKINEM
bash scripts/deploy/git-update.sh
```

---

## Status saat ini

| Komponen | Status |
|----------|--------|
| Folder `api/` (Laravel) | ✅ Sudah berisi semua modul utama |
| Auth, Users, Settings, Files, LMS, Reading, Assessment, Adaptive, Analytics, Audit | ✅ Sudah dipindah |
| Route Laravel terdaftar | ✅ 96 routes (`php artisan route:list`) |
| Folder NestJS `backend/` | ✅ **Dihapus** dari repo (skema di `docs/database/`) |

---

## Deploy Laravel di RumahWeb (langkah cepat)

### 1. Upload folder `api/` ke server

```
public_html/PADEBERKINEM/api/
```

### 2. Install Composer di server (PHP jalan, Node tidak perlu)

```bash
cd ~/public_html/PADEBERKINEM/api
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --optimize-autoloader
```

### 3. Environment

```bash
cp .env.example .env
nano .env
```

Isi:
```env
APP_KEY=base64:...   # generate: php artisan key:generate
DB_HOST=127.0.0.1
DB_DATABASE=rama3823_padeberkinem
DB_USERNAME=rama3823_padeberkinem
DB_PASSWORD=...
JWT_SECRET=padeberkinem_jwt_rahasia_min_32_karakter_x9k2
FRONTEND_URL=https://mcbdl.site
APP_URL=https://padeberkinem.ramaboedi.com
```

```bash
php artisan key:generate
chmod -R 775 storage bootstrap/cache
```

### 4. Arahkan subdomain backend ke `api/public`

Di cPanel → **Domains** / **Subdomains**:
- `padeberkinem.ramaboedi.com` → document root: `public_html/PADEBERKINEM/api/public`

**Hapus** Setup Node.js App untuk backend (tidak perlu lagi).

### 5. Frontend proxy (tetap sama)

`frontend/.env.local`:
```env
BACKEND_INTERNAL_URL=https://padeberkinem.ramaboedi.com/api
```

### 6. Seed akun admin (jika DB kosong)

```bash
cd ~/public_html/PADEBERKINEM/api
php artisan app:seed-minimal
# atau dengan password kustom:
php artisan app:seed-minimal --password='Admin123!'
```

Login default:
- Email: `admin@idp.local`
- Password: `Admin123!` (atau nilai `SEED_DEMO_PASSWORD`)

### 7. Tes

```bash
curl https://padeberkinem.ramaboedi.com/api/health
```

Login di `https://mcbdl.site/login` dengan akun yang sudah di-seed SQL.

---

## Status migrasi sekarang

| Modul | Status |
|------|--------|
| Auth | ✅ |
| Users | ✅ |
| Settings | ✅ |
| Files | ✅ |
| LMS | ✅ |
| Reading | ✅ |
| Assessment | ✅ |
| Adaptive | ✅ |
| Analytics | ✅ |
| Audit | ✅ |

Database **sama** (MySQL existing) — tidak perlu migrasi ulang tabel.

---

## Cutover final (wajib)

- Hapus/stop **Node.js App backend** lama di cPanel.
- Gunakan backend **Laravel** (`api/public`) sebagai satu-satunya endpoint API.
- Jalankan `remove-node-backend.sh` untuk mengarsipkan folder backend lama.

Frontend tetap pakai Node.js App (Next.js standalone).
