Teori tanpa praktik cepat menguap, jadi kita tutup Section ini dengan membuat aplikasi Laravel sungguhan dari nol. Target kita modest tetapi lengkap sebagai siklus: membuat proyek baru, menjalankan development server, menambahkan route sendiri, lalu mengubah tampilan halaman utama — semuanya dibuktikan dengan test otomatis. Seluruh perintah pada chapter ini telah dijalankan dan diverifikasi pada Laravel 13.36 dengan PHP 8.4, sehingga output yang Anda lihat di layar akan konsisten dengan materi.
Prasyarat #
Kita membutuhkan dua perangkat: PHP 8.3 atau lebih baru dan Composer. Periksa keduanya dengan perintah php -v dan composer --version — bila keduanya belum siap atau Anda ingin penyiapan yang lebih rapi (misalnya dengan Laravel Herd), ikuti langkah lengkapnya di chapter Instalasi Laravel
pada Section Persiapan Lingkungan Kerja. Untuk membangun aset frontend dengan Vite nanti kita juga membutuhkan Node, tetapi materi chapter ini tidak memerlukannya.
Membuat Proyek Baru dengan Composer #
Cara paling langsung membuat proyek Laravel adalah lewat perintah create-project milik Composer. Buka terminal, pindah ke direktori tempat kita menyimpan proyek, lalu jalankan:
composer create-project laravel/laravel aplikasi-pertamaPerintah tersebut mengunduh kerangka aplikasi laravel/laravel beserta seluruh dependensinya, menyalin berkas .env.example menjadi .env, membuat APP_KEY, menyiapkan database SQLite, lalu menjalankan migration awal — semuanya otomatis. Berikut bagian penting output nyatanya (baris ... menandai daftar paket yang dipangkas):
Creating a "laravel/laravel" project at "./aplikasi-pertama"
Installing laravel/laravel (v13.11.0)
- Installing laravel/laravel (v13.11.0): Extracting archive
...
79 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan key:generate --ansi
INFO Application key set successfully.
> @php -r "file_exists('database/database.sqlite') || touch('database/database.sqlite');"
> @php artisan migrate --graceful --ansi
INFO Preparing database.
Creating migration table ........................................... 2.74ms DONE
INFO Running migrations.
0001_01_01_000000_create_users_table ................................. 3.85ms DONE
0001_01_01_000001_create_cache_table ................................ 1.30ms DONE
0001_01_01_000002_create_jobs_table ................................. 4.36ms DONESetelah selesai, masuk ke direktori proyek dan pastikan versi framework yang terpasang:
cd aplikasi-pertama
php artisan --versionOutput yang Dihasilkan:
Laravel Framework 13.36.0Menjalankan Development Server #
Aplikasi kita sekarang adalah kumpulan berkas PHP — belum ada yang bisa dilihat sampai ada server yang menjalankannya. Laravel menyediakan development server bawaan yang cukup untuk belajar:
php artisan servePerintah ini menempati terminal dan terus berjalan sampai dihentikan dengan Ctrl+C. Tampilan awalnya seperti berikut:
INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the serverBuka http://127.0.0.1:8000 di browser dan halaman selamat datang Laravel akan tampil. Situs resmi juga menyebut alternatif composer run dev yang selain server juga menyalakan queue worker dan Vite untuk aset frontend — untuk kebutuhan chapter ini, php artisan serve sudah lebih dari cukup.
Menambahkan Route Pertama #
Sekarang kita buat route sendiri. Bukalah routes/web.php; bawaannya berisi satu route yang mengarahkan URL / ke view welcome. Tambahkan route baru di bawahnya:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
Route::get('/halo', fn () => 'Halo Laravel!');Satu baris tersebut berarti: request GET /halo dijawab dengan teks Halo Laravel!. Saat development server masih berjalan, buka http://127.0.0.1:8000/halo di browser untuk melihatnya. Karena mengandalkan browser bukan cara yang bisa direplikasi otomatis, kita buktikan perilaku route ini dengan feature test. Buat berkas tests/Feature/HaloRouteTest.php:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class HaloRouteTest extends TestCase
{
public function test_route_halo_mengembalikan_teks(): void
{
$response = $this->get('/halo');
$response->assertStatus(200);
$response->assertSee('Halo Laravel!');
}
}Lalu jalankan:
php artisan test tests/Feature/HaloRouteTest.phpOutput yang Dihasilkan:
PASS Tests\Feature\HaloRouteTest
✓ route halo mengembalikan teks 0.09s
Tests: 1 passed (2 assertions)
Duration: 0.17sTest tersebut mensimulasikan request GET /halo tanpa browser, lalu memastikan status 200 dan isi body memuat teks sapaan kita. Pola kecil ini — tulis route, tulis test — adalah kebiasaan yang akan terus kita pakai sepanjang Course.
Mengubah Halaman Utama #
Halaman utama dirender oleh berkas resources/views/welcome.blade.php. Karena berkas bawaannya panjang dan penuh styling, kita ganti seluruh isinya dengan versi sederhana berbahasa Indonesia:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="utf-8">
<title>{{ config('app.name', 'Laravel') }} — Selamat Datang</title>
</head>
<body>
<h1>Selamat datang di aplikasi Laravel pertama kita!</h1>
<p>Halaman ini dirender oleh file <code>resources/views/welcome.blade.php</code>.</p>
</body>
</html>Ekspresi {{ config('app.name', 'Laravel') }} membaca nama aplikasi dari konfigurasi — nilainya bisa diubah di berkas .env lewat variabel APP_NAME. Muat ulang http://127.0.0.1:8000 dan halaman utama kini menampilkan sapaan baru. Kita buktikan lagi lewat feature test di tests/Feature/WelcomeTest.php:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class WelcomeTest extends TestCase
{
public function test_halaman_utama_menampilkan_sambutan(): void
{
$response = $this->get('/');
$response->assertStatus(200);
$response->assertSee('Selamat datang di aplikasi Laravel pertama kita!');
}
}php artisan test tests/Feature/WelcomeTest.phpOutput yang Dihasilkan:
PASS Tests\Feature\WelcomeTest
✓ halaman utama menampilkan sambutan 0.10s
Tests: 1 passed (2 assertions)
Duration: 0.17sDua test yang lolos menandakan aplikasi pertama kita hidup: route terdaftar, view dirender, dan keduanya terverifikasi otomatis.
Folder yang Perlu Dikenal #
Terakhir, kenali beberapa direktori utama proyek yang barusan kita buat:
| Direktori | Isi |
|---|---|
app/ | Kode aplikasi: Model, controller, command, provider |
routes/ | Definisi route: web.php dan console.php |
resources/views/ | Template Blade |
database/migrations/ | Migration pembentuk skema database |
config/ | Berkas konfigurasi aplikasi |
tests/ | Feature dan unit test |
Aplikasi pertama sudah berdiri, dan sepanjang Section ini kita telah mengenal definisi Laravel sampai arsitektur serta lifecycle-nya. Membuatnya berjalan mulus di komputer masing-masing — dari pemilihan versi PHP sampai konfigurasi database dan editor — adalah fokus Section berikutnya: Persiapan Lingkungan Kerja.