# Project Context & Guidelines

## 1. Tech Stack & Arsitektur
- **Backend Framework:** Laravel 13 (PHP 8.3+)
- **Frontend Stack:** Inertia.js v2.0
- **Authentication:** Laravel Sanctum
- **Authorization / RBAC:** Spatie Laravel Permission
- **Routing Assistant:** Ziggy

## 2. Aturan Penulisan Kode (Coding Style)
- Gunakan fitur terbaru **PHP 8.3** (seperti Typed Class Constants, readonly classes, `json_validate()`).
- Terapkan standar **PSR-12** untuk penulisan kode PHP.
- Gunakan `camelCase` untuk penamaan variabel dan fungsi.
- Gunakan `snake_case` untuk nama tabel dan kolom database.

## 3. Aturan Keamanan (Security Rules)
- **TIDAK BOLEH** menampilkan isi `.env` asli atau kredensial nyata dalam kode. Selalu gunakan *dummy data*.
- Selalu gunakan `env('VARIABLE_NAME')` atau konfigurasi file untuk mengakses variabel environment.
- Setiap logika krusial (terutama pembayaran atau perubahan data massal) wajib menggunakan `DB::beginTransaction()` dan `DB::rollBack()`.
- Lakukan validasi dan sanitasi pada semua input pengguna sebelum diproses.

## 4. Perintah Umum (CLI Commands)
- Jalankan Server: `php artisan serve`
- Migrasi Database: `php artisan migrate`
- Jalankan Tinker: `php artisan tinker`
- Setup Role/Permission (Spatie): Pastikan selalu menggunakan `php artisan permission:cache-reset` setelah mengubah struktur permission.

## 5. Catatan Integrasi Frontend (Inertia & Ziggy)
- Gunakan fungsi `route()` dari Ziggy saat mendefinisikan rute di frontend Vue/React.
- Pastikan semua response dari controller yang mengarah ke view menggunakan fungsi `Inertia::render()`.