1. Identitas
| Komponen | Keterangan |
| Nama Sekolah | SMK Salafiyah |
| Mata Pelajaran | Pemrograman Web Backend |
| Kategori Mapel | Produktif |
| Kelas | XI |
| Tema Pokok | RESTful CRUD & Database Integration Laravel |
| Alokasi Waktu | 5 Pertemuan × 8 JP × 45 menit = 40 JP |
2. Tujuan Pembelajaran
- Konfigurasi Koneksi Database: Menghubungkan aplikasi Laravel ke database menggunakan file .env, agar data aplikasi dapat tersimpan secara permanen layaknya mencatat transaksi di buku kas warung.
- Operasi Create dengan Validasi: Membangun endpoint untuk menambah data dengan validasi input, agar aplikasi tidak error saat menerima data yang tidak sesuai format.
- Operasi Read Data: Membangun endpoint untuk menampilkan daftar data dan data spesifik, agar pengguna dapat melihat informasi yang mereka perlukan dengan mudah.
- Operasi Update dan Delete: Membangun endpoint untuk mengubah dan menghapus data, agar sistem dapat memperbarui informasi yang sudah tidak relevan atau salah.
- Diagnosis dan Error Handling: Membaca log kesalahan server untuk menemukan letak masalah, agar murid terbiasa mandiri dalam memperbaiki bug sebelum bertanya pada guru.
Profil Pelajar Pancasila
- Gotong Royong: Murid bekerja dalam pasangan tutor sebaya untuk memecahkan masalah kode, saling membantu saat salah satu kesulitan memahami sintaks.
- Mandiri: Murid secara bertahap mencoba mencari solusi di dokumentasi atau log error sebelum meminta bantuan guru, meningkatkan rasa percaya diri.
- Bernalar Kritis: Murid menganalisis alur data dari request (input) hingga tersimpan ke database, bukan sekadar menyalin kode.
3. Pemahaman Bermakna & Pertanyaan Pemantik
Pemahaman Bermakna: Membuat aplikasi backend itu seperti mengelola buku kas di warung desa. Ada proses mencatat barang baru (Create), melihat stok barang (Read), mencoret barang yang sudah laku atau rusak (Delete), dan memperbaiki catatan harga (Update). Jika catatan kita berantakan atau salah tulis, maka seluruh perhitungan di warung akan kacau.
- Jika kamu ingin mencatat hutang pelanggan di buku, apa saja yang harus kamu tulis agar tidak tertukar?
- Bagaimana jika ada orang yang menghapus tulisan di buku kasmu tanpa izin, apa yang akan terjadi dengan uang di warungmu?
- Jika kamu menemukan error di aplikasi, apakah itu berarti aplikasi "rusak selamanya" atau hanya ada "salah tulis" yang perlu kita cari bersama?
4. Desain Pembelajaran & Bahan Ajar
Model: Project Based Learning (PBL) — Membangun sistem "Manajemen Inventaris Warung" agar murid memahami alur data yang nyata.
Metode:
- Tutor Sebaya: Murid yang sudah paham membantu rekan di sebelahnya agar suasana kelas lebih cair.
- Scaffolding: Memberikan lembar panduan kode (cheat sheet) yang bisa diisi bagian kosongnya agar murid tidak langsung pusing melihat kode kosong.
Alat & Bahan:
- Laptop dengan XAMPP dan Laravel terinstall.
- Postman sebagai alat penguji API.
- Cheat Sheet sintaks Laravel (kertas fisik).
- Modul bergambar alur data (flowchart).
- Sticky notes untuk papan "Error & Solusi".
Strategi Diferensiasi:
- Murid Tertinggal: Diberikan template kode (boilerplate) yang sudah 80% jadi, murid hanya melengkapi bagian logika utama.
- Murid Cepat: Diberikan tantangan tambahan berupa penambahan fitur "Search" atau "Filter" pada endpoint Read.
- Murid dengan hambatan motorik/penglihatan: Menggunakan font editor ukuran besar dan bantuan pengetikan oleh tutor sebaya.
5. Langkah-langkah Pembelajaran
Pertemuan 1: Koneksi Basis Data
Kegiatan Awal (15 menit)
- [3 mnt] Guru membuka kelas: "Siapa yang pernah bantu orang tua mencatat stok barang di warung? Hari ini kita buat versi digitalnya."
- [5 mnt] Murid menyiapkan lingkungan kerja (XAMPP dan Laravel).
- [5 mnt] Guru bertanya: "Apa yang terjadi jika kita tidak menghubungkan aplikasi kita ke buku kas (database)?"
- [2 mnt] Guru menyampaikan tujuan: Kita akan menghubungkan Laravel dengan Database MySQL.
Kegiatan Inti (90 menit)
- [10 mnt] Guru mendemonstrasikan koneksi database dengan analogi menghubungkan pipa air dari toren (DB) ke keran (Laravel).
- [10 mnt] Murid membuka file .env dan menyesuaikan konfigurasi DB_DATABASE.
- [10 mnt] Guru menunjukkan cara menjalankan php artisan migrate.
- [15 mnt — CHECKPOINT TUTOR SEBAYA] Murid A mengecek file .env, Murid B mengecek apakah tabel sudah muncul di phpMyAdmin.
- [10 mnt] Murid membuat model sederhana.
- [15 mnt] Murid menjalankan migrasi tabel pertama mereka.
- [10 mnt — CHECKPOINT TUTOR SEBAYA] Saling cek apakah ada pesan error "Access Denied".
- [10 mnt] Guru mengapresiasi keberhasilan koneksi murid.
Kegiatan Penutup (15 menit)
- [5 mnt] Guru bertanya: "Apa kendala paling sering saat menghubungkan database?"
- [3 mnt] Murid menulis jawaban di sticky note.
- [5 mnt] Guru memotivasi: "Kalian baru saja membangun fondasi rumah, jangan takut jika ada error, itu tandanya kalian sedang belajar."
- [2 mnt] Preview: "Besok kita akan belajar cara memasukkan data ke dalam gudang (database)."
Pertemuan 2: Operasi Create (Tambah Data)
Kegiatan Awal (15 menit)
- [3 mnt] Guru menyapa: "Apakah semua sudah siap mencatat data barang?"
- [5 mnt] Murid mereview koneksi database pertemuan kemarin.
- [5 mnt] Guru: "Bagaimana jika ada orang yang mengisi harga barang dengan huruf? Apakah itu boleh?"
- [2 mnt] Tujuan: Membuat fungsi input data dengan validasi.
Kegiatan Inti (90 menit)
- [10 mnt] Guru mendemonstrasikan validasi dengan analogi "penjaga gerbang" yang menolak barang tidak berlabel.
- [10 mnt] Murid membuat Controller untuk fungsi store.
- [10 mnt] Guru membimbing penulisan kode validasi `$request->validate()`.
- [15 mnt — CHECKPOINT TUTOR SEBAYA] Cek apakah input kosong memunculkan pesan error.
- [10 mnt] Murid mencoba kirim data via Postman.
- [15 mnt] Murid memperbaiki kode jika data belum masuk database.
- [10 mnt — CHECKPOINT TUTOR SEBAYA] Saling cek validasi: "Coba kirim data tanpa nama, muncul pesan error tidak?"
- [10 mnt] Guru menayangkan 1 contoh cara penulisan validasi yang rapi.
Kegiatan Penutup (15 menit)
- [5 mnt] Refleksi: "Mengapa validasi itu seperti sabuk pengaman di mobil?"
- [3 mnt] Murid menjawab lisan.
- [5 mnt] Motivasi: "Kalian sudah bisa mengamankan data, ini skill hebat!"
- [2 mnt] Preview: "Besok kita akan belajar cara membaca kembali data yang sudah disimpan."
Pertemuan 3: Operasi Read (Baca Data)
Kegiatan Awal (15 menit)
- [3 mnt] Guru: "Jika buku kas kalian hilang, kalian tidak tahu sisa barang. Mari kita buat cara melihatnya."
- [5 mnt] Murid membuka project pertemuan 2.
- [5 mnt] Guru: "Bagaimana cara mengambil 1 barang spesifik dari ribuan barang di toko?"
- [2 mnt] Tujuan: Menampilkan daftar data dan data spesifik (show).
Kegiatan Inti (90 menit)
- [10 mnt] Guru mendemonstrasikan fungsi index dan show dengan analogi mencari barang di rak supermarket.
- [10 mnt] Murid membuat route untuk index dan show.
- [10 mnt] Guru membantu murid menuliskan `Barang::all()` dan `Barang::find($id)`.
- [15 mnt — CHECKPOINT TUTOR SEBAYA] Cek apakah list data muncul di Postman (format JSON).
- [10 mnt] Murid mencoba mengakses data berdasarkan ID.
- [15 mnt] Murid melakukan percobaan akses ID yang tidak ada.
- [10 mnt — CHECKPOINT TUTOR SEBAYA] Saling cek: "Apakah muncul error 404 saat ID salah?"
- [10 mnt] Guru mengonfirmasi hasil kerja murid.
Kegiatan Penutup (15 menit)
- [5 mnt] Refleksi: "Apa perbedaan menampilkan semua data dengan satu data saja?"
- [3 mnt] Murid menuliskan di buku catatan.
- [5 mnt] Motivasi: "Kalian semakin mahir, kode kalian sudah mulai berfungsi seperti aplikasi nyata."
- [2 mnt] Preview: "Besok kita akan belajar mengubah data yang salah tulis."
Pertemuan 4: Update & Delete
Kegiatan Awal (15 menit)
- [3 mnt] Guru: "Bagaimana jika harga barang berubah? Atau barang sudah habis?"
- [5 mnt] Review singkat operasi Read.
- [5 mnt] Guru: "Apa risiko jika kita menghapus data tanpa memastikan datanya ada?"
- [2 mnt] Tujuan: Mengubah (update) dan menghapus (delete) data.
Kegiatan Inti (90 menit)
- [10 mnt] Guru mendemonstrasikan update dan delete dengan analogi mencoret harga lama dan membuang barang rusak.
- [10 mnt] Murid membuat method update dan destroy di controller.
- [10 mnt] Guru mendampingi penggunaan `findOrFail()` untuk keamanan.
- [15 mnt — CHECKPOINT TUTOR SEBAYA] Cek apakah data benar-benar berubah di database.
- [10 mnt] Murid mencoba menghapus data melalui Postman (DELETE).
- [15 mnt] Murid melakukan debugging jika data tidak terhapus.
- [10 mnt — CHECKPOINT TUTOR SEBAYA] Saling review: "Apakah pesan sukses muncul setelah hapus?"
- [10 mnt] Guru apresiasi ketelitian murid.
Kegiatan Penutup (15 menit)
- [5 mnt] Refleksi: "Apa yang paling sulit dari proses Update dan Delete?"
- [3 mnt] Murid menjawab lisan.
- [5 mnt] Motivasi: "Kalian sudah menguasai CRUD, inti dari hampir semua aplikasi di dunia!"
- [2 mnt] Preview: "Besok kita akan belajar cara menangani error agar aplikasi tidak 'ngambek'."
Pertemuan 5: Error Handling & Diagnosis
Kegiatan Awal (15 menit)
- [3 mnt] Guru: "Pernahkah aplikasi kalian tiba-tiba muncul layar merah? Mari kita jadi detektif kode."
- [5 mnt] Murid menyiapkan log file Laravel.
- [5 mnt] Guru: "Di mana kita bisa mencari tahu apa penyebab error?"
- [2 mnt] Tujuan: Membaca log dan memperbaiki error secara mandiri.
Kegiatan Inti (90 menit)
- [10 mnt] Guru mendemonstrasikan cara membaca log error di `storage/logs/laravel.log`.
- [10 mnt] Murid sengaja membuat error (misal: hapus titik koma) dan melihat log-nya.
- [10 mnt] Guru membimbing teknik `try-catch` sederhana.
- [15 mnt — CHECKPOINT TUTOR SEBAYA] Saling memberikan tantangan error untuk diperbaiki.
- [10 mnt] Murid memperbaiki error yang mereka buat sendiri.
- [15 mnt] Murid membersihkan kode dari semua sisa error.
- [10 mnt — CHECKPOINT TUTOR SEBAYA] Saling cek: "Apakah aplikasinya sudah berjalan lancar?"
- [10 mnt] Guru memberikan apresiasi atas keberhasilan murid menjadi detektif.
Kegiatan Penutup (15 menit)
- [5 mnt] Refleksi: "Apa langkah pertama yang harus dilakukan saat aplikasi error?"
- [3 mnt] Murid menjawab: "Cek log!"
- [5 mnt] Motivasi: "Kalian bukan lagi pemula, kalian sudah jadi developer yang bisa memperbaiki masalah sendiri."
- [2 mnt] Penutup: "Selamat, kalian sudah menyelesaikan project RESTful CRUD pertama kalian!"
6. Asesmen
Diagnostik
- Apakah kamu sudah pernah mencoba menginstall XAMPP atau software web server sebelumnya?
- Seberapa nyaman kamu membaca kode bahasa Inggris (sangat nyaman/biasa saja/takut)?
- Apa yang kamu lakukan jika melihat pesan error di layar komputer?
- Apakah kamu lebih suka belajar dengan membaca buku atau mencoba langsung di komputer?
- Siapa teman di kelas yang menurutmu paling jago membantu menjelaskan materi?
Tindak lanjut: Murid yang belum pernah install software akan dikelompokkan dengan yang sudah mahir di awal pertemuan.
Formatif
- Keaktifan berdiskusi dengan tutor sebaya.
- Kemampuan menjalankan perintah artisan tanpa bantuan guru.
- Ketepatan format JSON pada output API di Postman.
Contoh kalimat umpan balik lembut:
- "Wah, kodenya hampir benar! Coba cek titik koma di baris 12, biasanya itu penyebab errornya."
- "Tidak apa-apa salah, justru dari error ini kita tahu di mana letak kelemahannya. Ayo kita lihat log-nya bersama."
Sumatif
Deskripsi Proyek: Membuat API "Manajemen Barang Warung" yang memiliki endpoint untuk input barang, melihat daftar barang, mengubah data barang, dan menghapus barang. Data harus tersimpan di database MySQL.
Akomodasi Slow Learner: Disediakan "Peta Kode" (Flowchart alur data) dan "Cheat Sheet" sintaks yang ditempel di meja masing-masing.
| Kriteria | Belum Tercapai | Cukup | Baik | Sangat Baik |
| Koneksi DB | Belum berhasil | Berhasil dengan bantuan | Berhasil mandiri | Berhasil & bantu teman |
| Operasi CRUD | Hanya 1 fungsi | 2-3 fungsi | 4 fungsi lengkap | Lengkap + validasi ketat |
| Error Handling | Tidak paham log | Paham log dasar | Bisa baca log & perbaiki | Mandiri & proaktif |
| Profil Pancasila | Pasif | Cukup kooperatif | Aktif membantu | Memimpin tutor sebaya |
Mengetahui,
Kepala SMK Salafiyah
Erni Sofa Nugraha, S. Pd
NIP. -
Guru Mata Pelajaran
Ahmad Hanif Dzikron
NIP. ........................................