Pernahkah kamu membuka sebuah proyek framework untuk pertama kalinya dan merasa terintimidasi? Layar editor dipenuhi oleh belasan folder dan puluhan file yang seolah-olah berteriak meminta perhatian. Itulah pengalaman yang hampir pasti dirasakan oleh semua orang saat pertama kali menjalankan perintah instalasi Laravel.
Berpindah dari menulis kode PHP native yang mungkin hanya terdiri dari beberapa file index.php dan koneksi.php di dalam satu folder, menuju sebuah arsitektur framework modern memang butuh penyesuaian. Tapi tenang saja, arsitektur yang tampak rumit ini sebenarnya diciptakan justru untuk membuat hidup kita sebagai developer menjadi jauh lebih mudah, teratur, dan yang paling penting: scalable ketika proyek membesar.
Dalam modul ini, kita akan membahas segalanya dari nol. Kita tidak hanya akan belajar bagaimana cara menginstal Laravel, tapi kita akan membedah tuntas anatomi struktur foldernya. Anggap saja kita sedang melakukan tur ke dalam sebuah pabrik perangkat lunak; kita akan melihat di mana bahan baku disimpan, di mana mesin utama bekerja, dan pintu mana yang digunakan pelanggan untuk masuk.
Siapkan secangkir kopi, buka terminal favoritmu, dan mari kita mulai.
Persiapan dan Instalasi
Sebelum kita bisa membedah anatomi Laravel, kita tentu harus memilikinya terlebih dahulu di mesin lokal kita. Ekosistem Laravel sangat fleksibel dan menawarkan berbagai cara untuk memulai proyek baru, tergantung pada gaya development yang kamu sukai.
Syarat mutlak yang harus ada di komputermu sebelum menginstal Laravel secara lokal (tanpa kontainer) adalah PHP dan Composer. Composer ini ibarat "Play Store" atau "App Store" khusus untuk ekosistem PHP. Melalui Composer-lah kita mengunduh Laravel beserta seluruh pustaka pendukungnya.
Ada tiga pendekatan utama yang biasanya digunakan oleh developer di industri saat ini untuk menginstal Laravel:
1. Instalasi via Composer Create-Project
Ini adalah cara yang paling klasik dan mungkin paling banyak digunakan karena sangat straightforward. Kamu hanya perlu membuka terminal, menavigasikan ke folder tempat kamu biasa menyimpan proyek (misalnya htdocs atau folder projects), lalu mengetikkan perintah ini:
composer create-project laravel/laravel nama-aplikasi-kamu
Perintah di atas akan menyuruh Composer untuk mengunduh versi stabil terbaru dari Laravel, menempatkannya di dalam folder nama-aplikasi-kamu, dan menginstal semua dependencies yang dibutuhkan. Proses ini juga akan menyalin file .env.example menjadi .env dan men-generate application key secara otomatis.
2. Instalasi via Laravel Global Installer
Bagi kamu yang sehari-hari memang bekerja membuat banyak aplikasi Laravel, menggunakan Laravel Installer akan terasa jauh lebih cepat dan elegan. Pertama, kamu harus menginstal installer-nya secara global di komputermu via Composer:
composer global require laravel/installer
Setelah itu terinstal, kapan pun kamu butuh membuat proyek baru, kamu cukup mengetikkan perintah singkat ini dari terminal:
laravel new nama-aplikasi-kamu
Menariknya, di versi-versi terbaru, perintah laravel new akan memberikan semacam wizard interaktif. Terminal akan menanyakan apakah kamu ingin menggunakan starter kit seperti Breeze atau Jetstream, testing framework apa yang ingin dipakai (PHPUnit atau Pest), hingga database apa yang akan digunakan. Ini sangat menghemat waktu setup awal.
3. Instalasi via Laravel Sail (Docker-based)
Banyak software engineer modern sekarang lebih suka menggunakan kontainerisasi (containerization) agar lingkungan development tidak mengotori sistem operasi utama. Laravel menyediakan fitur bawaan bernama Sail, yang pada dasarnya adalah antarmuka CLI yang elegan untuk berinteraksi dengan Docker.
Sebagai catatan tambahan dari sisi pengalaman lapangan: jika kamu kebetulan menggunakan macOS untuk development, saya sangat merekomendasikan menggunakan Orbstack sebagai mesin penggerak kontainernya ketimbang Docker Desktop standar. Orbstack jauh lebih ringan, rakus memori yang jauh lebih rendah, dan proses spin-up kontainer untuk database atau Redis lewat Laravel Sail akan terasa instan.
Untuk menginstal Laravel via Sail di sistem yang sudah memiliki Docker (atau Orbstack), jalankan perintah ini di terminal:
curl -s https://laravel.build/nama-aplikasi-kamu | bash
Setelah selesai, kamu tinggal masuk ke folder proyek dan menyalakan layanannya:
cd nama-aplikasi-kamu
./vendor/bin/sail up
Layanan web, database MySQL, dan Redis akan langsung menyala dalam kontainer terisolasi, siap digunakan tanpa kamu harus menginstal MySQL atau server web di komputermu sendiri.
Membedah Anatomi Folder Laravel
Setelah instalasi selesai, buka folder proyekmu menggunakan code editor andalan, seperti VS Code atau PhpStorm. Kamu akan disambut oleh deretan folder yang rapi. Memahami struktur ini adalah kunci untuk menjadi developer Laravel yang produktif. Mari kita bedah satu per satu.
Folder /app
Anggaplah folder ini sebagai otak dan jantung dari aplikasimu. Hampir seluruh logika bisnis (kode yang kamu tulis secara spesifik untuk aplikasimu) akan bersarang di sini. Secara default, folder ini mengikuti standar autoloading PSR-4 dan berada di bawah namespace App.
Di dalam folder /app, kamu akan menemukan beberapa sub-folder penting:
-
Http: Ini adalah pos satpam dan resepsionis aplikasimu. Semua yang berkaitan dengan jalur masuk dari web (HTTP) ada di sini. Di dalamnya terdapat folder
Controllers(yang mengatur alur logika setelah menerima request) danMiddleware(yang bertugas sebagai filter, misalnya mengecek apakah pengguna sudah login sebelum mengizinkan mereka masuk ke halaman tertentu). -
Models: Di sinilah representasi struktur databasemu berada. Laravel menggunakan Eloquent ORM, sebuah alat yang memungkinkan kita berinteraksi dengan database seperti kita berinteraksi dengan objek PHP biasa. Jika kamu punya tabel
usersdi database, kamu akan punya modelUser.phpdi sini. -
Providers: Folder ini berisi sekumpulan kelas Service Provider. Merekalah yang bertugas menyiapkan dan menghubungkan berbagai komponen aplikasi saat Laravel pertama kali "dihidupkan" (di-booting).
-
Console: Jika kamu perlu membuat perintah kustom di terminal (menggunakan
php artisan), perintah-perintah tersebut akan disimpan di sini.
Folder /bootstrap
Jangan tertukar dengan framework CSS Bootstrap. Folder ini tidak ada hubungannya dengan CSS. Folder bootstrap di Laravel bertugas sebagai motor starter. Di dalamnya terdapat file app.php yang merupakan naskah pertama yang dijalankan oleh framework untuk memuat segala hal yang dibutuhkan. Folder ini juga memiliki sub-folder cache yang digunakan Laravel untuk menyimpan file cache untuk mempercepat performa routing dan konfigurasi. Umumnya, kamu hampir tidak pernah perlu menyentuh file di dalam folder ini secara manual.
Folder /config
Sesuai namanya, ini adalah panel kontrol aplikasimu. Semua pengaturan sistem—mulai dari konfigurasi database (database.php), pengaturan email (mail.php), pengaturan zona waktu dan bahasa (app.php), hingga koneksi pihak ketiga (services.php)—diatur di sini. Meskipun filenya banyak, kamu tidak perlu menghafalnya. Pendekatan terbaik adalah merujuk ke folder ini hanya saat kamu benar-benar perlu mengubah perilaku bawaan Laravel.
Folder /database
Ini adalah pusat ingatan dan struktur data aplikasimu. Folder ini terbagi menjadi tiga bagian vital:
-
migrations: Bayangkan ini sebagai version control (seperti Git) tapi khusus untuk struktur databasemu. Alih-alih membuat tabel langsung di phpMyAdmin atau TablePlus, kamu menulis skema tabel menggunakan kode PHP di sini. Hal ini membuat struktur database bisa dibagikan dengan mudah ke rekan satu tim.
-
seeders: Biasanya digunakan untuk mengisi database dengan data awal. Misalnya, membuat akun admin default saat aplikasi pertama kali di-deploy.
-
factories: Bekerja sama erat dengan seeders, factories digunakan untuk men-generate ribuan data palsu/dummy (biasanya menggunakan pustaka Faker) untuk keperluan testing atau memvisualisasikan tampilan sebelum data asli masuk.
Folder /public
Ini adalah pintu depan dari aplikasimu, dan satu-satunya folder yang boleh diekspos atau diakses langsung oleh dunia luar (browser pengunjung). Di sinilah file index.php bersemayam, berfungsi sebagai titik masuk (entry point) tunggal untuk seluruh permintaan.
Selain index.php, folder ini adalah tempat yang tepat untuk menyimpan aset statis seperti gambar, file CSS yang sudah dikompilasi, dan file JavaScript. Penting untuk diingat saat tahap deployment (misalnya di cPanel atau VPS), pastikan Document Root dari web server-mu mengarah ke folder /public ini, bukan ke root folder proyek. Ini adalah praktik keamanan dasar agar file .env dan source code-mu tidak bisa diunduh oleh peretas.
Folder /resources
Jika folder /app adalah otak, maka folder /resources adalah wajah dari aplikasimu. Di sinilah tempat penyimpanan file yang belum dikompilasi atau file yang akan ditampilkan ke pengguna.
-
views: Tempat di mana kamu menaruh file HTML aplikasimu. Laravel menggunakan template engine bernama Blade, jadi file di sini berakhiran
.blade.php. -
css & js: Tempat menyimpan raw asset. Jika kamu menggunakan Tailwind CSS, Vue, React, atau sekadar menulis SASS, file mentahnya ditaruh di sini. Nanti, alat seperti Vite (yang merupakan bawaan Laravel terbaru) akan mengompilasinya dan meletakkannya di folder
/public.
Folder /routes
Anggaplah ini sebagai peta navigasi. Saat seseorang mengetikkan URL di browser, Laravel akan melihat folder ini untuk menentukan halaman atau logika mana yang harus dieksekusi.
-
web.php: Digunakan untuk semua rute yang diakses via browser. Rute di sini otomatis dilindungi oleh sistem keamanan seperti perlindungan CSRF dan mendukung session.
-
api.php: Jika kamu membangun aplikasi backend yang mengembalikan respons JSON (misalnya untuk aplikasi mobile atau layanan pihak ketiga), kamu menuliskannya di sini. Rute ini bersifat stateless (tidak menggunakan session berbasis cookie).
-
console.php: Digunakan untuk mendefinisikan rute perintah CLI kustom.
Folder /storage
Gudang penyimpanan utama. Saat aplikasimu berjalan, Laravel akan menulis berbagai macam hal, dan semuanya masuk ke sini. Folder ini berisi:
-
app: Tempat penyimpanan file yang diunggah oleh pengguna (misalnya foto profil atau dokumen PDF). Agar file di dalam
storage/app/publicbisa diakses dari browser, kita harus membuat "jembatan" ke folder/publicmenggunakan perintahphp artisan storage:link. -
framework: Digunakan oleh Laravel sendiri untuk menyimpan session, file cache, dan views yang sudah dikompilasi.
-
logs: Tempat bersarangnya file
laravel.log. Jika aplikasimu error atau menampilkan layar kosong (white screen of death), ini adalah tempat pertama yang harus kamu periksa. File log ini bagaikan kotak hitam pesawat yang mencatat setiap kesalahan yang terjadi.
Folder /tests
Sebagai software engineer yang profesional, menulis automated testing adalah keharusan. Folder ini adalah rumah bagi semua pengujian otomatis tersebut. Terdapat Feature tests (menguji alur kerja aplikasi secara keseluruhan, seperti simulasi pengguna menekan tombol login) dan Unit tests (menguji satu fungsi spesifik secara terisolasi).
Folder /vendor
Ini adalah kotak hitam milik Composer. Segala library, package, dan komponen pihak ketiga (termasuk core dari framework Laravel itu sendiri) yang kamu install akan diunduh ke folder ini. Aturan emasnya: Jangan pernah memodifikasi file apapun di dalam folder ini secara manual! Jika kamu melakukannya, semua perubahanmu akan tertimpa dan hilang saat kamu atau rekan kerjamu menjalankan composer update. Folder ini juga secara default diabaikan oleh Git (via .gitignore).
File-File Kritis di Root Directory
Berada di luar semua folder di atas, ada beberapa file individual yang peranannya sangat krusial dalam siklus hidup pengembangan aplikasi.
1. File .env
File environment ini menyimpan informasi paling rahasia dari aplikasimu. Mulai dari kredensial koneksi database (nama pengguna, kata sandi, nama host), kunci API dari layanan pihak ketiga (seperti payment gateway atau AWS), hingga status aplikasi (apakah sedang dalam mode local development atau production).
Sangat penting untuk disadari bahwa file .env ini tidak boleh ikut di-commit ke repositori seperti GitHub atau GitLab. Sebagai gantinya, Laravel menyediakan file .env.example sebagai cetak biru. Rekan setimmu yang mengkloning proyek hanya perlu menyalin file .example tersebut menjadi .env mereka sendiri dan mengisinya dengan kredensial lokal mereka.
2. File composer.json dan composer.lock
composer.json adalah paspor dari aplikasimu. File ini mencatat package pihak ketiga apa saja yang dibutuhkan agar aplikasi bisa berjalan, spesifikasi versi PHP yang diminta, dan konfigurasi autoloading. Sedangkan composer.lock mencatat versi absolut dari package yang terinstal, memastikan bahwa semua developer di tim (dan server production) menggunakan versi pustaka yang sama persis, mencegah masalah "It works on my machine".
3. File artisan
Ini bukanlah folder, melainkan sebuah script PHP. artisan adalah Command Line Interface (CLI) ajaib yang disertakan oleh Laravel. Melalui perantara file inilah kamu mengeksekusi berbagai perintah untuk mempercepat pekerjaanmu, mulai dari membuat Controller (php artisan make:controller), menjalankan migrasi database (php artisan migrate), hingga menyalakan server pengembangan lokal (php artisan serve).
Best Practices Dan Pola Pikir Mengelola Struktur Laravel
Memahami fungsi tiap folder barulah setengah dari pertempuran. Mengetahui di mana menempatkan kode seiring dengan membesarnya proyek adalah keahlian yang membedakan programmer pemula dari seorang system analyst atau software engineer yang matang.
Hindari "Fat Controllers"
Seringkali, pemula menjejalkan semua logika di dalam Controller. Controller bertugas menerima request, memvalidasi form, memproses query database, memanggil API eksternal, lalu mengembalikan respons. Jika Controller-mu mulai mencapai ratusan atau ribuan baris, artinya kamu telah melanggar prinsip Single Responsibility.
-
Praktik Terbaik: Gunakan fitur Form Requests bawaan Laravel untuk memindahkan logika validasi ke luar Controller. Jika kamu memiliki logika bisnis yang rumit (misalnya, perhitungan transaksi pada aplikasi kasir atau Point of Sale), buatlah folder baru di dalam
/app, misalnya/app/Servicesatau/app/Actions, dan letakkan logika tersebut di sana. Controller idealnya hanya menjadi dirigen yang mengatur lalu lintas jalannya kode, bukan pemain instrumen utama.
Gunakan Resource Controllers
Daripada menulis rute manual satu per satu untuk operasi CRUD (Create, Read, Update, Delete), manfaatkan perintah php artisan make:controller NamaController --resource. Laravel secara otomatis akan membuat kerangka metode yang standar (index, create, store, show, edit, update, destroy) yang secara drastis membuat kode aplikasimu seragam dan mudah ditebak oleh developer lain.
Kesimpulan
Struktur folder Laravel mungkin awalnya terlihat seperti labirin, namun ia dibangun di atas konvensi yang sangat matang dan disepakati oleh ribuan developer kelas dunia. Mereka telah memikirkan di mana konfigurasi seharusnya berada, di mana logika harus bersarang, dan di mana aset harus disimpan dengan aman.
Dengan mengikuti konvensi ini (alih-alih melawannya), kamu akan menemukan bahwa proses development menjadi jauh lebih mulus. Kamu tidak perlu lagi membuang waktu memikirkan arsitektur direktori; kamu bisa langsung fokus menyelesaikan masalah bisnis dan merancang solusi untuk pengguna aplikasimu. Semakin sering kamu berinteraksi dengan Laravel, semakin struktur ini akan terasa alami dan intuitif, seperti rumah sendiri, Yaaa Kannn?