Sistem Kasir & Pemesanan Kafe Modern
Point of Sales (POS) Dine-In & Takeaway dengan Manajemen Resep Menu
Latar Belakang & Studi Kasus
Kafe 'Titik Temu Kopi' mengalami lonjakan pengunjung di jam sibuk namun masih mencatat pesanan pelanggan secara manual di kertas nota. Hal ini sering menyebabkan salah saji pesanan, keterlambatan penyajian ke meja, selisih perhitungan uang kasir di akhir shift, serta stok biji kopi dan sirup yang sering habis tanpa terdeteksi. Manajemen membutuhkan aplikasi web Point of Sales (POS) terintegrasi yang memudahkan pelayan dan kasir dalam mencatat pesanan meja, menghitung tagihan secara otomatis, memantau omset harian, serta menghasilkan laporan penjualan berkala.
4 Modul Wajib yang Harus Dibangun
Pilar Inti FungsionalitasModul Autentikasi & Hak Akses (Login System)
Pengamanan akun, sesi pengguna, dan pembatasan wewenang fitur
Akses menyeluruh: kelola data menu & kategori, manajemen stok & harga, pantau dashboard analitik, kelola akun pengguna, dan akses penuh laporan laba rugi serta ekspor data.
Akses operasional: membuat pesanan baru (pilih meja/takeaway, input item pesanan), menerima pembayaran (Cash/QRIS/Debit), mencetak nota struk, dan melihat riwayat transaksinya sendiri.
- 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.
Modul Dashboard Eksekutif (Metrics & Overview)
Pusat pemantauan kinerja real-time dan ringkasan operasional
- 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.
Modul Transaksi Inti (Core Business Transaction)
Pencatatan data dinamis master-detail dengan kalkulasi otomatis
- •Pilihan Tipe Pesanan: Dine-In (Wajib pilih No. Meja) atau Takeaway
- •Nama Pemesan / Catatan Meja
- •Multi-item baris dinamis: Pilih Menu Makanan/Minuman, Kuantiti (Qty), Catatan Khusus (misal: Less Sugar, Extra Ice, No Onion)
- •Kalkulasi Otomatis: Subtotal per baris, Pajak PB1/Restoran (10%), Diskon/Voucher jika ada, dan Grand Total
- •Metode Pembayaran: Tunai (otomatis hitung uang kembali / kembalian), QRIS, Transfer Bank, atau Kartu Debit
- •Status Pesanan: Diproses, Selesai, Dibatalkan
- ✓Validasi ketersediaan stok menu sebelum transaksi disimpan
- ✓Mencegah nominal pembayaran tunai lebih kecil dari total tagihan
- ✓Penerapan database transaction (ACID) untuk memastikan header transaksi dan detail item tersimpan bersamaan atau di-rollback jika gagal
- ✓Cetak struk nota belanja siap cetak (dukungan ukuran thermal 80mm / 58mm atau A4 format)
Modul Laporan & Ekspor Data (Reporting & Analytics)
Penyajian rekap data historis, filter periode, dan pencetakan dokumen
Rentang tanggal transaksi (Dari Tanggal s/d Sampai Tanggal), Kategori Menu (Coffee, Non-Coffee, Food, Pastry), dan Metode Pembayaran
Total Omset Bruto, Total Diskon Diberikan, Total Pajak Restoran Terkumpul, Omset Bersih, dan Rata-rata Nilai Transaksi (Average Order Value)
No. Faktur, Tanggal & Jam, Kasir, Tipe Pesanan, Item Terjual, Subtotal, Pajak, Grand Total, Status
Ekspor ke format PDF berformat tabel rapi dan file spreadsheet Excel/CSV
Rekomendasi Skema Basis Data (Database Design)
Dapat disesuaikan atau dikembangkan sesuai arsitektur pilihan Anda
| Nama Tabel | Deskripsi & Saran Kolom Minimal |
|---|---|
| users | Menyimpan data pengguna (id, username, password_hash, nama_lengkap, role [admin/kasir], status, created_at) |
| categories | Kategori produk (id, nama_kategori, slug, status) |
| products | Master menu makanan/minuman (id, category_id, kode_produk, nama_produk, harga_jual, harga_pokok, stok, unit, created_at) |
| orders | Header transaksi (id, invoice_number, user_id, tipe_pesanan, nomor_meja, total_subtotal, pajak_nominal, diskon_nominal, grand_total, metode_bayar, uang_dibayar, uang_kembali, status, created_at) |
| order_details | Rincian item pesanan (id, order_id, product_id, harga_satuan, kuantiti, subtotal_baris, catatan_khusus) |
Rubrik Penilaian & Pembobotan
Total Nilai Maksimal: 100 Poin
Semua 4 pilar (Login, Dashboard, Transaksi Master-Detail, Laporan) berfungsi utuh tanpa error saat diuji.
Hashing password, proteksi route, pencegahan duplikasi data, validasi stok/kapasitas, dan transaction commit/rollback.
Tampilan rapi, responsif di mobile & desktop, feedback interaktif (notifikasi sukses/gagal), dan kemudahan navigasi.
Struktur folder terorganisir (MVC / Clean Architecture), penamaan variabel deskriptif, dan panduan instalasi README.md.
Ketentuan Pengumpulan & Deliverables
Peserta wajib menyerahkan hasil pengerjaan berupa:
- Source Code Proyek: Diunggah ke repositori GitHub / GitLab publik atau diarsipkan dalam format
.zip. - Database Dump / Seeder: File
database.sqlatau seeder/migration yang sudah memuat data awal (sample demo data) untuk akun login dan master data. - 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).