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:

bash
composer create-project laravel/laravel aplikasi-pertama

Perintah 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):

text
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 DONE

Setelah selesai, masuk ke direktori proyek dan pastikan versi framework yang terpasang:

bash
cd aplikasi-pertama
php artisan --version

Output yang Dihasilkan:

text
Laravel Framework 13.36.0

Menjalankan 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:

bash
php artisan serve

Perintah ini menempati terminal dan terus berjalan sampai dihentikan dengan Ctrl+C. Tampilan awalnya seperti berikut:

text
   INFO  Server running on [http://127.0.0.1:8000].

  Press Ctrl+C to stop the server

Buka 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
<?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
<?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:

bash
php artisan test tests/Feature/HaloRouteTest.php

Output yang Dihasilkan:

text
  PASS  Tests\Feature\HaloRouteTest
  ✓  route halo mengembalikan teks                                       0.09s

  Tests:    1 passed (2 assertions)
  Duration:  0.17s

Test 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:

blade
<!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
<?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!');
    }
}
bash
php artisan test tests/Feature/WelcomeTest.php

Output yang Dihasilkan:

text
  PASS  Tests\Feature\WelcomeTest
  ✓  halaman utama menampilkan sambutan                                  0.10s

  Tests:    1 passed (2 assertions)
  Duration:  0.17s

Dua 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:

DirektoriIsi
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.