Starter Kit API Laravel 13

  • author-image

    Kurnia Andi Nugroho

  • Laravel 13 Laravel 13 starter kit Laravel api starter kit Laravel 13 api Belajar laravel 13
  • blog-comment 0 comment
  • dilihat 168 kali
  • 04 Mar, 2026
blog-thumbnail

Kit: Starter Kit API Laravel yang Teropini dan Siap Pakai

Ditulis ulang dalam Bahasa Indonesia | Sumber: laravel-news.com

Pengantar: Apa Itu Kit?

Kalau kamu pernah memulai sebuah proyek API Laravel dari nol, kamu pasti tahu betapa melelahkannya fase awal itu — mengatur autentikasi, menentukan struktur folder, memasang tools analisis kode, hingga memastikan keamanan dasar sudah terpasang sebelum satu baris logika bisnis pun ditulis. Nah, di sinilah Kit hadir sebagai solusi.

Kit adalah sebuah API starter kit untuk Laravel yang dibuat oleh Steve McDougall. Berbeda dari starter kit generik, Kit memiliki "opini" yang tegas — artinya, ia sudah memilih pendekatan tertentu dalam arsitektur, autentikasi, dan keamanan. Tujuannya satu: agar developer bisa langsung fokus membangun fitur, bukan sibuk mengkonfigurasi fondasi.

Kit ditujukan bagi developer yang ingin titik awal yang terstruktur untuk membangun JSON API berbasis versi, tanpa harus merakit semuanya dari nol.

Memulai dengan Kit

Proses setup-nya cukup sederhana dan ramah bagi developer yang sudah terbiasa dengan ekosistem Laravel. Cukup clone repositori, install dependensi, lalu jalankan skrip setup otomatis:

composer install

composer run setup

php artisan serve

Perintah composer run setup secara otomatis menyalin file .env.example ke .env, membuat app key, dan menjalankan migrasi database ke SQLite lokal. Praktis, kan? Dalam satu perintah, fondasi proyekmu sudah siap.

Arsitektur: Pilihan yang Disengaja

Ini bagian yang menarik dari Kit. Ia tidak hanya menyediakan boilerplate, tapi juga mengambil keputusan arsitektur yang tegas. Mari kita bedah satu per satu.

1. Tidak Ada Prefix /api Global

Kebanyakan proyek Laravel menggunakan prefix /api untuk semua endpoint-nya. Kit memilih jalan berbeda: route langsung menggunakan versi sebagai prefix, misalnya /v1/auth/login. Ini membuat versioning lebih eksplisit dan mudah dikelola ketika API berkembang.

2. Invokable Controllers Saja

Setiap controller hanya memiliki satu method: __invoke(). Pendekatan ini mendorong prinsip Single Responsibility — satu controller, satu tugas. Hasilnya, kode menjadi lebih mudah dibaca, diuji, dan dipelihara.

3. Form Request untuk Validasi

Validasi request tidak dilakukan di dalam controller. Kit menggunakan class FormRequest yang terpisah, dengan class payload bergaya DTO yang tersimpan di app/Http/Payloads/V1. Ini membuat alur data lebih terstruktur dan terdokumentasi dengan baik.

4. Format Respons JSON:API

Semua respons mengikuti struktur JSON:API yang konsisten. Ini penting untuk interoperabilitas — client (baik web, mobile, maupun third-party) bisa mengharapkan format yang seragam dari semua endpoint.

Autentikasi: Lengkap dari Ujung ke Ujung

Kit menyediakan sembilan route yang menangani seluruh siklus hidup autentikasi. Dengan Laravel Sanctum sebagai pondasinya, berikut yang sudah tersedia out of the box:

• Registrasi dan login — keduanya mengembalikan token via Laravel Sanctum

• Endpoint /v1/auth/me — hanya bisa diakses dengan Bearer token yang valid

• Verifikasi email via signed URL — mekanisme yang aman dan sulit dipalsukan

• Reset password dengan respons anti-enumeration — endpoint ini mengembalikan respons yang sama, baik email terdaftar maupun tidak, untuk mencegah penyerang menebak-nebak apakah sebuah email ada di sistem

Fitur anti-enumeration pada reset password ini patut mendapat perhatian khusus. Banyak sistem yang secara tidak sengaja membocorkan informasi tentang email mana saja yang terdaftar — Kit menutup celah ini sejak awal.

Keamanan: Bukan Tambahan, Tapi Pondasi

Ini salah satu aspek paling menonjol dari Kit. Fitur keamanan tidak diperlakukan sebagai "nanti saja", melainkan diintegrasikan langsung dari awal:

• ULID sebagai primary key — Alih-alih integer auto-increment yang mudah ditebak, Kit menggunakan ULID untuk ID pengguna. Ini mencegah serangan enumerasi pada endpoint yang menggunakan ID.

• Rate limiting terpreset pada endpoint auth — Dapat dikonfigurasi di AppServiceProvider. Mencegah serangan brute-force pada login dan registrasi.

• Enforced Content-Type: application/json — Semua write request wajib menyertakan header yang benar. Ini mencegah berbagai serangan berbasis content-type confusion.

• Response header yang diperkuat — Termasuk X-Content-Type-Options: nosniff, X-Frame-Options: DENY, dan Referrer-Policy: no-referrer. Header-header ini adalah lini pertahanan pertama di level browser.

• Request ID tracking — Setiap request diberi ID unik, memudahkan debugging dan audit trail.

• Audit logging — Operasi sensitif dicatat secara otomatis untuk keperluan forensik dan kepatuhan.

Sunset Middleware: Mengelola Depresiasi API dengan Elegan

Salah satu fitur unik Kit yang jarang ditemukan di starter kit lain adalah Sunset Middleware. Bayangkan skenario ini: kamu ingin menonaktifkan /v1/auth/login pada tanggal 1 Januari 2027 karena versi v2 sudah siap. Dengan Sunset Middleware, kamu bisa melakukannya secara deklaratif:

Route::middleware('sunset:2027-01-01,https://api.acme.com/v2/auth/login,true') ->post('/v1/auth/login', LoginController::class);

Middleware ini menerima tiga parameter: tanggal sunset, URL penerus (versi baru), dan boolean untuk mengontrol enforcement. Selama endpoint masih aktif, setiap respons otomatis menyertakan header Deprecation, Sunset, dan Link — sehingga klien API bisa mendeteksi depresiasi dan mempersiapkan migrasi.

Begitu tanggal sunset terlewati dan enforcement diaktifkan, endpoint langsung mengembalikan status 410 Gone. Pendekatan ini membuat manajemen lifecycle API menjadi jauh lebih terstruktur dan komunikatif.

Dokumentasi API: Otomatis dan Berbasis Atribut

Kit menggunakan Scribe untuk menghasilkan dokumentasi API secara otomatis. Yang menarik, anotasi dilakukan menggunakan PHP attributes (bukan docblock), sehingga lebih modern dan mudah dikelola. Hasilnya adalah dokumentasi lengkap beserta spesifikasi OpenAPI yang bisa digunakan oleh tim frontend, mobile developer, atau partner integrasi.

Lokalisasi: Bicara Bahasa Pengguna

Kit juga memperhatikan aspek lokalisasi. Ia membaca header Accept-Language dari request dan merespons dengan header Content-Language yang sesuai. Secara default mendukung bahasa Inggris (en) dan Spanyol (es), dengan file terjemahan di lang/en/api.php dan lang/es/api.php. Menambahkan bahasa Indonesia, misalnya, hanya soal menambahkan satu file terjemahan baru.

Ekosistem Tooling yang Lengkap

Kit tidak hanya menyediakan kode — ia juga menyiapkan seluruh ekosistem pengembangan modern:

• Pest — Framework testing yang ekspresif dan modern untuk PHP.

• PHPStan — Analisis statis untuk mendeteksi bug sebelum runtime.

• Pint — Code formatter resmi dari Laravel untuk konsistensi gaya kode.

• Rector — Tool otomatis untuk refactoring dan upgrade kode.

• GitHub Actions — CI/CD sudah dikonfigurasi: tes berjalan otomatis di setiap push, update dependensi harian, pemindaian keamanan dengan composer audit dan Gitleaks.

Persyaratan Sistem

Untuk menggunakan Kit, pastikan environment kamu memenuhi spesifikasi berikut:

• PHP 8.5 atau lebih baru

• Laravel 12

• SQLite (untuk development lokal; database lain bisa dikonfigurasi)

Kesimpulan: Kapan Kit Tepat Digunakan?

Kit adalah pilihan yang sangat tepat jika kamu ingin membangun JSON API berbasis Laravel dengan fondasi yang kuat, terstruktur, dan aman — tanpa membuang waktu untuk hal-hal yang sifatnya boilerplate. Ia cocok untuk:

• Developer yang ingin mulai cepat tanpa mengorbankan kualitas arsitektur

• Tim kecil yang butuh standar kode yang konsisten sejak hari pertama

• Proyek yang dari awal sudah merencanakan versioning API

• Mereka yang peduli dengan keamanan dan ingin defaults yang baik secara langsung

Yang perlu diingat, Kit adalah starter kit yang teropini — artinya ada keputusan desain yang sudah dibuat untukmu. Jika pendekatan tersebut sesuai dengan filosofi proyekmu, Kit bisa menghemat berjam-jam pekerjaan setup. Jika tidak, kamu mungkin perlu melakukan beberapa penyesuaian.

Tertarik mencoba? Kunjungi repositori juststeveking/kit di GitHub untuk menjelajahi source code-nya secara langsung.

author_photo
Kurnia Andi Nugroho

Web & Mobile App Developer, Laravel, Inertia, Vue.Js, React.Js

Founder of Lagikoding.com Laravel Enthusiast & Web Developer