# Laravel API Setup

> Panduan dan automasi untuk menginstal serta melakukan setup proyek Laravel 13 khusus untuk pengembangan Backend API profesional dengan Pest, arsitektur Repository-Service, dan lokalisasi ID otomatis.

- Skill: `radenparhanudin/laravel-api-setup` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add radenparhanudin/laravel-api-setup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/radenparhanudin/laravel-api-setup/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: radenparhanudin (https://skillmd.com/u/radenparhanudin)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/radenparhanudin/laravel-api-setup

---


# Laravel API Setup Skill (Laravel 13)

Skill ini membantu Gemini CLI untuk membangun infrastruktur Backend API (Headless) profesional menggunakan Laravel 13, dengan fokus pada pengujian menggunakan Pest, arsitektur yang bersih, dan lokalisasi Bahasa Indonesia otomatis.

## Alur Kerja Utama

### 0. Pemeriksaan Prasyarat
- `php -v` (8.2+), `composer -V`, `node -v`.
- Pastikan database server (MySQL/MariaDB/PostgreSQL) berjalan.

### 1. Pengumpulan Informasi Awal
Tanyakan kepada pengguna:
- **APP_NAME**: Nama aplikasi.
- **Database Settings**: `DB_CONNECTION`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`.
- **Redis**: Apakah menggunakan Redis?
- **Git**: Inisialisasi Git di akhir?

### 2. Inisialisasi Proyek & API Routing (Tahap 1)
1. `composer create-project laravel/laravel {nama_proyek}`.
2. `php artisan install:api`.

### 3. Setup Testing (Pest PHP) (Tahap 2)
1. `composer require pestphp/pest --dev --with-all-dependencies`.
2. `./vendor/bin/pest --init`.
3. Hapus file `tests/Unit/ExampleTest.php` dan `tests/Feature/ExampleTest.php` bawaan jika diperlukan.

### 4. Konfigurasi Environment & Database (Tahap 3)
1. Update file `.env`:
   - `APP_NAME`.
   - Konfigurasi Database sesuai input langkah 1.
   - **Konfigurasi Redis**:
     - Jika Redis digunakan: `CACHE_STORE=redis`, `QUEUE_CONNECTION=redis`, `SESSION_DRIVER=redis`.
     - Jika client adalah `predis`:
       - Jalankan `composer require predis/predis`.
       - Set `REDIS_CLIENT=predis` di `.env`.
     - Jika client adalah `phpredis`:
       - Set `REDIS_CLIENT=phpredis` di `.env`.
2. Jalankan migrasi: `php artisan migrate`.

### 5. Lokalisasi ID Otomatis (Tahap 4)
Lakukan lokalisasi secara otomatis:
1. Publish file bahasa: `php artisan lang:publish`.
2. Buat direktori `lang/id` dan salin semua file dari `lang/en`.
3. **Agen Tugas**: Terjemahkan isi file `auth.php`, `pagination.php`, `password.php`, dan `validation.php` ke Bahasa Indonesia secara langsung. **Dilarang menerjemahkan komentar kode.**
4. Update `.env`: `APP_LOCALE=id` dan `APP_FALLBACK_LOCALE=en`.

### 6. Setup Arsitektur Lanjutan (Boilerplate) (Tahap 5 - Eksekusi Bertahap)
**Lakukan pembuatan file satu per satu dengan konfirmasi jika diperlukan:**
Generate file arsitektur berikut dengan standar Clean Code:
- **Repositories/BaseRepository.php**: Implementasikan method:
  - **Read**: `get`, `pagination` (default per_page 10), `getById`, `getBy` (multiple criteria), `trash` (untuk data soft deleted).
  - **Write**: `insert`, `insertBulk`, `upsert`, `updateOrCreate`.
  - **Restore**: `restore`, `restoreBulk`.
  - **Delete**: `delete`, `deleteBulk`, `forceDelete`, `forceDeleteBulk`.
  - **Query Support**: Mendukung multiple `orderBy`, pencarian (`search`) pada banyak kolom, dan filter dinamis pada banyak kolom.
- **Services/BaseService.php**: Wrapper logika bisnis yang mengimplementasikan method dari BaseRepository.
- **Services/BaseApiService.php**: Wrapper Laravel Http Client dengan fitur:
  - **Configuration**: `setBaseUrl`, `setHeader`, `setToken`, `setCookies`.
  - **Request Type**: `asForm`, `attach`.
  - **Verbs**: `get`, `post`, `put`, `delete`.
  - **Execution**: `buildRequest` untuk mengeksekusi panggilan API.
- **Traits/ApiResponse.php**: Standarisasi respons JSON global:
  - **successResponse**: Mengembalikan `{ success: true, code: string, message: string, data: mixed, meta: array|null }`. Meta otomatis menangani paginasi Laravel.
  - **errorResponse**: Mengembalikan `{ success: false, code: string, message: string, errors: mixed|null }`.
  - Contoh: `code: "LOGIN_SUCCESS"`, `code: "VALIDATION_ERROR"`.
- **Supports & Adapters**: Tambahkan folder dengan `.gitkeep`.

### 7. Git Initialization (Tahap 6)
`git init && git add . && git commit -m "feat: initial commit - setup laravel 13 api with pest and clean architecture"`

## Instruksi bagi Agen

> **[ROLE]**
> Bertindaklah sebagai seorang *Senior Backend Architect* yang ahli dalam Laravel 13 dan Pest PHP.
> 
> **[TASK]**
> Lakukan setup Laravel API dengan **eksekusi bertahap**:
> 1. Selesaikan satu Tahap (misal: Inisialisasi) sebelum lanjut ke Tahap berikutnya (misal: Setup Arsitektur).
> 2. Khusus untuk **Tahap 6 (Boilerplate)**, buatlah file secara berurutan satu per satu. Jangan mencoba membuat semua file arsitektur dalam satu turn jika isi kodenya sangat panjang.
> 3. Laporkan progres setiap kali satu tahapan selesai.
> 
> **[CONSTRAINT]**
> - Patuhi urutan alur kerja.
> - Pastikan respons API selalu konsisten menggunakan Trait `ApiResponse`.
> - Bahasa Indonesia untuk interaksi, Bahasa Inggris untuk kode.

## Tips Keamanan & Performa
- Gunakan Redis untuk throttling dan caching.
- Pastikan semua endpoint API terproteksi oleh middleware Sanctum secara default.

