Microsite kuis kepribadian untuk kampanye brand perhiasan
Kuis sepuluh pertanyaan yang memetakan pengunjung ke lima arketipe, lalu merekomendasikan perhiasan yang cocok. Hasilnya bisa langsung dibagikan ke Instagram Stories.
Konteks
Sebuah brand perhiasan menjalankan kampanye lewat agency kreatif. Kebutuhannya berupa kuis kepribadian dengan sepuluh pertanyaan dan lima kemungkinan hasil, masing-masing dipasangkan dengan rekomendasi produk.
Tolok ukur keberhasilan kampanye ini bukan jumlah peserta kuis, melainkan jumlah peserta yang membagikan hasilnya ke Instagram Stories. Karena itu fitur berbagi diperlakukan sebagai bagian inti produk, bukan pelengkap.
Persoalannya
Berbagi hasil harus membuka aplikasi Instagram
Tombol yang hanya menyalin tautan tidak akan dipakai peserta. Gambar hasil kuis dibuat di perangkat peserta memakai elemen canvas, lalu dikirim lewat Web Share API sehingga yang muncul adalah lembar berbagi bawaan ponsel. Untuk perangkat yang belum mendukungnya, tersedia deep link ke Instagram dan tombol unduh gambar.
Gambar dibuat di perangkat, bukan di server
Trafik kampanye naik turun secara ekstrem, dan lonjakan terbesar terjadi setiap kali satu akun besar mengunggah. Kalau setiap gambar hasil dirender di server, lonjakan itu langsung berdampak pada biaya dan waktu tunggu. Dengan pemrosesan di browser peserta, beban server tetap datar berapa pun jumlah pengunjungnya.
Lokasi hosting belum diputuskan saat pengembangan mulai
Fase awal membutuhkan hosting yang bisa didemokan ke klien dalam hitungan menit, sementara produksi jangka panjang direncanakan pindah ke VPS. Tanpa persiapan, perpindahan seperti ini biasanya berujung pada penulisan ulang lapisan data.
Pendekatan
- Lapisan database dibangun di atas Drizzle ORM dengan dua driver: Turso untuk deployment di Vercel dan SQLite lokal untuk VPS. Skema dan seluruh kode query identik, sehingga perpindahan hosting hanya mengubah satu berkas konfigurasi koneksi.
- Kuis berjalan sebagai satu alur berbasis state tanpa muat ulang halaman antar pertanyaan. Setiap arketipe punya alamat halaman hasil sendiri supaya bisa dibagikan dan terindeks mesin pencari.
- Dashboard admin dibuat hanya untuk membaca data. Kampanye ini tidak membutuhkan pengubahan data dari panel, cukup pemantauan jumlah peserta dan sebaran hasilnya.
Keputusan yang diambil
Berikut alternatif yang ditolak dan alasannya.
Leaderboard dan dukungan dua bahasa dikeluarkan dari lingkup
Keduanya ada di permintaan awal, tapi tidak berpengaruh pada tujuan kampanye sementara tanggal tayang tidak bisa digeser. Keputusannya diambil di rapat final dan dicatat tertulis supaya tidak dibahas ulang di tengah pengerjaan.
ORM dipakai untuk portabilitas hosting, bukan sekadar penyederhana query
Menulis SQL langsung sebenarnya lebih ringkas untuk aplikasi sekecil ini. Pilihan itu ditolak karena perpindahan ke VPS akan menjadi pekerjaan tersendiri dengan risikonya sendiri. Tambahan pekerjaan di awal relatif kecil dibanding risiko yang dihilangkan.