πŸ’» Pemrograman Web 2
πŸŽ“ Pertemuan
Pertemuan 16: Final Project & Ujian Akhir Semester (UAS)

MODUL PEMROGRAMAN WEBSITE 2

Mata Kuliah: Pemrograman Website 2
Kode MK: INF2419
SKS: 3 (Praktikum)
Semester: Genap 2025/2026
Program Studi: Informatika
Fakultas: FEBI / Saintek
Universitas: UIN K.H. Abdurrahman Wahid Pekalongan

Dosen Pengampu: Mohammad Reza Maulana, M.Kom
NIP: 199110082025051002

Pertemuan: 16 dari 16
Durasi: 150 menit (3 Γ— 50 menit)
Studi Kasus Berkelanjutan: Sistem Manajemen Perpustakaan


PERTEMUAN 16

UJIAN AKHIR SEMESTER (UAS)


A. INFORMASI PERTEMUAN

AspekKeterangan
Capaian Pembelajaran Lulusan (CPL)CPL10: Mampu mendesain, mengimplementasikan, dan mengevaluasi solusi berbasis komputasi sesuai kebutuhan pengguna.
Capaian Pembelajaran Mata Kuliah (CPMK)CPMK10.1: Mampu mengembangkan dan mengevaluasi aplikasi web backend sesuai kebutuhan pengguna.
Sub-CPMK yang DiujiSub-CPMK10.1.2: Mampu menguji fungsionalitas aplikasi web backend berdasarkan skenario penggunaan.
Sub-CPMK10.1.3: Mampu menyajikan dan menjelaskan hasil pengembangan aplikasi web secara sistematis.
Indikator PencapaianMahasiswa mampu:
1. Mempresentasikan sistem perpustakaan yang telah dibangun
2. Mendemonstrasikan semua fitur aplikasi secara live
3. Menjelaskan arsitektur dan teknologi yang digunakan
4. Menjelaskan implementasi MVC pattern
5. Menjelaskan database relationships dan business logic
6. Menjawab pertanyaan teknis dengan baik
7. Menunjukkan kemampuan problem-solving
8. Mengevaluasi kelebihan dan kekurangan sistem
Format Ujianβ€’ Presentasi Project (40%)
β€’ Demo Aplikasi Live (40%)
β€’ Tanya Jawab (20%)
β€’ Durasi: 15-20 menit per mahasiswa

B. PENDAHULUAN

1. Deskripsi Ujian Akhir Semester

Ujian Akhir Semester (UAS) untuk mata kuliah Pemrograman Website 2 berbentuk presentasi dan demo project yang telah dikerjakan mahasiswa sepanjang semester. Mahasiswa akan mempresentasikan Sistem Manajemen Perpustakaan yang telah dibangun menggunakan Laravel, mendemonstrasikan fitur-fitur utama secara live, dan menjawab pertanyaan teknis dari dosen penguji.

UAS ini bertujuan untuk:

  • Mengevaluasi pemahaman mahasiswa terhadap konsep backend development
  • Mengukur kemampuan implementasi teori ke dalam praktik
  • Menilai kualitas code dan best practices
  • Menguji kemampuan presentasi dan komunikasi teknis
  • Mengidentifikasi problem-solving skills mahasiswa

2. Rangkuman Perjalanan Pembelajaran

Journey Lengkap (Pertemuan 1-16):

═══════════════════════════════════════════════════════════
              PEMROGRAMAN WEBSITE 2 - COMPLETE
═══════════════════════════════════════════════════════════

πŸ“š FASE 1: PHP FOUNDATION (Week 1-7)
β”œβ”€ Week 1: Backend Introduction & Web Concepts
β”œβ”€ Week 2: PHP Basics (Variables, Data Types, Operators)
β”œβ”€ Week 3: Control Flow (If/Else, Switch, Loops)
β”œβ”€ Week 4: Functions & Arrays
β”œβ”€ Week 5: Form Handling & Superglobals
β”œβ”€ Week 6: MySQL Database & SQL
└─ Week 7: CRUD Native PHP/MySQL

πŸŽ“ WEEK 8: UTS (Mid-Semester Exam) βœ…

⚑ FASE 2: LARAVEL FOUNDATION (Week 9-10)
β”œβ”€ Week 9: Laravel Introduction & MVC
└─ Week 10: Migration & Eloquent ORM

πŸ—οΈ FASE 3: CRUD DEVELOPMENT (Week 11-13)
β”œβ”€ Week 11: Controller & View
β”œβ”€ Week 12: CRUD Buku (Complete)
└─ Week 13: CRUD Anggota (DRY Principle)

πŸ” FASE 4: INTEGRATION (Week 14-15)
β”œβ”€ Week 14: Authentication + Transaksi
└─ Week 15: System Integration & Finalization

🎯 WEEK 16: UAS (Final Exam & Presentation) ⭐

═══════════════════════════════════════════════════════════
                    TOTAL: 16 WEEKS
              ~90 Praktikum | 1 UTS | 1 Project | 1 UAS
═══════════════════════════════════════════════════════════

3. Sistem yang Dipresentasikan

Sistem Manajemen Perpustakaan - Fitur Lengkap:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      SISTEM PERPUSTAKAAN LARAVEL                     β”‚
β”‚           (Production-Ready System)                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                      β”‚
β”‚  βœ… AUTHENTICATION & AUTHORIZATION                  β”‚
β”‚     β”œβ”€ Login dengan email & password                β”‚
β”‚     β”œβ”€ Register user baru                           β”‚
β”‚     β”œβ”€ Logout session management                    β”‚
β”‚     β”œβ”€ Middleware protection                        β”‚
β”‚     └─ Password hashing (bcrypt)                    β”‚
β”‚                                                      β”‚
β”‚  βœ… MANAJEMEN BUKU                                   β”‚
β”‚     β”œβ”€ Create: Tambah buku baru                     β”‚
β”‚     β”œβ”€ Read: Daftar & detail buku                   β”‚
β”‚     β”œβ”€ Update: Edit informasi buku                  β”‚
β”‚     β”œβ”€ Delete: Hapus buku                           β”‚
β”‚     β”œβ”€ Search: Cari buku                            β”‚
β”‚     β”œβ”€ Filter: Filter per kategori                  β”‚
β”‚     └─ Validation: Form validation lengkap          β”‚
β”‚                                                      β”‚
β”‚  βœ… MANAJEMEN ANGGOTA                                β”‚
β”‚     β”œβ”€ Create: Daftar anggota baru                  β”‚
β”‚     β”œβ”€ Read: Daftar & detail anggota                β”‚
β”‚     β”œβ”€ Update: Edit data anggota                    β”‚
β”‚     β”œβ”€ Delete: Hapus anggota                        β”‚
β”‚     β”œβ”€ Date Picker: Input tanggal lahir             β”‚
β”‚     β”œβ”€ Email Validation: Format & unique            β”‚
β”‚     └─ Phone Validation: Regex Indonesia            β”‚
β”‚                                                      β”‚
β”‚  βœ… TRANSAKSI PEMINJAMAN                             β”‚
β”‚     β”œβ”€ Form peminjaman buku                         β”‚
β”‚     β”œβ”€ Auto-generate kode transaksi                 β”‚
β”‚     β”œβ”€ Auto-calculate tanggal kembali (+7 hari)     β”‚
β”‚     β”œβ”€ Update stok buku otomatis (-1)               β”‚
β”‚     β”œβ”€ Validasi: Stok tersedia, Anggota aktif       β”‚
β”‚     └─ Relasi database (FK constraints)             β”‚
β”‚                                                      β”‚
β”‚  βœ… PENGEMBALIAN BUKU                                β”‚
β”‚     β”œβ”€ Update status β†’ Dikembalikan                 β”‚
β”‚     β”œβ”€ Set tanggal dikembalikan                     β”‚
β”‚     β”œβ”€ Perhitungan denda otomatis (Rp 5.000/hari)   β”‚
β”‚     β”œβ”€ Update stok buku otomatis (+1)               β”‚
β”‚     └─ Alert keterlambatan                          β”‚
β”‚                                                      β”‚
β”‚  βœ… DASHBOARD & ANALYTICS                            β”‚
β”‚     β”œβ”€ Statistics Cards (8 metrics)                 β”‚
β”‚     β”œβ”€ Chart transaksi 6 bulan (Line Chart)         β”‚
β”‚     β”œβ”€ Chart kategori buku (Pie Chart)              β”‚
β”‚     β”œβ”€ Top 5 buku populer                           β”‚
β”‚     β”œβ”€ Top 5 anggota aktif                          β”‚
β”‚     β”œβ”€ Recent transactions table                    β”‚
β”‚     └─ Quick action buttons                         β”‚
β”‚                                                      β”‚
β”‚  βœ… GLOBAL SEARCH                                    β”‚
β”‚     β”œβ”€ Search box di navigation                     β”‚
β”‚     β”œβ”€ Search across: Buku, Anggota, Transaksi      β”‚
β”‚     β”œβ”€ Results dalam tabs                           β”‚
β”‚     β”œβ”€ Keyword highlighting                         β”‚
β”‚     └─ Empty state handling                         β”‚
β”‚                                                      β”‚
β”‚  βœ… LAPORAN TRANSAKSI                                β”‚
β”‚     β”œβ”€ Filter: Date range, Status, Anggota          β”‚
β”‚     β”œβ”€ Statistics summary                           β”‚
β”‚     β”œβ”€ Tabel laporan lengkap                        β”‚
β”‚     β”œβ”€ Print-friendly layout                        β”‚
β”‚     └─ Export Excel/PDF (optional)                  β”‚
β”‚                                                      β”‚
β”‚  βœ… UI/UX FEATURES                                   β”‚
β”‚     β”œβ”€ Responsive design (mobile-friendly)          β”‚
β”‚     β”œβ”€ Flash messages (success/error/warning)       β”‚
β”‚     β”œβ”€ Confirmation dialogs (SweetAlert2)           β”‚
β”‚     β”œβ”€ Loading indicators                           β”‚
β”‚     β”œβ”€ Form validation dengan error messages        β”‚
β”‚     β”œβ”€ Bootstrap 5.3 components                     β”‚
β”‚     └─ Bootstrap Icons                              β”‚
β”‚                                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

C. PERSIAPAN UAS

1. Checklist Persiapan Teknis

1-2 Minggu Sebelum UAS:

A. Project Completion Checklist

FITUR WAJIB:
βœ… [ ] Authentication System
    βœ… [ ] Register berfungsi
    βœ… [ ] Login berfungsi  
    βœ… [ ] Logout berfungsi
    βœ… [ ] Middleware protecting routes
    βœ… [ ] Password hashed dengan bcrypt

βœ… [ ] CRUD Buku Lengkap
    βœ… [ ] Create: Form & validation
    βœ… [ ] Read: Index & Show
    βœ… [ ] Update: Edit form & update
    βœ… [ ] Delete: Dengan confirmation
    βœ… [ ] Search & Filter berfungsi

βœ… [ ] CRUD Anggota Lengkap
    βœ… [ ] Create: Form dengan date picker
    βœ… [ ] Read: Index & Show
    βœ… [ ] Update: Edit form
    βœ… [ ] Delete: Dengan confirmation
    βœ… [ ] Email & phone validation

βœ… [ ] Transaksi Peminjaman
    βœ… [ ] Form peminjaman
    βœ… [ ] Auto-generate kode
    βœ… [ ] Auto-calculate tanggal kembali
    βœ… [ ] Update stok buku (-1)
    βœ… [ ] Validation rules

βœ… [ ] Pengembalian Buku
    βœ… [ ] Update status
    βœ… [ ] Perhitungan denda
    βœ… [ ] Update stok (+1)
    βœ… [ ] Display denda info

βœ… [ ] Dashboard
    βœ… [ ] Min 6 statistics cards
    βœ… [ ] Min 2 charts (Chart.js)
    βœ… [ ] Recent data tables
    βœ… [ ] Quick actions

βœ… [ ] Global Search
    βœ… [ ] Search box functional
    βœ… [ ] Results dalam tabs
    βœ… [ ] Keyword highlighting

βœ… [ ] Laporan Transaksi
    βœ… [ ] Filter berfungsi
    βœ… [ ] Statistics correct
    βœ… [ ] Print-friendly

QUALITY ASSURANCE:
βœ… [ ] No console errors
βœ… [ ] No PHP errors/warnings
βœ… [ ] All forms validated
βœ… [ ] Flash messages working
βœ… [ ] Responsive di mobile
βœ… [ ] Loading states implemented
βœ… [ ] Error handling proper

DATABASE:
βœ… [ ] Migrations complete
βœ… [ ] Foreign keys configured
βœ… [ ] Seeders with sample data
βœ… [ ] Database normalized

DOCUMENTATION:
βœ… [ ] README.md lengkap
βœ… [ ] Code commented
βœ… [ ] User manual created
βœ… [ ] Screenshots prepared

B. Testing Checklist

TESTING SCENARIOS:

Authentication:
[ ] Register user baru
[ ] Login dengan credentials benar
[ ] Login dengan credentials salah
[ ] Logout
[ ] Access protected route tanpa login β†’ redirect

CRUD Buku:
[ ] Create buku dengan data valid
[ ] Create buku dengan data invalid β†’ validation error
[ ] View daftar buku
[ ] View detail buku
[ ] Update buku
[ ] Delete buku β†’ confirmation
[ ] Search buku
[ ] Filter by kategori

CRUD Anggota:
[ ] Create anggota dengan data valid
[ ] Email duplicate β†’ validation error
[ ] Phone invalid format β†’ validation error
[ ] View daftar anggota
[ ] Update anggota
[ ] Delete anggota

Transaksi:
[ ] Pinjam buku (stok > 0) β†’ success
[ ] Pinjam buku (stok = 0) β†’ error
[ ] Pinjam dengan anggota nonaktif β†’ error
[ ] Kembalikan tepat waktu β†’ denda = 0
[ ] Kembalikan terlambat β†’ denda calculated
[ ] Check stok updated correctly

Dashboard:
[ ] Statistics showing correct numbers
[ ] Charts displaying data
[ ] Quick actions working

Search:
[ ] Search keyword β†’ results appear
[ ] Tabs switching correctly
[ ] Highlighting working

Laporan:
[ ] Filter by date range
[ ] Filter by status
[ ] Filter by anggota
[ ] Print layout correct

C. Technical Setup Checklist

ENVIRONMENT:
[ ] XAMPP/Laragon running
[ ] MySQL database ready
[ ] Apache/Nginx configured
[ ] .env configured correctly
[ ] APP_KEY generated
[ ] Database migrated
[ ] Sample data seeded

DEPENDENCIES:
[ ] Composer dependencies installed
[ ] NPM packages installed
[ ] Assets compiled (npm run build)

CODE CLEANUP:
[ ] Remove dd(), dump(), var_dump()
[ ] Remove commented code blocks
[ ] No TODO comments
[ ] Consistent code formatting
[ ] Remove unused imports

BACKUP:
[ ] Database backup (.sql)
[ ] Code backup (GitHub/GitLab)
[ ] Screenshots backup
[ ] Video demo backup

2. Materi Presentasi

A. Struktur Slide Presentasi

Slide Deck Structure (10-15 slides):

SLIDE 1: COVER
β”œβ”€ Judul: Sistem Manajemen Perpustakaan
β”œβ”€ Nama & NIM
β”œβ”€ Mata Kuliah: Pemrograman Website 2
└─ Logo Universitas

SLIDE 2: AGENDA
β”œβ”€ Pendahuluan
β”œβ”€ Tech Stack
β”œβ”€ Fitur Sistem
β”œβ”€ Database Schema
β”œβ”€ Demo
└─ Q&A

SLIDE 3: PENDAHULUAN
β”œβ”€ Latar Belakang
β”œβ”€ Tujuan Sistem
β”œβ”€ Scope & Limitations
└─ Target Users

SLIDE 4: TECH STACK
β”œβ”€ Backend: Laravel 12.x
β”œβ”€ Database: MySQL 8.x
β”œβ”€ Frontend: Blade, Bootstrap 5.3, Chart.js
β”œβ”€ PHP: 8.2+
β”œβ”€ Tools: Composer, NPM, Git
└─ Icons: Bootstrap Icons

SLIDE 5: ARSITEKTUR SISTEM
β”œβ”€ MVC Pattern Diagram
β”œβ”€ Request-Response Flow
β”œβ”€ Authentication Layer
└─ Business Logic Layer

SLIDE 6: DATABASE SCHEMA
β”œβ”€ ERD (Entity Relationship Diagram)
β”œβ”€ Tables: users, buku, anggota, transaksis
β”œβ”€ Relationships:
β”‚   β”œβ”€ transaksis belongsTo anggota
β”‚   β”œβ”€ transaksis belongsTo buku
β”‚   β”œβ”€ anggota hasMany transaksis
β”‚   └─ buku hasMany transaksis
└─ Foreign Keys & Constraints

SLIDE 7: FITUR UTAMA (Part 1)
β”œβ”€ Authentication
β”‚   └─ Login, Register, Logout, Middleware
β”œβ”€ CRUD Buku
β”‚   └─ Create, Read, Update, Delete, Search
└─ CRUD Anggota
    └─ Validation, Date Picker, Status

SLIDE 8: FITUR UTAMA (Part 2)
β”œβ”€ Transaksi Peminjaman
β”‚   └─ Auto-generate, Auto-calculate, Update stok
β”œβ”€ Pengembalian Buku
β”‚   └─ Perhitungan denda, Restore stok
└─ Dashboard
    └─ Statistics, Charts, Top Data

SLIDE 9: FITUR UTAMA (Part 3)
β”œβ”€ Global Search
β”‚   └─ Multi-module search, Highlighting
β”œβ”€ Laporan Transaksi
β”‚   └─ Filter, Statistics, Print
└─ UI/UX Features
    └─ Responsive, Flash messages, Confirmations

SLIDE 10: BUSINESS LOGIC
β”œβ”€ Peminjaman:
β”‚   β”œβ”€ Check stok tersedia
β”‚   β”œβ”€ Check anggota aktif
β”‚   β”œβ”€ Update stok (-1)
β”‚   └─ Generate kode transaksi
β”œβ”€ Pengembalian:
β”‚   β”œβ”€ Calculate denda (Rp 5.000/hari)
β”‚   β”œβ”€ Update status
β”‚   └─ Restore stok (+1)
└─ Validation Rules

SLIDE 11: CHALLENGES & SOLUTIONS
β”œβ”€ Challenge 1: N+1 Query Problem
β”‚   └─ Solution: Eager Loading with()
β”œβ”€ Challenge 2: Date Handling
β”‚   └─ Solution: Carbon + Flatpickr
└─ Challenge 3: Relasi Database
    └─ Solution: Foreign Keys + Eloquent

SLIDE 12: CODE QUALITY
β”œβ”€ Best Practices:
β”‚   β”œβ”€ DRY Principle (Form Request)
β”‚   β”œβ”€ MVC Pattern (Separation of Concerns)
β”‚   β”œβ”€ SOLID Principles
β”‚   └─ PSR Standards
β”œβ”€ Security:
β”‚   β”œβ”€ CSRF Protection
β”‚   β”œβ”€ Password Hashing
β”‚   β”œβ”€ Input Validation
β”‚   └─ SQL Injection Prevention
└─ Testing: Manual Testing Scenarios

SLIDE 13: DEMO
β”œβ”€ Live Demo Sistem
β”œβ”€ Walkthrough Fitur Utama
└─ Edge Cases Handling

SLIDE 14: LESSONS LEARNED
β”œβ”€ Technical Skills:
β”‚   β”œβ”€ Laravel Framework
β”‚   β”œβ”€ Eloquent ORM
β”‚   β”œβ”€ MVC Pattern
β”‚   └─ Database Design
β”œβ”€ Soft Skills:
β”‚   β”œβ”€ Problem Solving
β”‚   β”œβ”€ Time Management
β”‚   └─ Documentation
└─ Future Improvements

SLIDE 15: CLOSING
β”œβ”€ Summary
β”œβ”€ Thank You
β”œβ”€ Contact Info
└─ Q&A

B. Tips Membuat Slide yang Baik

Design Principles:

  • Gunakan template yang profesional (tidak terlalu ramai)
  • Maksimal 6-7 bullet points per slide
  • Font size minimal 24pt (agar terbaca dari jauh)
  • Gunakan high contrast (dark text on light background)
  • Konsisten dalam color scheme
  • Gunakan icons/images untuk visual aid
  • Hindari wall of text

Content Principles:

  • Slide = outline, bukan script
  • Speak, don't read
  • Focus on key points
  • Use technical terms correctly
  • Show, don't just tell (code snippets, diagrams)
  • Prepare backup slides untuk Q&A

3. Skenario Demo Live

Demo Script (8-10 menit):

══════════════════════════════════════════════════
        DEMO SCRIPT - SISTEM PERPUSTAKAAN
══════════════════════════════════════════════════

[0:00-0:30] OPENING
"Selamat pagi/siang Bapak/Ibu. Saya akan mendemonstrasikan 
Sistem Manajemen Perpustakaan yang telah saya bangun."

[0:30-1:30] 1️⃣ AUTHENTICATION
βœ… Buka halaman login
βœ… Demo login dengan credentials yang benar
   β†’ "Saya login sebagai admin dengan email admin@perpustakaan.com"
βœ… Show dashboard setelah login
   β†’ "Setelah login, user diarahkan ke dashboard"
βœ… Show navbar dengan user info
   β†’ "Di sini terlihat nama user dan ada menu logout"

[1:30-3:00] 2️⃣ CRUD BUKU
βœ… Klik menu Buku
   β†’ "Ini halaman daftar buku dengan statistics"
βœ… Demo filter kategori
   β†’ "Bisa filter berdasarkan kategori"
βœ… Demo search
   β†’ "Fitur search untuk mencari buku"
βœ… Klik "Tambah Buku"
βœ… Isi form create buku
   β†’ "Form validation mencegah input invalid"
βœ… Submit β†’ lihat flash message
   β†’ "Muncul pesan sukses dan buku baru muncul di list"
βœ… Klik detail buku
   β†’ "Detail lengkap buku dengan informasi stok"
βœ… Klik edit β†’ update data
   β†’ "Bisa edit informasi buku"
βœ… Klik delete β†’ confirmation
   β†’ "Ada konfirmasi sebelum hapus untuk mencegah accidental delete"

[3:00-4:00] 3️⃣ CRUD ANGGOTA
βœ… Klik menu Anggota
βœ… Demo tambah anggota dengan date picker
   β†’ "Date picker untuk input tanggal lahir"
βœ… Submit form
βœ… Show validation error (misal: email duplicate)
   β†’ "Validation mencegah email duplicate"
βœ… Fix dan submit lagi
βœ… Show detail anggota
   β†’ "Detail lengkap dengan umur yang dihitung otomatis"

[4:00-6:00] 4️⃣ TRANSAKSI PEMINJAMAN
βœ… Klik menu Transaksi β†’ Pinjam Buku
βœ… Pilih anggota dari dropdown
   β†’ "Hanya anggota aktif yang muncul"
βœ… Pilih buku yang ada stoknya
   β†’ "Hanya buku dengan stok > 0 yang bisa dipinjam"
βœ… Input tanggal pinjam
   β†’ "Tanggal kembali otomatis +7 hari"
βœ… Submit transaksi
   β†’ "Kode transaksi di-generate otomatis"
βœ… Check stok buku berkurang
   β†’ "Stok otomatis berkurang 1"
βœ… Show detail transaksi
   β†’ "Detail lengkap dengan info peminjaman"

[6:00-7:00] 5️⃣ PENGEMBALIAN BUKU
βœ… Buka detail transaksi yang dipinjam
βœ… Show status "Dipinjam"
βœ… Klik button "Kembalikan Buku"
βœ… Konfirmasi dengan SweetAlert
βœ… Submit pengembalian
βœ… Show perhitungan denda (jika terlambat)
   β†’ "Denda dihitung otomatis Rp 5.000 per hari"
βœ… Check stok buku bertambah
   β†’ "Stok kembali bertambah 1"

[7:00-8:30] 6️⃣ DASHBOARD & FEATURES
βœ… Klik Dashboard
βœ… Show statistics cards
   β†’ "Real-time statistics dari database"
βœ… Show charts
   β†’ "Grafik transaksi 6 bulan terakhir"
   β†’ "Pie chart kategori buku"
βœ… Show top 5 data
   β†’ "Buku paling populer dan anggota paling aktif"
βœ… Demo global search
   β†’ "Search di navigation mencari semua module"
βœ… Show search results dalam tabs
   β†’ "Results dipisah per module dengan highlighting"

[8:30-9:30] 7️⃣ LAPORAN
βœ… Klik Laporan Transaksi
βœ… Demo filter by date range
βœ… Demo filter by status
βœ… Show statistics summary
   β†’ "Total transaksi, denda, dll"
βœ… Demo print preview
   β†’ "Layout print-friendly tanpa navbar"

[9:30-10:00] 8️⃣ CLOSING DEMO
βœ… Logout
βœ… Show redirect ke login page
   β†’ "Setelah logout, redirect ke login"
βœ… Try access protected route without login
   β†’ "Protected route otomatis redirect ke login"

"Demo selesai. Ada yang ingin ditanyakan?"

══════════════════════════════════════════════════

Tips Demo yang Baik:

  1. Persiapan:

    • Bersihkan browser cache sebelum demo
    • Tutup tab lain yang tidak perlu
    • Siapkan data dummy yang bagus
    • Test demo flow 2-3 kali sebelumnya
    • Bookmark URL penting
  2. Saat Demo:

    • Bicara sambil demo (narasi yang jelas)
    • Slow down, jangan terburu-buru
    • Point ke layar saat explain
    • Zoom in jika perlu (Ctrl + Plus)
    • Jika ada error, stay calm & explain
  3. Handling Errors:

    • Jangan panic
    • Explain what went wrong
    • Show how you would debug it
    • Have backup plan (screenshots/video)

4. Persiapan Tanya Jawab

Bank Pertanyaan yang Mungkin Ditanya:

A. Konsep & Teori (30% kemungkinan)

  1. "Jelaskan apa itu MVC pattern dan bagaimana Anda implementasikan di sistem ini?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

  2. "Apa perbedaan Eloquent ORM dengan Query Builder?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

  3. "Jelaskan alur autentikasi di Laravel Breeze!"

    Jawaban tersedia di dokumen kunci jawaban dosen.

B. Implementasi Spesifik (40% kemungkinan)

  1. "Bagaimana cara Anda menghitung denda keterlambatan?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

  2. "Bagaimana Anda handle update stok buku saat peminjaman?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

  3. "Kenapa pakai Form Request instead of validasi di controller?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

C. Problem Solving (20% kemungkinan)

  1. "Apa challenge terbesar yang Anda hadapi dan bagaimana solve nya?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

  2. "Bagaimana Anda memastikan sistem ini secure?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

D. Code Quality (10% kemungkinan)

  1. "Apa itu DRY principle dan bagaimana Anda terapkan?"

    Jawaban tersedia di dokumen kunci jawaban dosen.

  2. "Kenapa pakai Laravel, bukan framework lain atau native PHP?"

    Jawaban tersedia di dokumen kunci jawaban dosen.


D. TIPS & STRATEGI SUKSES

1. Saat Presentasi

DO βœ…

  • Datang 15-30 menit lebih awal
  • Test laptop & koneksi internet
  • Buka sistem sebelum giliran Anda
  • Login ke sistem sebelumnya
  • Prepare backup (screenshots, video)
  • Speak clearly & confident
  • Eye contact dengan penguji
  • Control your pace (jangan terlalu cepat)
  • Use hand gestures naturally
  • Explain while you demo
  • Point ke screen saat menjelaskan
  • Anticipate questions

DON'T ❌

  • Datang terlambat/mepet
  • Baru buka sistem saat giliran
  • Membaca slide word by word
  • Berbicara terlalu cepat/pelan
  • Membelakangi penguji
  • Panik saat ada error
  • Berbohong saat tidak tahu
  • Skip important features
  • Go over time limit
  • Argue dengan penguji

2. Handling Errors/Technical Issues

Jika Sistem Crash/Error:

SCENARIO 1: Error saat Demo
───────────────────────────
❌ BAD RESPONSE:
"Waduh error... Ini harusnya jalan... Aneh..."
(panik, diam lama, tidak tahu apa yang salah)

βœ… GOOD RESPONSE:
"Oh, muncul error. Let me check..." 
[Check error message]
"Ini error [jelaskan error]. Normally saya akan:
1. Check di log file
2. Debug dengan dd()
3. Verify database connection
Untuk demo, saya akan skip ke fitur berikutnya dulu.
Saya punya screenshot fitur ini working sebelumnya."
[Show screenshot]

KEY POINTS:
- Stay calm
- Read error message
- Explain what error means
- Show how you debug
- Have backup plan
- Move on gracefully
SCENARIO 2: Lupa Credentials
─────────────────────────────
❌ BAD RESPONSE:
"Lupa password... Hmm... Coba ini... Salah..."

βœ… GOOD RESPONSE:
"Saya ada test account. Email: test@test.com Password: password
Atau saya bisa register account baru untuk demo."
[Proceed with alternative]

KEY POINTS:
- Have test accounts ready
- Write down credentials
- Quick recovery
SCENARIO 3: Internet Mati (untuk online presentation)
─────────────────────────────────────────────────────
❌ BAD RESPONSE:
"Internet saya mati... Tunggu ya... WiFi error..."

βœ… GOOD RESPONSE:
"Koneksi saya sepertinya bermasalah. Sementara menunggu,
saya bisa jelaskan technical implementation dari slide.
[Explain code/architecture]
Atau saya bisa share screen video demo yang sudah saya record."

KEY POINTS:
- Have backup internet (mobile hotspot)
- Record video demo beforehand
- Continue with slides while reconnecting

3. Handling Difficult Questions

Strategi Menjawab:

SCENARIO 1: Tahu Jawabannya
───────────────────────────
βœ… CONFIDENT ANSWER:
"[Jawab langsung dengan jelas]
[Berikan contoh jika perlu]
[Reference ke code jika relevan]"

Example:
Q: "Bagaimana Anda handle validation?"
A: "Saya menggunakan Form Request. Contohnya 
   StoreBukuRequest yang berisi validation rules.
   [Open file dan show code]
   Benefit-nya adalah separation of concerns dan
   validation logic terpisah dari controller."
SCENARIO 2: Tidak Yakin
───────────────────────
βœ… HONEST APPROACH:
"Hmm, saya kurang yakin tentang detail teknisnya,
tapi setahu saya [jelaskan apa yang Anda tahu].
Untuk implementation spesifik, saya perlu riset lebih lanjut."

❌ WRONG:
[Mengarang/menebak jawaban yang salah]
[Akan caught dan nilai minus]
SCENARIO 3: Tidak Tahu Sama Sekali
───────────────────────────────────
βœ… HONEST & PROFESSIONAL:
"Maaf Pak/Bu, untuk topik ini saya belum pelajari.
Tapi saya tertarik untuk explore lebih lanjut.
Apakah Bapak/Ibu bisa recommend resource untuk belajar?"

KEY POINTS:
- Jujur lebih baik daripada mengarang
- Shows willingness to learn
- Professional attitude
- Penguji appreciate honesty

4. Time Management

Timeline Management:

IDEAL TIMELINE (15 menit):
─────────────────────────
00:00 - 00:30  Opening (30s)
00:30 - 05:00  Presentasi (4.5 min)
05:00 - 13:00  Demo (8 min)
13:00 - 14:30  Q&A (1.5 min)
14:30 - 15:00  Closing (30s)

TIPS:
βœ… Practice dengan timer
βœ… Know which parts bisa di-skip jika over time
βœ… Prioritize critical features di demo
βœ… Jika over time, penguji akan cut β†’ immediate switch

Feature Priority untuk Demo:

MUST SHOW (prioritas tertinggi):
1. Login
2. CRUD Buku (minimal create & read)
3. CRUD Anggota (minimal create & read)
4. Transaksi Peminjaman
5. Pengembalian Buku

NICE TO SHOW (jika ada waktu):
6. Dashboard & Charts
7. Global Search
8. Laporan

CAN SKIP (jika waktu habis):
9. Filter & advanced features
10. UI details
11. Error handling edge cases

5. Body Language & Communication

Effective Communication:

  • Voice:

    • Volume: Cukup keras, jelas
    • Pace: Tidak terlalu cepat/lambat
    • Intonasi: Variatif (tidak monoton)
    • Pause: Beri jeda di poin penting
  • Posture:

    • Stand/sit upright (tidak slouching)
    • Face the audience/camera
    • Gestures: Natural, tidak berlebihan
    • Eye contact dengan penguji
  • Language:

    • Use technical terms correctly
    • Explain jargon if needed
    • Mix Indonesian & English naturally
    • Avoid "emm", "eee", excessive "jadi", "nah"

E. SETELAH UAS

1. Self-Reflection

Pertanyaan untuk Diri Sendiri:

TECHNICAL SKILLS:
β–‘ Apakah saya comfortable dengan Laravel sekarang?
β–‘ Bisakah saya build sistem similar dari scratch?
β–‘ Apakah saya paham MVC pattern dengan baik?
β–‘ Bisakah saya explain code saya ke orang lain?

SOFT SKILLS:
β–‘ Apakah presentasi saya effective?
β–‘ Bagaimana saya handle pressure/nervousness?
β–‘ Apakah time management saya baik?
β–‘ Bagaimana saya respond ke kritik/pertanyaan?

PROJECT MANAGEMENT:
β–‘ Apakah saya plan dengan baik dari awal?
β–‘ Apakah saya efficient dengan waktu?
β–‘ Bagaimana saya handle obstacles?

AREAS TO IMPROVE:
1. ___________________________
2. ___________________________
3. ___________________________

2. Next Steps - Continuous Learning

Immediate Actions (1-2 minggu setelah UAS):

  1. Polish Your Project:

    β–‘ Fix bugs yang ditemukan saat UAS
    β–‘ Implement feedback dari dosen
    β–‘ Improve UI/UX
    β–‘ Add missing features
    β–‘ Write better documentation
  2. Deploy to Production:

    Platform options:
    - Heroku (free tier)
    - Railway.app
    - Render
    - Shared hosting (cpanel)
    - VPS (DigitalOcean, Vultr)
    
    Make it live: https://perpustakaan-anda.herokuapp.com
  3. Showcase Your Work:

    β–‘ Update GitHub README with screenshots
    β–‘ Write blog post about your journey
    β–‘ Post on LinkedIn
    β–‘ Add to portfolio website
    β–‘ Share in Laravel Indonesia community

Short-term (1-3 bulan):

  1. Deepen Laravel Knowledge:

    Topics to learn:
    - Testing (PHPUnit, Pest)
    - Queues & Jobs
    - Events & Listeners
    - API Development (REST, GraphQL)
    - Laravel Packages
    - Advanced Eloquent
  2. Learn Modern Frontend:

    Pick one:
    - Vue.js 3 (recommended for Laravel)
    - React.js
    - Alpine.js (lightweight)
    - Livewire (no JS needed)
  3. Build More Projects:

    Project ideas:
    - E-commerce platform
    - Task management system
    - Blog/CMS
    - Booking system
    - Inventory management
    - Social media clone

Long-term (3-12 bulan):

  1. Full-Stack Development:

    Backend:
    - Advanced Laravel
    - Design Patterns
    - Microservices
    - GraphQL
    
    Frontend:
    - Modern JS framework
    - State management
    - TypeScript
    - Frontend tooling
    
    DevOps:
    - Docker
    - CI/CD (GitHub Actions)
    - Server management
    - Cloud platforms (AWS, GCP)
  2. Contribute to Open Source:

    - Fix bugs in Laravel packages
    - Create your own package
    - Help in Laravel Indonesia community
    - Answer questions on Stack Overflow
  3. Professional Development:

    - Build portfolio website
    - Apply for internships
    - Freelance projects
    - Join tech communities
    - Attend meetups/conferences

3. Career Pathways

Possible Career Paths:

BACKEND DEVELOPER
β”œβ”€ Focus: Laravel, PHP, Database, API
β”œβ”€ Skills: Laravel advanced, Testing, Design Patterns
β”œβ”€ Job Title: Backend Developer, PHP Developer, Laravel Developer
└─ Salary Range: 5-15 juta (junior), 15-30 juta (senior)

FULL-STACK DEVELOPER
β”œβ”€ Focus: Backend + Frontend
β”œβ”€ Skills: Laravel + Vue/React, Database, DevOps
β”œβ”€ Job Title: Full-Stack Developer, Software Engineer
└─ Salary Range: 7-20 juta (junior), 20-50 juta (senior)

FREELANCE DEVELOPER
β”œβ”€ Focus: Building projects for clients
β”œβ”€ Skills: Full-stack, Communication, Project Management
β”œβ”€ Platforms: Upwork, Freelancer, Sribulancer, Projects.co.id
└─ Income: Varies (10-100 juta+/month depending on projects)

TECH STARTUP
β”œβ”€ Focus: Build products, startups, scale systems
β”œβ”€ Skills: Full-stack, Product thinking, Speed
β”œβ”€ Role: Founding Engineer, Early Employee
└─ Compensation: Equity + Salary

F. PENUTUP

1. Ucapan Terima Kasih

Terima kasih telah mengikuti mata kuliah Pemrograman Website 2 sampai akhir. Perjalanan dari Pertemuan 1 hingga Pertemuan 16 ini telah membawa Anda dari tidak tahu apa itu backend development, sampai mampu membangun full-stack web application yang kompleks dengan Laravel.

2. Final Words

Untuk Mahasiswa:

"The expert in anything was once a beginner. You've proven that with dedication, practice, and perseverance, you can master complex technical skills. The Sistem Perpustakaan you've built is not just a project for gradesβ€”it's proof of your capability to build real-world applications."

Remember:

  • This is just the beginning. Web development terus berkembang. Keep learning!
  • Your project is a portfolio piece. Polish it, deploy it, showcase it!
  • Skills > Grades. Yang terpenting bukan nilai A, tapi skill yang Anda punya.
  • Community matters. Join Laravel Indonesia, contribute, help others.
  • Build things. The best way to learn is by building projects.

3. Motivational Closing

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                  β”‚
β”‚     "Every MASTER was once a DISASTER."         β”‚
β”‚                                                  β”‚
β”‚  Semester ini Anda sudah menempuh perjalanan:   β”‚
β”‚                                                  β”‚
β”‚  Week 1:  Tidak tahu PHP                       β”‚
β”‚  Week 8:  Bisa CRUD native PHP                 β”‚
β”‚  Week 16: Full-stack Laravel Developer! πŸš€     β”‚
β”‚                                                  β”‚
β”‚  That's AMAZING progress!                       β”‚
β”‚                                                  β”‚
β”‚  Skills yang sudah Anda kuasai:                 β”‚
β”‚  βœ… PHP Programming                             β”‚
β”‚  βœ… Laravel Framework                           β”‚
β”‚  βœ… MVC Pattern                                 β”‚
β”‚  βœ… Database Design                             β”‚
β”‚  βœ… Authentication                              β”‚
β”‚  βœ… CRUD Operations                             β”‚
β”‚  βœ… Business Logic                              β”‚
β”‚  βœ… Frontend Development                        β”‚
β”‚  βœ… Problem Solving                             β”‚
β”‚  βœ… Project Management                          β”‚
β”‚                                                  β”‚
β”‚  You are now a WEB DEVELOPER! πŸ’»               β”‚
β”‚                                                  β”‚
β”‚  Next steps:                                    β”‚
β”‚  1. Polish your project                        β”‚
β”‚  2. Deploy to production                       β”‚
β”‚  3. Build more projects                        β”‚
β”‚  4. Keep learning                              β”‚
β”‚  5. Apply for jobs/internships                 β”‚
β”‚                                                  β”‚
β”‚  "The only way to do great work is to          β”‚
β”‚   love what you do." - Steve Jobs              β”‚
β”‚                                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4. Resources untuk Masa Depan

Official Documentation:

Learning Platforms:

Indonesian Community:

Practice & Challenge:

  • LeetCode: Algorithm practice
  • HackerRank: PHP challenges
  • Exercism: PHP track
  • Laravel Challenges: Build small projects

Stay Updated:


I. CHECKLIST HARI H

1. Pre-UAS Checklist (1 hari sebelum)

SISTEM:
βœ… [ ] Sistem berjalan 100%
βœ… [ ] Database seeded dengan data bagus
βœ… [ ] No console errors
βœ… [ ] No PHP errors
βœ… [ ] Test semua fitur 2-3x
βœ… [ ] Backup database (.sql)
βœ… [ ] Backup code (GitHub)

PRESENTASI:
βœ… [ ] Slide sudah final
βœ… [ ] Slide di-save ke laptop & cloud
βœ… [ ] Practice presentasi 2-3x
βœ… [ ] Timing sudah pas (15 menit)
βœ… [ ] Siapkan jawaban untuk 10 possible questions

BACKUP PLAN:
βœ… [ ] Screenshot semua fitur
βœ… [ ] Record video demo (3-5 menit)
βœ… [ ] Print dokumentasi (jika offline)
βœ… [ ] USB drive dengan backup

TECHNICAL:
βœ… [ ] Laptop charged full
βœ… [ ] Charger dibawa
βœ… [ ] XAMPP/Laragon tested
βœ… [ ] Browser updated
βœ… [ ] Internet connection tested (jika online)
βœ… [ ] Backup internet (mobile hotspot)

PERSONAL:
βœ… [ ] Tidur cukup (min 7 jam)
βœ… [ ] Makan sebelum UAS
βœ… [ ] Pakaian rapi (formal casual)
βœ… [ ] Datang 30 menit lebih awal
βœ… [ ] Mindset positif & confident

2. Checklist Saat UAS

SEBELUM MULAI:
βœ… [ ] Setup laptop & projector
βœ… [ ] Open slides
βœ… [ ] Open sistem (localhost)
βœ… [ ] Login ke sistem
βœ… [ ] Test internet (jika online)
βœ… [ ] Close unnecessary apps/tabs
βœ… [ ] Volume speaker OK
βœ… [ ] Take a deep breath

SAAT PRESENTASI:
βœ… [ ] Greet penguji with confidence
βœ… [ ] Start dengan opening yang baik
βœ… [ ] Speak clearly & slowly
βœ… [ ] Maintain eye contact
βœ… [ ] Demo smooth & explain
βœ… [ ] Handle questions professionally
βœ… [ ] End dengan closing yang baik
βœ… [ ] Thank the examiners

SETELAH PRESENTASI:
βœ… [ ] Save & close files
βœ… [ ] Pack up equipment
βœ… [ ] Reflect on performance
βœ… [ ] Note feedback for improvement

GOOD LUCK untuk UAS Anda! πŸ€πŸŽ“

You've got this! πŸ’ͺπŸš€


End of Module - Pertemuan 16

Akhir dari Pemrograman Website 2

Total Journey:

  • βœ… 16 Pertemuan Selesai
  • βœ… ~90 Praktikum Dikerjakan
  • βœ… 1 UTS Passed
  • βœ… 1 Project Completed
  • 🎯 1 UAS Ready

Selamat! Anda telah menyelesaikan seluruh pembelajaran! πŸŽ‰

Next: Your Career as a Web Developer! πŸ’»πŸŒŸ


SEMOGA SUKSES! πŸŽ“βœ¨