Ringkasan
SIER Sport Arena adalah kompleks olahraga di Surabaya dengan lapangan badminton, tenis, futsal, voli, sepak bola, dan basket 3x3. Sebelum aplikasi ini, orang booking lewat telepon atau WhatsApp. Staff cek jadwal kertas, konfirmasi ketersediaan, dan tulis. Kesalahan terjadi. Double booking terjadi. Customer frustrasi.
Mereka butuh sistem booking yang tunjukkan ketersediaan real-time dan biarkan customer reserve lapangan sendiri. Bukan platform e-commerce lengkap — mereka masih mau handle pembayaran langsung. Cuma cara untuk lihat apa yang open dan claim slot.
Saya bangun SIER Sport Arena sebagai aplikasi booking mobile-first. User browse lapangan yang available berdasarkan olahraga dan waktu, buat reservasi, dan dapat konfirmasi. Staff manage jadwal dari web dashboard. Aplikasi sync real time, jadi double booking tidak mungkin.
Tantangannya bukan logika booking — itu straightforward. Tantangannya adalah bikin cukup sederhana supaya customer dan staff beneran pakai daripada balik ke telepon.
Klien
PT Surabaya Industrial Estate Rungkut (SIER) manage kawasan industri dengan berbagai fasilitas, termasuk kompleks olahraga ini. Arena terbuka untuk publik dan populer dengan klub olahraga lokal dan pemain kasual.
Mereka mau modernisasi tanpa kehilangan layanan personal. Aplikasi dibuat untuk kurangi kerja admin, bukan gantiin interaksi manusia. Customer bisa booking online, tapi tetap bayar dan check in di front desk.
Fitur
Court browsing tunjukkan semua fasilitas yang available berdasarkan jenis olahraga. Setiap lapangan punya foto, spec (jenis permukaan, pencahayaan, kapasitas), dan tarif per jam. User bisa filter berdasarkan tanggal dan waktu untuk lihat apa yang open.
Booking flow sederhana: pilih olahraga, pilih lapangan, pilih slot waktu, konfirmasi. Aplikasi cek ketersediaan real time dan reserve slot langsung. User dapat konfirmasi booking dengan QR code.
Booking history biarkan user lihat reservasi masa lalu dan mendatang. Mereka bisa cancel booking sampai waktu tertentu sebelum slot. Aplikasi kirim push notification untuk konfirmasi booking dan reminder.
Staff dashboard (web-based) tunjukkan jadwal penuh di semua lapangan. Staff bisa buat booking atas nama customer, tandai slot sebagai unavailable untuk maintenance, dan check in customer dengan scan QR code mereka.
Tech Stack
Flutter untuk aplikasi mobile. GetX untuk state management dan routing. Firebase Firestore untuk real-time data sync — masuk akal di sini karena ketersediaan perlu update instant di semua device.
Firebase Cloud Messaging untuk push notification. QR code generation untuk konfirmasi booking. Google Sign-In untuk authentication, meskipun mereka juga support login nomor telepon.
Web dashboard dibangun dengan Flutter Web. Codebase sama, target berbeda. Bukan admin panel paling cantik, tapi jalan dan staff bisa pakai tanpa training.
Peran Saya
Lead mobile developer. Saya design app architecture, bangun UI, implementasi logika booking, dan integrasi dengan Firebase. Saya juga bangun web dashboard untuk staff.
Real-time sync itu kritis. Kalau dua orang coba booking slot yang sama di waktu bersamaan, cuma satu yang harus berhasil. Transaction Firestore handle ini, tapi saya harus design data model dengan hati-hati untuk hindari race condition.
Saya juga kerja sama dengan klien untuk define business rule. Seberapa jauh di depan orang bisa booking? Seberapa telat mereka bisa cancel? Apa yang terjadi kalau seseorang tidak datang? Keputusan ini bentuk behavior aplikasi.
User testing ungkap bahwa versi pertama terlalu rumit. Saya sederhanakan booking flow, kurangi jumlah screen, dan bikin availability calendar lebih visual. Tujuannya adalah bikin booking lapangan semudah pesan makanan.
Aplikasi sudah live lebih dari setahun. SIER lapor double booking lebih sedikit, kerja admin lebih sedikit, dan customer lebih senang. Mereka bilang aplikasi naikin booking karena orang sekarang bisa lihat ketersediaan tanpa telepon. Itu jenis outcome yang bikin kerja worthwhile.
