Case study · 2026
PSR Running Event Page
Platform ini berfungsi sebagai solusi lengkap untuk mengelola event lari, menampilkan fitur registrasi peserta, sistem akumulasi poin berbasis misi, manajemen voucher, dan distribusi race pack. Sistem memungkinkan peserta untuk mendapatkan poin melalui berbagai aktivitas dan menukarkannya dengan perlengkapan lari eksklusif dengan harga khusus.
01The problem
PSR adalah kampanye lari tahun 2023 untuk Planet Sport Asia: peserta mendaftar lewat platform registrasi Galasin, lalu di situs ini mengikuti misi latihan mingguan, mengumpulkan poin, dan menukarnya dengan voucher belanja perlengkapan lari. Situsnya harus melayani peserta dalam bahasa Indonesia dan Inggris, nyaman di ponsel maupun desktop, mengenali peserta yang sudah terdaftar tanpa membuat sistem akun dari nol, dan membantu tim melihat siapa yang bergabung dan hadir di tiap misi.
02The process
Aplikasi web Laravel 10 dengan tampilan Blade, Tailwind CSS 3 dan DaisyUI 3, Alpine.js, Vite 4, dan MySQL. Tim kecil membagi pekerjaan per modul: misi, poin, voucher, check-in QR, akun dan OTP, integrasi, email, laporan, sponsor, dan halaman utama. Data peserta datang dari API Galasin lewat perintah Artisan terjadwal (peserta diunduh dua kali sehari, status invoice diperbarui tiap jam), perintah lain menentukan poin mana yang dihitung tiap 30 menit, email dikirim sebagai Mailable Laravel (kode OTP, sambutan, atur ulang kata sandi, penukaran voucher), laporan diekspor ke Excel dengan maatwebsite/excel, dan pelanggan ditandai serta disinkronkan ke Mailchimp lewat perintah Artisan.
03The solution
Peserta masuk dengan email, ID invoice, dan kata sandi (dengan verifikasi OTP lewat email), melihat misi per fase beserta statusnya, bergabung ke misi, lalu check in dengan memindai QR di lokasi. Poin dari pendaftaran dan misi terkumpul di profil, bisa ditukar dengan voucher bernominal tertentu, dan setiap penukaran dikonfirmasi lewat email. Semua halaman tersedia dalam bahasa Indonesia dan Inggris.
Modul proyek
PSR dikerjakan tim kecil dan dibagi per modul:
- Misi. Daftar misi per fase dengan status segera hadir, aktif, dan selesai, lengkap dengan lokasi, slot, dan tombol bergabung.
- Poin dan aktivitas. Setiap aksi peserta (pendaftaran, mengikuti misi) tercatat sebagai aktivitas bernilai poin; perintah terjadwal menentukan poin yang dihitung dan ada perintah untuk menambah poin manual.
- Voucher dan penukaran. Stok voucher per nominal, penukaran poin menjadi kode voucher, batas tanggal penukaran, dan riwayat poin.
- Check-in QR. Satu QR per misi yang mengarah ke halaman konfirmasi kehadiran.
- Akun dan OTP. Masuk dengan email dan ID invoice, kode OTP 6 digit lewat email, serta pembuatan dan pengaturan ulang kata sandi.
- Integrasi Galasin. Peserta dan status invoice diunduh berkala dari API Galasin.
- Email dan Mailchimp. Empat email transaksional, ditambah penandaan dan sinkronisasi pelanggan ke Mailchimp.
- Laporan. Enam laporan Excel: peserta per misi, misi selesai, registrasi, konfirmasi kata sandi, distribusi voucher sambutan, dan event mingguan.
- Sponsor dan halaman utama. Sponsor per misi, serta halaman utama dengan hitung mundur, informasi lari, dan FAQ dalam dua bahasa.
Pratinjau halaman dan modul
Gambar diambil dari salinan lokal aplikasi dengan data peserta fiktif; hitung mundur dan status misi mengikuti jam peramban yang diatur ke masa kampanye.
Halaman utama dan informasi event



Modul misi


Profil, poin, dan penukaran voucher



Check-in QR (modul saya)

FAQ dan dua bahasa (modul saya)


Masuk dan email transaksional (template email: modul saya)


Kontribusi saya
Saya bergabung sebagai web developer magang dan menyumbang 38 commit pada repositori tim antara 7 Oktober dan 24 November 2023. Rinciannya per area (berdasarkan isi commit):
- Dua bahasa, FAQ, profil, dan teks umpan balik: 20 commit (9 sampai 16 Okt 2023). Pemilih bahasa di navigasi (
nav.blade.php), terjemahan Indonesia dan Inggris diresources/lang/id.jsondanen.json(sekitar 150 baris di masing-masing berkas masih berasal dari commit saya), serta pengerjaan ulang bagian FAQ (faq.blade.php). - Antarmuka depan: 7 commit (9 sampai 12 Okt 2023). Penyesuaian responsif ponsel dan desktop, halaman lupa kata sandi, warna teks halaman masuk dan daftar, dan ukuran gambar. Sekitar 40% markup halaman utama (
temp.blade.php) masih berasal dari commit saya. - Check-in QR: 6 commit (11 Okt 2023). Versi awal tabel
absenbeserta migrasi, modelAbsen,AbsenController(pembuatan QR per misi dengan simple-qrcode dan pencatatan kehadiran), route, tampilanqr.blade.php, dan pemasangan paket QR. Logika lanjutan (cek status peserta dan penambahan poin) dikembangkan rekan tim. - Template email: 4 commit (7 Okt sampai 24 Nov 2023). Versi awal email kode OTP, sambutan, atur ulang kata sandi, dan penukaran voucher sebagai template Blade (
resources/views/emails). - Modul sponsor: 1 commit (7 Okt 2023). Model, migrasi, seeder, dan controller sponsor.
Modul lain (misi, poin, voucher, laporan, integrasi Galasin, Mailchimp, akun dan OTP) dikerjakan rekan tim dan tidak saya klaim di sini.
Teknologi dan keputusan teknis
- Laravel 10 dan Blade. Aplikasi server-rendered; rute web melayani halaman, sedangkan
routes/api.phpmenyediakan login, OTP, pembuatan dan pengaturan ulang kata sandi, serta pengecekan invoice. - Tailwind CSS 3, DaisyUI 3, dan Vite 4. Styling utility-first dan komponen DaisyUI (accordion FAQ, dialog, dropdown), dibangun dengan Vite.
- Alpine.js, jQuery, dan Slick. Interaksi ringan, pemilih fase misi, dan carousel misi serta produk.
- MySQL dengan migrasi dan seeder. Skema berkembang lewat puluhan migrasi; data awal misi, poin, voucher, dan stok penukaran lewat seeder.
- Perintah Artisan terjadwal. Unduh peserta Galasin dua kali sehari, perbarui status invoice tiap jam, dan tentukan poin yang dihitung tiap 30 menit.
- Integrasi API Galasin. Sumber data peserta dan invoice; alamat API dan kredensial dibaca dari konfigurasi lingkungan.
- Email. Mailable Laravel dengan transport SMTP atau Mandrill, ditambah Mailchimp untuk penandaan dan sinkronisasi pelanggan; email sambutan dibuat dengan MJML oleh rekan tim.
- OTP. Kode 6 digit acak disimpan pada akun dan dicocokkan saat konfirmasi.
- Dua bahasa lewat URL. Segmen
/enatau/idmenentukan locale, dan seluruh teks tampilan berasal dari berkas bahasa JSON. - Laporan Excel dan QR. maatwebsite/excel untuk enam laporan, simple-qrcode untuk QR misi.
Status: proyek privat
Source dan demo dari proyek ini tidak dipublikasikan. Gambar pratinjau di atas diambil dari salinan lokal aplikasi dengan data peserta fiktif, bukan data asli.