Logo Mediatama Portal Soal / Tema 07
LEMBAR SPESIFIKASI PROYEK PRAKTIK • TEMA 07

Sistem Rental Kamera & Perlengkapan Multimedia

Peminjaman Kamera, Lensa, Lighting, Jaminan Identitas, dan Denda Overtime

KODE: MED-WEB-07
TINGKAT: Intermediate
Mata Uji Fullstack Web App
Estimasi Waktu 3 - 4 Jam / Take-home
Sifat Pengerjaan Open Book & Docs
Tech Stack Bebas Dipilih Peserta
Kebebasan Pilihan Teknologi: Anda dibebaskan memilih bahasa pemrograman, framework, arsitektur, dan database yang paling Anda kuasai (misalnya: Laravel, CodeIgniter, Express.js/Node.js, Next.js, Django, FastAPI, Go Gin/Fiber, PHP Native, Vue/React, serta database MySQL, PostgreSQL, MariaDB, atau SQLite). Penilaian menitikberatkan pada kelengkapan 4 modul utama, integritas alur transaksi, keamanan, dan pengalaman pengguna (UX).

Latar Belakang & Studi Kasus

Studio rental 'Focus Media Gear' menyewakan puluhan kamera sinema, bodi mirrorless, lensa premium, stabilizer gimbal, lighting studio, dan drone. Bisnis ini menghadapi risiko tinggi berupa kehilangan alat, penyewa yang telat mengembalikan tanpa kabar, alat yang kembali dalam kondisi lecet/rusak tanpa diketahui siapa penyebabnya, serta kerumitan menghitung denda keterlambatan per jam. Aplikasi web ini dibutuhkan untuk mencatat sewa alat master-detail, memeriksa ketersediaan inventaris, menahan jaminan identitas/deposit, mencatat proses check-in pengembalian alat, dan menghitung denda.

4 Modul Wajib yang Harus Dibangun

Pilar Inti Fungsionalitas
01

Modul Autentikasi & Hak Akses (Login System)

Pengamanan akun, sesi pengguna, dan pembatasan wewenang fitur

Role: Administrator / Manajer Studio

Akses penuh manajemen inventaris alat (harga sewa, nomor seri/SN, kondisi alat), kelola tarif denda, kelola user, dan laporan keuntungan serta depresiasi alat.

Role: Staff Front Desk / Operator Gudang

Pengecekan ketersediaan jadwal alat, pembuatan nota sewa (input multi-item alat, data penyewa, jaminan KTP), pemeriksaan kondisi fisik saat alat kembali, kalkulasi denda jika telat, dan cetak invoice.

Ketentuan Keamanan & Teknis:
  • Form login dengan validasi input (penanganan username/email salah atau password tidak cocok).
  • Password wajib di-hash menggunakan algoritma aman (Bcrypt, Argon2, atau sejenisnya). Tidak boleh menyimpan password plaintext.
  • Proteksi route (Middleware / Guard): Halaman dashboard, transaksi, dan laporan tidak boleh dapat diakses tanpa login.
  • Mekanisme Logout yang menghancurkan sesi / token secara bersih dan mengarahkan kembali ke halaman login.
02

Modul Dashboard Eksekutif (Metrics & Overview)

Pusat pemantauan kinerja real-time dan ringkasan operasional

4 Indikator KPI Utama yang Wajib Ditampilkan:
Unit Sedang Disewa
Total peralatan multimedia yang saat ini sedang berada di tangan penyewa
Jadwal Kembali Hari Ini
Jumlah transaksi sewa yang batas waktu sewanya berakhir pada hari ini
Pendapatan Sewa Bulan Ini
Akumulasi pembayaran sewa normal dan denda overtime yang terkumpul
Unit Rusak / Maintenance
Peralatan yang sedang diperbaiki dan tidak dapat disewakan sementara
Komponen Visual Pendukung:
  • Grafik Visual: Tampilkan visualisasi tren transaksi (misal: grafik batang/garis 7 hari terakhir atau diagram distribusi kategori). Boleh menggunakan Chart.js, ApexCharts, SVG interaktif, atau visual bar CSS murni.
  • Tabel Riwayat Cepat: Daftar 5–10 transaksi paling baru beserta status singkatnya.
  • Tombol Aksi Cepat (Quick Action): Shortcut langsung untuk membuat transaksi baru tanpa harus membuka menu lain.
03

Modul Transaksi Inti (Core Business Transaction)

Pencatatan data dinamis master-detail dengan kalkulasi otomatis

Format Nomor Faktur / Invoice: RENT-MM-YYYYMMDD-XXXX (Contoh: RENT-MM-20261023-0027)
Nomor invoice harus dibuat otomatis oleh sistem saat form dibuka atau saat transaksi disimpan, dengan format teratur dan unik.
Alur & Elemen Input Form Transaksi:
  • •Identitas Penyewa: Nama Penyewa, No. KTP/SIM, No. WhatsApp Aktif, Akun Media Sosial Penyewa
  • •Dokumen Jaminan yang Ditahan: KTP Asli / SIM A / Ijazah / Deposit Uang Jaminan
  • •Waktu Sewa: Tanggal & Jam Pengambilan (Pinjam) s/d Rencana Tanggal & Jam Pengembalian (Kembali), Hitungan Durasi Hari/Jam
  • •Multi-item Rincian Alat: Pilih Peralatan (Kamera, Lensa, Drone, Tripod) x Qty x Tarif Sewa, otomatis validasi status alat 'Tersedia'
  • •Kalkulasi: Total Biaya Sewa + Biaya Uang Jaminan (Deposit), Diskon Member, Grand Total
  • •Form Pengembalian (Check-In): Input Tanggal & Jam Pengembalian Aktual, Pengecekan Kondisi Fisik Alat (Mulus / Baret / Rusak), Perhitungan Otomatis Denda Keterlambatan (Overtime per jam/hari) & Denda Kerusakan, Status Pengembalian Uang Jaminan
  • •Status Transaksi: Booking, Sedang Disewa (Aktif), Selesai Tepat Waktu, Selesai Dengan Denda
Validasi & Integritas Data Wajib:
  • ✓Sistem menolak penyewaan unit yang statusnya 'Sedang Disewa' atau 'Dalam Perbaikan'
  • ✓Kalkulasi otomatis denda keterlambatan jika jam pengembalian melebihi batas perjanjian toleransi
  • ✓Pencegahan penutupan transaksi sebelum jaminan identitas dikonfirmasi telah dikembalikan
  • ✓Cetak Surat Perjanjian Sewa Alat & Bukti Pembayaran Invoice
04

Modul Laporan & Ekspor Data (Reporting & Analytics)

Penyajian rekap data historis, filter periode, dan pencetakan dokumen

Parameter Filter Dinamis:

Rentang tanggal sewa, Kategori Peralatan (Kamera, Lensa, Audio, Lighting), dan Status Pengembalian

Ringkasan Statistik (Summary Bar):

Total Unit Disewakan, Total Pendapatan Sewa, Total Denda Terkumpul, dan Utilisasi Alat Terfavorit (Most Rented)

Struktur Kolom Tabel Laporan:

No. Rental, Tanggal Pinjam, Tanggal Kembali, Penyewa, Alat Disewa, Biaya Sewa, Denda, Grand Total, Status

Kemampuan Ekspor:

Ekspor ke format PDF rekap rental dan berkas spreadsheet Excel/CSV

Rekomendasi Skema Basis Data (Database Design)

Dapat disesuaikan atau dikembangkan sesuai arsitektur pilihan Anda

5 Tabel
Nama Tabel Deskripsi & Saran Kolom Minimal
users Pengguna aplikasi (id, username, password_hash, nama_lengkap, role [admin/kasir], created_at)
equipment_categories Kategori alat (id, nama_kategori, deskripsi)
equipments Master peralatan (id, category_id, serial_number, nama_alat, tarif_per_hari, tarif_per_jam, status_ketersediaan [tersedia/disewa/rusak], kondisi_fisik)
rentals Header transaksi sewa (id, no_kontrak, nama_penyewa, no_ktp, no_hp, jaminan_diserahkan, tgl_pinjam, tgl_rencana_kembali, tgl_aktual_kembali, total_sewa, uang_deposit, denda_keterlambatan, denda_kerusakan, grand_total, status_rental, created_at)
rental_details Detail alat disewa (id, rental_id, equipment_id, harga_sewa, kondisi_saat_keluar, kondisi_saat_kembali)

Rubrik Penilaian & Pembobotan

Total Nilai Maksimal: 100 Poin

Fungsionalitas & Kesesuaian Alur Bisnis 40 Poin

Semua 4 pilar (Login, Dashboard, Transaksi Master-Detail, Laporan) berfungsi utuh tanpa error saat diuji.

Integritas Data & Keamanan 25 Poin

Hashing password, proteksi route, pencegahan duplikasi data, validasi stok/kapasitas, dan transaction commit/rollback.

Desain Antarmuka (UI) & Pengalaman Pengguna (UX) 20 Poin

Tampilan rapi, responsif di mobile & desktop, feedback interaktif (notifikasi sukses/gagal), dan kemudahan navigasi.

Kualitas Kode & Dokumentasi 15 Poin

Struktur folder terorganisir (MVC / Clean Architecture), penamaan variabel deskriptif, dan panduan instalasi README.md.

Ketentuan Pengumpulan & Deliverables

Peserta wajib menyerahkan hasil pengerjaan berupa:

  1. Source Code Proyek: Diunggah ke repositori GitHub / GitLab publik atau diarsipkan dalam format .zip.
  2. Database Dump / Seeder: File database.sql atau seeder/migration yang sudah memuat data awal (sample demo data) untuk akun login dan master data.
  3. Dokumen README.md: Berisi daftar tech stack yang digunakan, langkah instalasi step-by-step, serta kredensial akun uji coba (email/username & password untuk masing-masing role).
Kembali ke Daftar 10 Tema