Menu Publik & Katalogue Digital
Halaman katalog menu publik berakses terbuka bagi pelanggan tanpa perlu autentikasi, diakses via URL slug unik toko.
Gambaran Umum
Perilaku konsumen modern telah berevolusi dari sekadar berbelanja pasif menjadi penjelajahan mandiri yang sangat interaktif. Terutama di industri layanan makanan dan minuman (F&B) serta ritel cepat saji paska era pandemi, pelanggan seringkali lebih suka melihat-lihat etalase produk dari layar pribadi mereka sebelum melakukan pemesanan, alih-alih berkerumun lama menatap papan menu fisik di atas meja kasir yang sibuk. Fitur Menu Publik & Katalog Digital di Temuya POS hadir sebagai jawaban elegan untuk memenuhi pergeseran kebiasaan konsumen ini.
Fitur ini secara harfiah menyulap basis data inventaris gudang toko menjadi sebuah etalase situs web mini yang sangat responsif, indah dipandang (mengutamakan tampilan antarmuka mobile-first), dan dapat diakses dengan bebas (publik) oleh siapa saja tanpa memerlukan rintangan membuat akun (login/registrasi). Setiap tenant di dalam sistem Temuya secara otomatis diberikan sebuah alamat web (URL slug) yang unik, misalnya temuyapos.com/menu/kopikenangan-jakarta. Melalui tautan ini, segala hal mulai dari daftar kategori minuman, foto produk beresolusi tinggi, hingga opsi modifikasi ekstra (seperti jenis susu alternatif atau takaran gula) dipamerkan secara real-time sejalan dengan ketersediaan stok fisik di kasir toko.
Menu Publik juga dirancang sebagai jembatan penghubung (O2O - Online to Offline). Pemilik bisnis dapat mengekspor URL unik tersebut menjadi matriks stiker QR Code (Kode Respons Cepat) dan menempelkannya di setiap meja restoran, jendela depan (storefront), ataupun menyebarkannya di bio media sosial toko mereka. Ketika pelanggan mendatangi meja atau memindai kode dari rumah, layar gawai mereka akan langsung memuat katalog berjalan yang selalu segar dan termutakhir (up-to-date), memangkas waktu tunggu layanan dan memberikan sentuhan pengalaman pelayanan mandiri (self-service) yang terasa sangat kekinian dan tanpa gesekan.
Skenario Bisnis Nyata
Di sebuah distrik kuliner yang ramai, terdapat “Warung Sate Modern Nusantara”, sebuah rumah makan keluarga yang terkenal dengan antrean pengunjungnya yang mengular setiap akhir pekan, terutama di jam sibuk makan malam. Sebelumnya, keluarga atau rombongan pelanggan yang duduk seringkali harus menunggu lima hingga sepuluh menit hanya untuk mendapatkan buku menu fisik yang jumlahnya terbatas dan lecek karena berpindah tangan, membuat anak-anak bosan dan membuang waktu pelayan toko yang bolak-balik.
Pemilik restoran tersebut akhirnya memutuskan untuk mengaktifkan fitur Menu Publik Temuya POS. Dari ruang dasbor manajemen, sang Pemilik mencetak belasan stiker stiker akrilik QR Code hitam putih yang sangat elegan, yang secara otomatis dibuat oleh sistem berdasarkan alamat /menu/sate-nusantara, lalu menempelkannya kokoh secara permanen di setiap sudut meja kayu pelanggan. Kini, ketika satu keluarga berjumlah enam orang duduk, mereka tidak lagi perlu berteriak mencari buku menu fisik. Semua orang dari kakek hingga cucu secara serentak mengarahkan kamera ponsel (smartphone) mereka ke stiker di meja.
Seketika itu juga, katalog interaktif memukau dengan foto sate daging maranggi yang menggugah selera dan harga sate ayam madura yang diperbarui secara langsung (live price) membanjiri layar mereka. Saat stok sate taichan tiba-tiba habis (Sold Out) dan diproses kasir di dapur, produk tersebut seketika lenyap secara otomatis dari tampilan layar Menu Publik di meja pelanggan, mencegah pelanggan memesan sesuatu yang tidak bisa dipenuhi dapur dan menghindari kekecewaan (“Mohon maaf Pak, taichannya baru saja habis”). Dengan Menu Publik, pelanggan memesan dengan pasti, lalu pelayan cukup datang untuk mengambil catatan pesanan tanpa harus berdiri kaku membacakan pilihan menu, menghemat waktu pelayanan secara drastis (table turnover rate meningkat) dan membuat omzet akhir pekan melonjak signifikan tanpa perlu mencetak ulang buku kertas yang usang.
Alur Kerja Akses Data Publik
Arsitektur sistem permintaan data untuk halaman katalog publik dirancang khusus agar sanggup menahan beban trafik lalu lintas (spike) tanpa harus menyentuh lapisan autentikasi (tanpa JWT/token session), namun tetap menjaga kerahasiaan data internal toko yang sensitif.
sequenceDiagram
autonumber
actor Pelanggan as Pelanggan (Scan QR/Browser Mobile)
participant CloudflareCDN as CDN Cache (Cloudflare Edge)
participant PublicRouter as Hono Worker (/api/public/menu)
participant D1Database as Tabel tenants & products
participant RenderingEngine as Astro/React (Frontend)
Pelanggan->>CloudflareCDN: Akses URL: GET /menu/sate-nusantara
CloudflareCDN->>PublicRouter: Request Diteruskan (Cache Miss)
PublicRouter->>D1Database: 1. Verifikasi Slug 'sate-nusantara' (Apakah Tenant Aktif?)
alt Tenant Diblokir / Slug Tidak Ditemukan
D1Database-->>PublicRouter: Data Kosong
PublicRouter-->>RenderingEngine: Status HTTP 404 Not Found
RenderingEngine-->>Pelanggan: Menampilkan Layar Halaman 'Toko Tidak Ditemukan'
else Tenant Aktif
PublicRouter->>D1Database: 2. Ambil Semua Produk Aktif & Kategorinya
D1Database-->>PublicRouter: Array JSON (Hanya Kolom Nama, Harga, Gambar)
Note right of PublicRouter: Menyembunyikan Kolom Sensitif (Modal/Cost Price, HPP)
PublicRouter-->>CloudflareCDN: Simpan Cache Response (Misal 5 Menit)
CloudflareCDN-->>RenderingEngine: Injeksi JSON Data
RenderingEngine-->>Pelanggan: Merender UI Menu Interaktif yang Indah
end
Teknologi & Infrastruktur (Penopang Skala)
Membuat antarmuka yang dapat diakses publik berarti mengekspos rute aplikasi kita ke ribuan konsumen tak terduga. Arsitekturnya harus dirancang anti-jebol (robust) dan kilat.
| Komponen Fitur | Teknologi yang Menggerakkan | Fungsi Kritikal dalam Ekosistem Publik |
|---|---|---|
| Pencari Slug Toko (Tenant Resolver) | Hono.js URL Parameters | Logika yang menangkap URL ramah pengguna (contoh: /:slug) dan menafsirkannya (mapping) menjadi ID baris Tenant yang panjang (UUID) di basis data tanpa mengungkap ID asli. |
| Pembatasan Data (Data Scrubbing) | Logika Query SQL Selektif (D1) | Sistem secara agresif memotong atau memilah atribut data (fields) yang sensitif. Ia hanya menarik kolom nama, harga_jual, kategori, dan url_gambar. Kolom rahasia seperti harga_modal (Cost of Goods) dihilangkan. |
| Generasi Tautan Visual (QR) | Library React QR-Code Generator | Menyediakan tombol di panel dasbor bagi manajer toko (tenant admin) untuk mengunduh, mencetak PDF, atau membagikan gambar kode batang (barcode) berbasis vektor. |
| Lapisan Pelindung (Rate Limiting) | Cloudflare WAF & Rate Limiter | Karena ini rute publik tanpa gerbang login, lapisan jaringan terluar secara aktif melindungi server dari serangan DDoS atau bot pesaing bisnis yang mencoba mengais data (scraping/crawling) harga menu secara massal. |
| Tampilan Halaman Interaktif | Astro.js (Island Architecture) | Kerangka kerja frontend utama ini membangun halaman HTML statis super ringan untuk waktu buka (load time) memukau, namun menanamkan elemen Javascript dinamis (pulau interaktif) hanya pada tombol keranjang. |
Keterkaitan dengan Fitur Lain
Menu Publik bertindak layaknya jendela etalase kaca bening yang memperlihatkan tatanan interior dari fitur-fitur internal (backend) platform:
- Modul Produk & Manajemen Inventori: Menu Publik secara organik hidup dan bernapas berdasarkan data yang diinput oleh administrator gudang. Jika manajer menonaktifkan (unpublish) sebuah item (toggle “Tampilkan di Menu Publik” menjadi Off) dari dasbor utama (Modul Produk), item itu akan menguap dari pandangan pelanggan detik itu juga, menjadikannya kanvas yang selalu terkendali.
- Panel Kontrol Super Admin: Super Admin menguasai “Tombol Darurat (Kill Switch)”. Jika sebuah toko terdeteksi melanggar kebijakan platform dengan menyajikan produk ilegal di menu digital publik, Super Admin berhak secara global memblokir URL toko tersebut tanpa mematikan izin operasi internal kasir fisik toko tersebut.
- Mode Luring & Sinkronisasi (Keterbatasan): Penting dipahami bahwa Menu Publik berada di lingkungan internet yang tidak terkait dengan mode Luring. Jika kasir fisik mengalami putus koneksi internet (Offline), Menu Publik yang diakses lewat internet pelanggan (3G/4G mereka sendiri) tetap akan menyala dan beroperasi normal. Namun status habis stok (Out of Stock) tidak akan diperbarui (freeze) hingga internet mesin kasir (sinkronisasi) kembali hidup.
Hal Penting yang Perlu Diketahui
Walaupun sangat memanjakan pelanggan, pengaturan dan pemeliharaan antarmuka Menu Publik mengharuskan administrator toko (tenant admin) untuk berpegang pada disiplin konten berikut:
- Fotografi Adalah Rajanya: Sehebat apa pun teknologi di baliknya, Menu Digital akan gagal (useless) tanpa presentasi visual yang layak. Meluangkan waktu untuk mengunggah foto setiap varian produk yang terang, beresolusi baik, dan seragam (persegi rata) adalah pembeda utama antara toko yang terlihat amatir dan waralaba kelas menengah yang meyakinkan.
- Slug Toko yang Abadi: Nama tautan web Anda (
/menu/kopi-kita-bandung) adalah alamat tetap (permanen) properti real estat digital Anda. Harap pikirkan dan ketik baik-baik saat pertama kali mendaftarkan toko (tenant sign-up). Jika Anda berubah pikiran dan meminta nama ini diubah, stiker ratusan QR Code yang telah Anda cetak di pabrik dan sebar di seluruh meja akan hangus secara instan dan harus dihancurkan total (Invalid URL). - Waktu Jedah (Cache Delay): Untuk menjaga server kita tidak meledak di akhir pekan (performa stabil), platform secara berkala akan “membekukan” (cache) isi halaman katalog Anda selama beberapa menit. Ini artinya, ketika Anda baru saja mengubah harga Nasi Lemak dari 20.000 menjadi 25.000 di panel kontrol, pelanggan mungkin masih akan melihat harga lama di ponsel mereka selama jeda sekitar dua hingga lima menit sebelum peramban memaksa pengambilan data baru yang segar.
- Persembunyian Produk Internal: Tidak semua barang di toko Anda pantas dilihat publik. Fitur ini sengaja menyediakan tombol pengaturan “Sembunyikan dari Publik” di detail edit tiap produk. Gunakan fitur ini untuk barang persediaan operasional murni (misal: “Plastik Berbayar Besar”, “Sendok Tambahan Karyawan”, atau “Biaya Layanan Ongkos Kirim”) yang eksklusif hanya perlu ditekan oleh staf Anda sendiri di layar kasir.
- Bukan Halaman Pemesanan Otomatis (Checkout): Penting untuk mengedukasi ekspektasi pelanggan Anda. Pada versi rilis platform standar ini, halaman Menu Publik bertindak murni sebagai “Katalog Digital yang Dapat Dilihat” saja (View Only). Pelanggan (sejauh ini) tidak bisa menekan tombol bayar sendiri secara mandiri dari layar ponsel mereka, mereka tetap harus menyebutkan secara verbal pesanan yang telah mereka amati tersebut kepada pramusaji atau berjalan menghadap kasir.