Lewati ke konten
android mobile-app unggulan

Antrian Potong Rambut — Aplikasi Antrian Barbershop (Android + Laravel)

Aplikasi Android antrian barbershop tanpa login pelanggan: scan QR toko, isi formulir singkat, foto wajah, lalu pantau nomor secara langsung. Barber memakai APK yang sama untuk memanggil, melayani, dan mencatat bayar. Kotlin + Jetpack Compose dengan API Laravel 13.

android │ kode sumber saja · admin-dashboard· android· computer-vision· jetpack-compose
Customer ticket with position and estimated wait
Admin Dashboard Android Computer Vision Jetpack Compose Kotlin Laravel MariaDB PHP Retrofit

Aplikasi Android antrian barbershop. Pelanggan scan QR toko, isi nama dan umur, foto wajah, lalu dapat nomor antrian — tanpa akun, tanpa daftar. HP lalu memantau posisi dan perkiraan waktu tunggu. Barber memakai APK yang sama dalam mode login untuk memanggil, melayani, dan menutup tiap tiket. Tugas kuliah Aplikasi & Mobile — Android 3 (kelas TI23).

Sorotan

  • Pelanggan tanpa login — QR memuat alamat server dan kode toko, jadi aplikasi tidak butuh setelan IP. UUID perangkat mengenali HP; satu HP bisa mendaftarkan rombongan 1–10 orang, masing-masing dapat nomor berurutan.
  • Penomoran aman dari balapan — ambil nomor dan "panggil berikutnya" berjalan di transaksi DB yang mengunci baris toko (lockForUpdate), dengan kunci unik (tanggal, nomor) sebagai jaring pengaman. Diukur dengan 30 proses PHP serentak ke MariaDB: 30/30 berhasil dengan nomor unik 1..30. Kontrol negatif (kunci dibuang): hanya 7/30 berhasil.
  • Foto wajah sementara — foto membantu barber mengenali pelanggan. Wajib persetujuan, server memeriksa isinya JPEG (≤300 KB), hanya barber dan HP pemilik tiket yang bisa mengambilnya, dan foto dihapus saat tiket selesai atau batal.
  • Semua keputusan di server — penomoran, perubahan status, dan estimasi ada di model Laravel. HP hanya mengirim input dan menampilkan hasil; perubahan status yang tidak sah dijawab 409.

Fitur Utama

  1. Alur pelanggan — scan QR → formulir (nama, umur, layanan) → foto wajah (tombol jepret manual, aktif hanya saat ML Kit melihat wajah di posisi pas) → karcis dengan posisi dan perkiraan "±N menit".
  2. Papan langsung — papan kursi (siapa di kursi tiap barber) dan papan barisan menunggu, diperbarui selama layar terlihat.
  3. Notifikasi latar — foreground service berbunyi saat tinggal 2 orang lagi dan saat pelanggan dipanggil.
  4. Mode barber — panggil berikutnya, mulai, lewati, panggil ulang, selesai + catat bayar (tunai/QRIS), dan tiket tamu untuk pelanggan tanpa aplikasi.
  5. Alat pemilik — kelola layanan, barber, setelan toko, buat QR baru, dan laporan harian (pendapatan, pelanggan, rating).

Teknologi

  • Kotlin 2.4 + Jetpack Compose (satu Activity per layar)
  • CameraX 1.6 + ML Kit barcode scanning dan face detection (offline)
  • Retrofit 3 + kotlinx-serialization
  • Laravel 13 + Sanctum (token barber)
  • MariaDB 10.4

Status & Kematangan

Fitur lengkap untuk tugas kuliah dan sudah diuji di HP asli (vivo, Android 12) lewat Wi-Fi: alur pelanggan penuh, alur barber, tiket tamu, notifikasi, dan pembuatan QR baru. Berjalan di jaringan lokal (server di laptop, HP di Wi-Fi yang sama); tidak di-deploy ke publik. Estimasi waktu tunggu yang lebih pintar berdasarkan riwayat layanan nyata masih direncanakan.

Metrik Terukur

Uji fitur Laravel 67 lulus
Uji unit Android 14 lulus
Ambil nomor serentak 30/30 unik (tanpa kunci: 7/30)
Tabel database 6 (4 master, 2 transaksi)