ILAB Malang —Platform Informasi Lomba Pelajar Malang Raya

Periode 2026
Klien ILAB Malang
Teknologi
WordPress 6.x
ILAB Malang
ILAB Malang — Platform Lomba Pelajar | Portofolio
Proyek Portofolio · System Analyst & Developer

ILAB Malang —
Platform Informasi Lomba
Pelajar Malang Raya

Perancangan dan pengembangan platform web end-to-end untuk menghubungkan Event Organizer dengan peserta lomba pelajar di wilayah Malang Raya, mulai dari sistem pendaftaran, pembayaran, hingga notifikasi otomatis.

Klien
ILAB Malang
Kategori
Web Platform · CMS Development
Tahun
2026
Live URL
ilab.sashindo.web.id
https://ilab.sashindo.web.id/lomba/
Platform Lomba Pelajar Malang Raya
SD / MI SMP / MTs SMA / SMK Perguruan Tinggi

ILAB Malang adalah platform digital berbasis WordPress yang dirancang sebagai ekosistem lomba pelajar terpadu — menghubungkan penyelenggara event (EO) dengan peserta dari berbagai jenjang pendidikan di Malang Raya, dengan ILAB sebagai perantara yang menjamin validitas data dan transaksi.

32+
Modul Sistem
15+
Template Halaman
5
Template Notif WA
2
Payment Gateway
3
CPT Custom
A4
Export PDF Peserta

Latar Belakang & Tujuan

Informasi lomba pelajar di Malang Raya tersebar di berbagai kanal — media sosial, grup WhatsApp, papan pengumuman sekolah — tanpa agregasi terpusat. EO kesulitan menjangkau peserta yang relevan, sementara peserta kesulitan menemukan lomba sesuai jenjang dan bidang minat mereka.

ILAB Malang hadir sebagai solusi dengan model platform dua sisi: EO mendaftarkan event secara gratis, sementara ILAB memperoleh revenue dari komisi 10% biaya pendaftaran peserta yang masuk melalui platform.

Scope proyek: System analysis, database design, full-stack WordPress development (PHP, custom AJAX, REST API), UI/UX implementation, payment gateway integration, WhatsApp automation, SEO implementation, performance optimization, dan technical documentation.

Tech Stack

WordPress 6.x PHP 7.4+ Duitku API Midtrans Snap Fonnte WhatsApp API Quill.js 1.3.7 Schema.org JSON-LD Yoast SEO REST API WordPress WP Transients AJAX Handler

Arsitektur Sistem

Sistem dibangun di atas WordPress dengan pendekatan custom theme + plugin hybrid — dikelola melalui plugin tersendiri, sementara seluruh logika bisnis, AJAX handler.

🏢
EO Submit Event
Review Admin
Admin Approve
Publish
🌐
Tayang di Platform
Pendaftaran
👤
Peserta Daftar
Bayar & Konfirm
📱
Notif WA Otomatis

Struktur Data

Tiga Custom Post Type utama:

data lomba profil penyelenggara data pendaftaran rating & ulasan

Fitur Utama

Sistem EO & Event

FiturDeskripsi
Daftar Rekanan EOForm pendaftaran EO dengan verifikasi kode posting unik, upload logo, data organisasi lengkap
Submit Event LombaForm multi-step dengan Quill.js rich text editor untuk deskripsi, upload poster, field tanggal, kuota, biaya
Review & Approve AdminDashboard review dengan tab status, tombol approve/tolak/pin, set tanggal buka satu klik
Profil EO PublikHalaman profil publik tanpa kontak langsung — semua komunikasi melalui admin ILAB
Edit Profil EOLogin berbasis kode posting, edit data profil dan logo, lihat daftar event sendiri

Sistem Peserta & Pembayaran

FiturDeskripsi
Formulir Daftar Peserta4 section: data diri, data sekolah, data orang tua, detail lomba — termasuk toggle lomba tim & upload dokumen
Kode Tiket UnikSetiap pendaftaran menghasilkan kode unik (contoh: ILABKRE-FCMHCH) sebagai identifikasi peserta
Dual Payment GatewayDuitku (QRIS, VA, GoPay, OVO) sebagai gateway utama + Midtrans Snap sebagai fallback, dipilih via setting admin
Transfer ManualPeserta upload bukti transfer, admin verifikasi, konfirmasi manual via tombol di Data Peserta
Cek Status PendaftaranHalaman publik /cek-status/ dengan timeline 4 langkah, tanpa login, URL shareable via parameter kode
Rating & TestimoniPeserta berikan rating event + EO via kode tiket, moderasi admin, shortcode embed di halaman event/EO

Admin Tools

ToolFungsi
Dashboard StatistikKartu revenue, komisi 10%, peserta, event aktif, aktivitas terbaru, bar chart per bidang lomba
Data PesertaFilter per event + status, export CSV, print PDF A4 landscape otomatis, kirim data ke EO via WA
Template Notifikasi WA5 template pesan editable dengan variabel klik-sisipkan, URL konfirmasi bayar bisa diupdate tanpa kode
Pengaturan TerpusatKonfigurasi Duitku/Midtrans, Fonnte token, rekening bank, WA admin, GAS webhook URL

Alur Pembayaran & Notifikasi

1
Peserta Daftar
Submit form → kode tiket dibuat → WA notif terkirim otomatis berisi kode + link bayar
2
Pilih Metode
Transfer manual (upload bukti) atau bayar online via Duitku — redirect ke payment page
3
Konfirmasi Admin
Admin verifikasi bukti / webhook gateway otomatis → satu fungsi konfirmasi terpusat
4
Notif WA + Tiket
WA konfirmasi terkirim ke peserta berisi kode tiket untuk check-in hari lomba

Seluruh alur konfirmasi — baik dari verifikasi manual admin maupun webhook otomatis Duitku/Midtrans — memanggil satu fungsi terpusat ilab_konfirmasi_pembayaran_peserta(), memastikan konsistensi notifikasi dan update status terlepas dari metode pembayaran yang digunakan.

Implementasi SEO & Schema.org

SEO diimplementasikan berlapis: Yoast SEO untuk meta tag, sitemap, dan canonical, sementara kode tema menambahkan Schema.org structured data yang tidak di-handle Yoast.

HalamanSchema TypeManfaat di Google
Detail EventEvent + OfferRich result dengan tanggal, lokasi, harga pendaftaran
Profil EOOrganizationKnowledge panel untuk penyelenggara
Arsip LombaItemListDaftar lomba sebagai rich snippet di SERP
HomepageWebSite + SearchActionSitelinks search box di Google
Semua halamanBreadcrumbListBreadcrumb di bawah judul hasil pencarian

Problem Solving — Tantangan Teknis

Beberapa tantangan teknis signifikan yang ditemui dan diselesaikan selama pengembangan:

🐛 PHP Session Gagal di Shared Hosting cPanel

Session directory /var/cpanel/php/sessions/alt-php74 tidak exist di server, dan headers already sent menyebabkan session_start() gagal secara konsisten di lingkungan shared hosting.

✅ Solusi: WP Transients + Cookie

Migrasi seluruh state management dari PHP Session ke WordPress Transients dikombinasikan dengan cookie browser untuk identifikasi sesi. Lebih reliable di semua jenis hosting, tidak membutuhkan konfigurasi server tambahan, dan memiliki built-in expiry handling.

🐛 Pagination /lomba/page/2/ Menghasilkan 404

WordPress tidak otomatis mendaftarkan rewrite rule untuk paginasi pada custom archive template. URL /lomba/page/2/ yang di-generate oleh paginate_links() selalu menghasilkan halaman 404.

✅ Solusi: template_redirect Hook Priority 1

Intercept via add_action('template_redirect', ..., 1) sebelum WordPress merender 404. Deteksi pola URL /lomba/page/N/, jalankan custom WP_Query, override $wp_query global, reset HTTP status ke 200, lalu load template yang sesuai.

🐛 Inkonsistensi Format Tanggal di Database

Field tanggal tersimpan dalam berbagai format: Y-m-d, Ymd (tanpa dash), dan format dobel seperti 20260322260322. Perbandingan string langsung menghasilkan logika yang salah — event yang masih buka ditampilkan sebagai sudah tutup.

✅ Solusi: Fungsi Helper ilab_parse_date()

Fungsi normalisasi yang mendeteksi dan mengkonversi semua format ke Y-m-d sebelum digunakan untuk perbandingan. Semua logika pengecekan tanggal di seluruh template menggunakan fungsi ini secara konsisten.

🐛 Dual Gateway: Midtrans vs Duitku

Kebutuhan untuk mendukung dua payment gateway berbeda (Duitku untuk operasional, Midtrans sebagai fallback) tanpa duplikasi kode dan dengan kemampuan switch mudah dari admin.

✅ Solusi: Unified Payment Handler

Satu AJAX handler yang otomatis mendeteksi gateway aktif. Seluruh logika post-payment (konfirmasi, update status, notif WA) menggunakan fungsi terpusat yang sama, terlepas dari gateway yang dipakai. Switch gateway cukup dari WP Admin → Pengaturan.

Optimasi Performa

OptimasiImplementasiDampak
Lazy LoadAuto-inject loading="lazy" via filter the_content + post_thumbnail_htmlGambar bawah tidak diload saat halaman pertama dibuka
LCP Optimizationfetchpriority="high" + loading="eager" pada poster event (LCP element)Largest Contentful Paint lebih cepat
Preload AssetsPreload logo + hero image via wp_head hook priority 2Aset kritis tersedia lebih awal
DNS PrefetchPrefetch Google Fonts, CDN domainsKoneksi ke domain eksternal lebih cepat
Remove WP BloatHapus Gutenberg block styles, dashicons frontend, jQuery Migrate~60KB CSS/JS tidak perlu dimuat pengunjung
GZIP + CachingKonfigurasi .htaccess — cache gambar 1 tahun, CSS/JS 1 bulanFile 60–80% lebih kecil, return visitor lebih cepat
Prefetch NavigasiPrefetch /lomba/page/2/ dan halaman daftar pesertaNavigasi terasa instan

Catatan Pengembangan

Proyek ini dikembangkan dengan pendekatan iteratif berbasis kebutuhan nyata — setiap fitur dibangun, diuji langsung di server produksi, dan disempurnakan berdasarkan feedback. Total pengembangan mencakup lebih dari 4.000 baris kode PHP di functions.php, 15 template halaman custom, dan integrasi ke empat layanan eksternal (Duitku, Midtrans, Fonnte, Google Fonts).

Seluruh sistem didokumentasikan dalam file HTML mandiri yang mencakup arsitektur, panduan konfigurasi, referensi variabel template WA, dan catatan troubleshooting untuk keperluan maintenance jangka panjang.

WordPress Custom Theme PHP Backend Payment Gateway WhatsApp Automation Schema.org SEO Admin Dashboard REST API Custom Post Types Performance Optimization Technical Documentation

Lihat Live Project

Platform sudah aktif dan dapat diakses publik

Buka ILAB Malang →

Informasi Project

Klien
ILAB Malang
Periode
2026
Kontak WA
081235025700