Cafe & Warkop TRACKER
Penjelasan teknis lengkap: arsitektur pencarian, sistem ranking, alur klaim dan verifikasi, paket langganan, dan proses review admin.
PerkoP App menggabungkan dua sumber data untuk menampilkan hasil pencarian yang lengkap dan aktual.
OSM
Database peta terbuka yang dikontribusikan komunitas global. PerkoP mengambil data cafe, warkop, dan coffee shop dari OSM via Overpass API berdasarkan radius dari koordinat pengguna. Data ini mencakup nama, koordinat, dan atribut dasar.
DB Internal
Data yang dikelola langsung oleh pemilik cafe melalui dashboard. Mencakup foto galeri, menu beserta harga, jam buka per hari, fasilitas (WiFi / AC / Parkir / dll.), nomor WhatsApp, deskripsi, dan status verifikasi. Data ini tampil di halaman detail cafe.
Alur teknis dari klik tombol "Cari" hingga kartu cafe tampil di layar.
Browser meminta izin akses GPS. Koordinat yang diberikan (latitude, longitude) hanya dipakai di sisi klien untuk menghitung radius pencarian — tidak dikirim ke server. Jika GPS tidak tersedia, pencarian teks tetap bisa digunakan.
Permintaan dikirim ke Overpass API dengan parameter bounding box berbasis radius
yang dipilih (1–3 km). Query mencari node dan way bertag
amenity=cafe, amenity=coffee_shop, atau nama mengandung
kata kunci seperti "warkop", "kopi", "warung kopi".
Hasil dikembalikan dalam format JSON.
Secara paralel, API PerkoP (GET /api/cafes/nearby) juga dipanggil
dengan parameter lat/lon dan radius. Server melakukan query PostGIS untuk mencari
cafe terverifikasi dalam radius tersebut. Merek besar (Starbucks, Kopi Kenangan, dll.)
dikeluarkan secara otomatis dari hasil.
Hasil OSM dan DB internal digabungkan. Data PerkoP ditampilkan terpisah di bagian atas sebagai "Terdaftar di PerkoP", sementara data OSM yang belum diklaim tampil di bagian bawah sebagai "Dari Peta OpenStreetMap". Duplikat berdasarkan koordinat dihapus.
Peta dirender menggunakan Leaflet.js dengan tile dari OpenStreetMap. Marker ditampilkan per cafe. Kartu di bawah peta diurutkan berdasarkan sistem ranking dan menyertakan info harga, fasilitas, dan status buka/tutup real-time.
Urutan tampil cafe di hasil pencarian ditentukan oleh tiga tingkatan prioritas, dari atas ke bawah.
Cafe dengan paket PRO atau PREMIUM mendapat slot di bagian paling atas hasil pencarian, sebelum hasil organik. Ditandai label "Featured". PRO = 1 slot, PREMIUM = 3 slot.
Cafe dengan paket BASIC ke atas yang sudah direview dan disetujui admin. Badge ✓ Terverifikasi ditampilkan di kartu. Diurutkan berdasarkan jarak dari posisi pengguna.
Cafe dari OpenStreetMap yang belum diklaim atau hanya di tier FREE. Tampil di bagian bawah, diurutkan berdasarkan jarak. Bisa langsung diklaim dengan tombol "Klaim gratis →" di kartu.
Cara mendaftarkan kepemilikan cafe yang sudah ada di peta OSM, langkah per langkah.
Cari cafemu menggunakan GPS atau kolom teks di halaman utama. Klik kartu cafe, lalu klik tombol "Klaim gratis →" yang muncul di bagian bawah halaman detail.
Jika belum punya akun, sistem mengarahkan ke halaman registrasi. Daftar dengan Google (satu klik) atau email. Akun pemilik gratis dan bisa mengelola banyak cafe.
Masukkan nama pemilik/pengelola, jabatan, dan nomor WhatsApp aktif. Data ini digunakan untuk verifikasi OTP dan kontak admin.
Klik "Deteksi Lokasi Saya". Browser meminta izin GPS dan menghitung jarak ke cafe. Dalam 200 m: status langsung hijau ✓. Lebih jauh: masih bisa lanjut — admin akan mempertimbangkan.
Klik "Kirim OTP". Kode 6 digit dikirim via WhatsApp ke nomor yang didaftarkan. Berlaku 10 menit dan hanya bisa dipakai sekali. Masukkan kode, klik Verifikasi.
Foto dirimu di depan cafe dengan wajah dan nama/papan cafe terlihat jelas. Format JPG/PNG, maks. 5 MB. Foto ini menjadi bukti utama kehadiran fisik yang diperiksa admin saat review.
Klik "Ajukan Klaim". Permintaan masuk ke antrian review admin. Status klaim bisa dipantau di Dashboard → Klaim Saya. Notifikasi WhatsApp dikirim saat keputusan sudah ada.
Setiap lapisan bekerja secara independen dan semua harus terpenuhi sebelum klaim bisa diajukan.
navigator.geolocation.getCurrentPosition()Setelah klaim diajukan, admin melakukan review manual. Tidak ada persetujuan otomatis.
Klaim masuk ke antrian di panel admin. Antrian diurutkan: PREMIUM terlebih dahulu, kemudian berdasarkan waktu pengajuan (FIFO). Rata-rata waktu tunggu 1–2 hari kerja.
Admin memeriksa: foto selfie (wajah + nama cafe cocok), status OTP (terverifikasi), jarak GPS saat klaim diajukan, dan konsistensi nama cafe dengan data OSM. Semua data ditampilkan dalam satu tampilan di panel admin.
Admin juga memeriksa foto-foto cafe yang sudah diupload: apakah jelas, relevan, dan tidak mengandung konten yang tidak sesuai. Teks deskripsi diperiksa dari spam atau konten promosi yang tidak wajar.
Disetujui → status klaim berubah jadi
"Terverifikasi", cafe tampil dengan badge, notifikasi WA dikirim ke pemilik.
Info tambahan diminta → admin tulis catatan
spesifik, pemilik bisa update data dan resubmit tanpa mengulang OTP.
Ditolak → alasan dicatat, pemilik bisa
mengajukan banding dalam 7 hari kalender dengan bukti tambahan.
Setiap perubahan data cafe dicatat secara otomatis untuk keperluan transparansi dan keamanan.
audit_logs dengan kolom:
actor_id, actor_type (owner/admin/system),
entity_type (cafe/claim/subscription), entity_id,
action, diff (JSON perubahan), dan created_at.
Log tidak bisa dihapus oleh pemilik cafe; hanya admin yang bisa mengakses log lengkap.
Semua fitur masing-masing tier dalam satu tabel.
| Fitur | FREE | BASIC | PRO | PREMIUM |
|---|---|---|---|---|
| Harga/bulan | Gratis | Rp 149.000 | Rp 449.000 | Rp 749.000 |
| Tampil di hasil pencarian | ✓ | ✓ | ✓ | ✓ |
| Maksimum foto | 2 | 10 | 30 | Tak terbatas |
| Maksimum menu | 5 | 15 | 30 | Tak terbatas |
| Deskripsi cafe | ✓ | ✓ | ✓ | ✓ |
| Badge ✓ Terverifikasi | — | ✓ | ✓ | ✓ |
| Jam buka tampil di kartu | — | ✓ | ✓ | ✓ |
| Fasilitas tampil di kartu | — | ✓ | ✓ | ✓ |
| Tombol WhatsApp aktif | — | ✓ | ✓ | ✓ |
| Tombol Bagikan | — | ✓ | ✓ | ✓ |
| Analytics dasar | — | ✓ | ✓ | ✓ |
| Slot Featured di pencarian | — | — | 1 slot | 3 slot |
| Laporan email bulanan | — | — | ✓ | ✓ |
| Prioritas antrian klaim | — | — | — | ✓ |
| Ekspor analytics (CSV) | — | — | — | ✓ |
Proses upgrade dilakukan manual melalui konfirmasi pembayaran admin.
Login ke dashboard pemilik → menu Langganan → pilih paket yang diinginkan. Halaman menampilkan nominal transfer dan nomor rekening tujuan.
Transfer sesuai nominal ke rekening yang tertera. Sertakan nama cafe atau ID akun sebagai keterangan transfer agar mudah diverifikasi.
Kembali ke menu Langganan di dashboard → unggah screenshot atau foto bukti transfer. Format JPG/PNG/PDF, maks. 3 MB.
Admin memverifikasi pembayaran dan mengaktifkan paket. Notifikasi WhatsApp dikirim saat aktif. Target konfirmasi: 1 hari kerja setelah bukti diterima.
Siap mendaftarkan atau upgrade cafe kamu?
Daftar / Login Dashboard →