Skip to main content
All Projects
WebCompleted

Meet Doctor — Aplikasi Booking Konsultasi Dokter Online

September 2024 — Januri 2025
Meet Doctor — Aplikasi Booking Konsultasi Dokter Online project screenshot

Overview

Meet Doctor adalah aplikasi web berbasis Laravel yang dirancang untuk menjembatani pasien dengan dokter spesialis. Pasien dapat memilih dokter berdasarkan spesialisasi, menentukan jadwal konsultasi, memilih metode konsultasi, dan menyelesaikan pembayaran — semuanya dalam satu platform.Sistem ini dilengkapi dengan manajemen role & permission yang granular, memungkinkan pengaturan hak akses berbeda untuk pasien, dokter, dan admin. Autentikasi dibangun di atas Laravel Jetstream dengan dukungan two-factor authentication (2FA) untuk keamanan ekstra. API juga tersedia menggunakan Laravel Sanctum untuk integrasi dengan aplikasi mobile di masa mendatang.

Key Features

  • Registrasi & login dengan verifikasi email dan two-factor authentication (2FA)
  • Manajemen data dokter beserta foto, spesialisasi, dan tarif konsultasi
  • Kategori spesialis dokter dengan konfigurasi harga per spesialisasi
  • Pemilihan tipe konsultasi (tatap muka, online, dll.)
  • Booking appointment dengan pemilihan tanggal, waktu, dan tingkat urgensi
  • Sistem transaksi dengan breakdown biaya: fee dokter, fee spesialis, biaya RS, subtotal, PPN, dan total
  • Role & permission system yang fleksibel untuk multi-tipe pengguna
  • Detail profil pengguna terpisah dari data autentikasi
  • API endpoint siap pakai untuk integrasi mobile

Challenges

  • Kalkulasi biaya yang kompleks — Biaya konsultasi terdiri dari beberapa komponen (dokter, spesialis, RS, PPN) yang harus dihitung secara dinamis dan konsisten.
  • Manajemen role & permission granular — Sistem harus mendukung hak akses berbeda untuk admin, dokter, dan pasien tanpa mengorbankan keamanan.
  • Jadwal appointment yang fleksibel — Mengelola slot waktu dokter agar tidak terjadi double booking dan tetap user-friendly.
  • Keamanan autentikasi — Menyediakan akses yang aman sekaligus mudah digunakan, termasuk 2FA untuk akun dengan privileged access
  • Multi-assignee pada tiket — Satu tiket dapat dikerjakan oleh beberapa orang sekaligus, memerlukan relasi many-to-many dengan tracking waktu assignment.

Solutions

  • Memisahkan komponen biaya ke kolom tersendiri di tabel transactions sehingga mudah diaudit dan dihitung ulang secara programatik.
  • Membangun sistem RBAC (Role-Based Access Control) custom dengan tabel role, permission, dan pivot permission_role & role_user yang saling terhubung via foreign key.
  • Menggunakan kombinasi field date, time, dan status pada tabel appointment untuk mengontrol ketersediaan slot secara efisien.
  • Memanfaatkan Laravel Jetstream yang sudah menyediakan 2FA siap pakai berbasis Google Authenticator (via pragmarx/google2fa), sehingga implementasi keamanan lebih andal dan teruji.

Lessons Learned

  • Merancang skema database yang baik sejak awal — memisahkan detail_user dari tabel users utama — membuat sistem lebih mudah dikembangkan tanpa breaking change.
  • Jetstream + Livewire sangat mempercepat development fitur-fitur yang repetitif seperti form profil dan manajemen sesi, sehingga fokus bisa diarahkan ke business logic.
  • Soft delete pada semua tabel domain penting (dokter, appointment, transaksi) adalah keputusan yang tepat untuk audit trail dan pemulihan data.
  • Menyediakan API dari awal (meski belum digunakan penuh) membuka peluang integrasi mobile tanpa perlu refactor besar di kemudian hari.