Sistem antrian real-time berbasis web dengan WebSocket untuk layanan publik dan bisnis.
AntriYuk adalah sistem manajemen antrian modern yang dibangun dengan Laravel 12 dan Laravel Reverb untuk update real-time melalui WebSocket. Sistem ini memungkinkan lokasi layanan (seperti bank, rumah sakit, kantor pemerintahan) untuk mengelola antrian secara efisien dengan estimasi waktu tunggu, notifikasi langsung, dan tampilan display untuk ruang tunggu.
- 🎫 Sistem Tiket Antrian — Ambil nomor antrian dengan format unik per lokasi (contoh: CS-001)
- ⚡ Real-time Updates — Update langsung via WebSocket (Laravel Reverb) tanpa refresh halaman
- ⏱️ Estimasi Waktu Tunggu — Kalkulasi otomatis berdasarkan jumlah counter aktif dan rata-rata waktu layanan
- 📺 Display Board — Tampilan khusus untuk TV/kiosk di ruang tunggu dengan auto-refresh
- 👨💼 Panel Operator — Dashboard operator untuk memanggil, melayani, dan mengelola tiket
- 🛡️ Panel Admin — Kelola lokasi, counter, dan pengguna dari satu dashboard
- 🔐 Multi-Role — Sistem role-based access: Admin, Operator, dan Viewer
- 🔍 Cek Status Tiket — Pelanggan bisa cek status tiket kapan saja
Menunggu → Dipanggil → Dilayani → Selesai
↓ ↓
Dibatalkan Dilewati
| Status | Keterangan |
|---|---|
waiting |
Pelanggan mengambil tiket dan menunggu |
calling |
Operator memanggil nomor antrian |
serving |
Pelanggan sedang dilayani di counter |
completed |
Layanan selesai |
skipped |
Pelanggan tidak merespons panggilan |
cancelled |
Tiket dibatalkan |
| Teknologi | Versi | Kegunaan |
|---|---|---|
| Laravel | 12 | Backend framework |
| PHP | 8.2+ | Server-side language |
| Laravel Reverb | 1.7 | WebSocket server untuk real-time |
| Tailwind CSS | 4 | Utility-first CSS framework |
| Alpine.js | 3 | Reactive frontend (via CDN) |
| Vite | 7 | Asset bundler |
| Pest PHP | 4 | Testing framework |
| SQLite / MySQL | — | Database |
- PHP 8.2 atau lebih baru
- Composer
- Node.js 18+ & npm
- SQLite (default) atau MySQL/MariaDB
# 1. Clone repository
git clone https://github.com/your-username/antriyuk.git
cd antriyuk
# 2. Setup otomatis (install deps, .env, migrate, build assets)
composer setup
# 3. Seed database dengan data contoh
php artisan db:seed
# 4. Jalankan development server
composer devBuka browser di http://localhost:8000
# Install PHP dependencies
composer install
# Install Node.js dependencies
npm install
# Salin file environment
cp .env.example .env
# Generate application key
php artisan key:generate
# Buat database SQLite
touch database/database.sqlite
# Jalankan migrasi
php artisan migrate
# Seed data contoh
php artisan db:seed
# Build assets
npm run build# Terminal 1: Laravel server + Vite (concurrent)
composer dev
# Terminal 2: WebSocket server (untuk fitur real-time)
php artisan reverb:startAntriYuk menggunakan Pest PHP untuk testing dengan 30 test cases.
# Jalankan semua test
composer test
# Atau langsung
php artisan test
# Dengan output verbose
php artisan test --verbose| Suite | Jumlah Test | Cakupan |
|---|---|---|
| LocationTest | 8 | CRUD lokasi, daftar, detail, display |
| OperatorTest | 6 | Panggil, layani, selesaikan, lewati tiket |
| AdminTest | 7 | Kelola lokasi, counter, user |
| AuthTest | 8 | Login, register, logout, middleware |
Setelah menjalankan php artisan db:seed, tersedia akun-akun berikut:
| Role | Password | |
|---|---|---|
| Admin | admin@antriyuk.test |
password |
| Operator CS | operator-cs@antriyuk.test |
password |
| Operator Pembayaran | operator-pay@antriyuk.test |
password |
| Operator Pendaftaran | operator-reg@antriyuk.test |
password |
| Lokasi | Kode | Counter |
|---|---|---|
| Customer Service | CS | 3 counter |
| Pembayaran | PAY | 3 counter |
| Pendaftaran | REG | 3 counter |
antriyuk/
├── app/
│ ├── Events/ # Event broadcasting (TicketCreated, QueueUpdated, dll.)
│ ├── Http/
│ │ ├── Controllers/ # LocationController, OperatorController, AdminController, dll.
│ │ └── Middleware/ # EnsureUserIsAdmin, EnsureUserIsOperator
│ └── Models/ # Location, Counter, Ticket, User
├── database/
│ ├── factories/ # Factory untuk semua model
│ ├── migrations/ # Skema database
│ └── seeders/ # Data seeder
├── resources/
│ ├── css/app.css # Tailwind CSS v4
│ ├── js/ # JavaScript & Echo client
│ └── views/ # Blade templates (Indonesian UI)
├── routes/
│ └── web.php # Semua route aplikasi
└── tests/
└── Feature/ # Pest PHP test suites
| Group | Prefix | Middleware | Deskripsi |
|---|---|---|---|
| Public | / |
— | Halaman utama, daftar lokasi, ambil tiket |
| Auth | /login, /register |
guest |
Autentikasi pengguna |
| Operator | /operator |
auth, operator |
Dashboard dan manajemen antrian |
| Admin | /admin |
auth, admin |
Manajemen sistem penuh |
Kontribusi sangat diterima! Silakan fork repository ini dan buat Pull Request.
- Fork repository
- Buat branch fitur (
git checkout -b fitur/fitur-baru) - Commit perubahan (
git commit -m 'Tambah fitur baru') - Push ke branch (
git push origin fitur/fitur-baru) - Buat Pull Request
Proyek ini dilisensikan di bawah MIT License.
Dibuat dengan ❤️ menggunakan Laravel 12