Starter kit
Starter kit menghemat satu minggu kerja yang tidak menambah nilai apa pun bagi produkmu. Yang perlu diputuskan bukan "pakai atau tidak", melainkan varian mana — karena pilihan itu menentukan arsitektur frontend seterusnya.
Intisari
- Menyediakan login, registrasi, reset password, verifikasi email, dan profil — lengkap dengan tesnya.
- Pilihannya mengikuti frontend: Livewire, React, atau Vue (dua terakhir lewat Inertia).
- Kodenya di-publish ke proyekmu, bukan disembunyikan di
vendor/— bebas kamu ubah. - Pasang di awal proyek. Memasangnya setelah ada kode akan menimpa berkas.
- Butuh alur auth tanpa tampilan bawaan? Pakai Fortify: logikanya saja, tampilannya kamu sendiri.
Memasang
laravel new portal # installer akan menanyakan starter kit-nya
# atau pada proyek yang baru dibuat dan masih kosong
php artisan install:livewire
php artisan install:react
php artisan install:vue
| Varian | Cara kerja | Pilih kalau |
|---|---|---|
| Livewire | Komponen PHP; interaksi lewat permintaan ke server | Tim menguasai PHP, ingin interaktif tanpa membangun SPA |
| React (Inertia) | Komponen React, routing tetap di Laravel | Sudah ada keahlian React, UI-nya kaya |
| Vue (Inertia) | Sama, dengan Vue | Sama, dengan Vue |
| Blade saja | Tanpa starter kit; auth dipasang sendiri lewat Fortify | Halaman yang didominasi konten dan harus mudah di-cache |
Pilihan ini menentukan bagaimana halamanmu bisa di-cache. Halaman Blade murni bisa disajikan seluruhnya dari CDN dan tidak pernah menyentuh PHP. Halaman Livewire dan Inertia selalu memerlukan permintaan ke server untuk dirender. Untuk aplikasi dengan sedikit halaman publik itu tidak masalah; untuk situs yang didominasi lalu lintas pembaca anonim, perbedaannya besar — dan dibahas lagi di Fase 7 dan Fase 9.
Apa yang kamu dapat
app/Http/Controllers/Auth/ controller login, registrasi, reset, verifikasi
app/Http/Requests/Auth/ form request yang sudah divalidasi dengan benar
resources/views/ halaman auth + layout + halaman profil
routes/auth.php seluruh rute autentikasi
tests/Feature/Auth/ tes untuk setiap alur di atas
Baris terakhir itu yang paling sering diremehkan. Kamu tidak hanya mendapat fitur, tapi juga suite tes yang memastikan alur autentikasimu tetap benar setelah kamu mengubah-ubahnya. Menulis tes itu dari nol biasanya makan waktu lebih lama daripada menulis fiturnya.
Fortify: logika tanpa tampilan
composer require laravel/fortify
php artisan fortify:install
php artisan migrate
// app/Providers/FortifyServiceProvider.php
Fortify::loginView(fn () => view('auth.login')); // tampilanmu sendiri
Fortify::authenticateUsing(function (Request $request) {
$user = User::where('email', $request->email)->first();
return $user && Hash::check($request->password, $user->password) && $user->aktif
? $user
: null;
});
Fortify menyediakan seluruh alur backend — termasuk 2FA, konfirmasi password, dan pembatasan laju login — tanpa satu pun berkas tampilan. Ini pilihan yang tepat kalau desainmu sudah jadi, atau kalau frontend-nya terpisah.
Pasang di awal, bukan di tengah. Perintah install:* menimpa berkas seperti
routes/web.php, layout Blade, dan konfigurasi Vite. Menjalankannya pada proyek yang sudah berisi
kode berarti kamu akan menghabiskan sore menyelesaikan konflik. Kalau memang sudah terlanjur, jalankan di
cabang git terpisah dan gabungkan manual.
Setelah terpasang, yang harus kamu sesuaikan
- Nyalakan verifikasi email kalau relevan:
User implements MustVerifyEmail, lalu pasang middlewareverified. - Sesuaikan
Password::defaults()diAppServiceProvider— panjang minimum, dan pemeriksaan kebocoran. - Periksa pembatasan laju pada rute login (materi rate limiting di fase ini).
- Terjemahkan pesan bawaan ke bahasa Indonesia lewat
lang/id/. - Jalankan
php artisan test— semua tes bawaan harus hijau sebelum kamu mengubah apa pun.
Latihan: buat proyek baru dengan starter kit Livewire, jalankan php artisan test, dan
baca satu berkas tes di tests/Feature/Auth/. Lalu ubah Password::defaults() menjadi
minimal 12 karakter dan pastikan tes registrasi masih hijau — atau perbaiki tesnya kalau tidak.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.