Logo Resmi Fadhil
Fadhil NuruzzamanSoftware Engineer
Logo Resmi Fadhil
Sistem PendaftaranRA Mutiara Islam Kendari2026

Mutiara Islam App: Sistem Pendaftaran & Admin PPDB

Mutiara Islam App adalah sistem PPDB (penerimaan siswa baru) yang dibuat untuk Raudhatul Athfal Mutiara Islam Kendari, lahir dari rasa bahwa Google Form generik saja kurang memadai dan sama sekali tidak membawa branding sekolah. Sistem ini menggantikan proses manual sebelumnya, yang mengandalkan Google Forms dan spreadsheet untuk tracking, dengan formulir pendaftaran terpusat untuk orang tua dan admin dashboard lengkap untuk sekolah. Keduanya berjalan dari satu codebase Next.js yang sama, cuma dipisah lewat dua subdomain berbeda.

Preview

Jelajahi Situsnya

Tampilan situs jadi yang bisa di-scroll, persis seperti yang dilihat pengunjung.

Preview desktop Mutiara Islam App: Sistem Pendaftaran & Admin PPDB

Desktop

Preview mobile Mutiara Islam App: Sistem Pendaftaran & Admin PPDB

Mobile

Tech Stack

Teknologi Penggerak Proyek

Tools dan teknologi yang digunakan untuk mewujudkan proyek ini.

Logo HTML
Logo CSS
Logo TypeScript
Logo NextJs
Logo Tailwind CSS
Logo Shadcn/UI
Logo Google Sheets API
Logo Resend
Logo Vercel
Logo Yarn

Peran

Rincian per Skill

Tiap proyek memanfaatkan kombinasi berbagai disiplin, begini gambarannya di proyek ini.

Web Development

  • Membangun aplikasi Next.js secara penuh, mencakup formulir pendaftaran publik, admin dashboard, dan seluruh API routes.
  • Membangun routing berbasis subdomain (subdomain formulir publik dan subdomain admin) dari satu codebase menggunakan routing layer yang membaca host header dari request.
  • Mengintegrasikan Google Sheets sebagai database aplikasi lewat service account, tanpa database tradisional yang perlu dikelola.
  • Membangun login Google OAuth untuk admin dashboard, dibatasi ke whitelist email admin.
  • Membangun validasi form inline custom dengan auto-formatting untuk nama dan nomor WhatsApp, dan tanpa layout shift saat error.
  • Menyiapkan notifikasi email setiap kali ada pendaftar baru yang submit form, dibungkus dalam background task agar respons server tidak menunggu proses itu.
  • Membangun fitur pencarian, filter, dan pagination admin dashboard untuk tabel pendaftar.
  • Membangun update status inline, modal edit dengan optimistic update dan rollback, dan alur hapus dengan konfirmasi.
  • Membangun rate limiting di endpoint submission publik untuk mencegah spam dan penyalahgunaan.
  • Membangun toggle buka dan tutup pendaftaran, dengan form otomatis menampilkan status tertutup ke pengunjung saat dinonaktifkan.
  • Mengoptimasi delivery gambar, JS, dan CSS untuk mencapai skor Google PageSpeed hijau di keempat kategori.

Web Design

  • Merancang formulir pendaftaran publik dan admin dashboard dengan layout mobile-first, tombol besar, dibangun untuk staf admin yang tidak terlalu technical.
  • Merancang sistem warna yang konsisten (navy, biru muda, biru langit, dan aksen kuning) dipakai bersama di formulir publik dan admin dashboard.
  • Merancang layout light-mode formulir publik, permukaan card yang kontras dengan latar belakang halaman.
  • Merancang pesan error inline yang duduk di sebelah label tiap field alih-alih menggeser layout.
  • Merancang alur status admin dashboard dan layout tabel yang bisa difilter dan berpaginasi.
  • Merancang layout header mobile halaman pendaftaran di sekitar logo sekolah.

Graphic Design

  • Merancang dan menyiapkan semua aset gambar pendukung yang dipakai di formulir dan dashboard, bukan cuma logo.
  • Menata ulang logo sekolah yang sudah ada untuk header aplikasi dan chip UI kecil.
  • Membuat favicon situs.
  • Mengompres setiap gambar ke WebP dan di bawah 200KB sebelum diunggah, tanpa penurunan kualitas yang terlihat.

Digital Marketing

  • Membangun aplikasi agar jadi tujuan langsung untuk traffic iklan dan link marketing PPDB, mengubah klik iklan jadi pendaftaran yang bisa dilacak.
  • Mengubah alur status pendaftar (Baru, Dihubungi, Konsultasi, Diterima, Tidak Lanjut) jadi funnel lead-tracking yang bisa dikelola langsung oleh sekolah, alih-alih kehilangan jejak prospek setelah kontak awal.
  • Membangun field sumber referral ke formulir pendaftaran, memberi sekolah visibilitas langsung soal channel mana yang benar-benar mendatangkan pendaftaran.
  • Mengintegrasikan Conversions API dari Meta (opsional) untuk melacak pendaftaran yang berasal dari iklan demi optimasi kampanye iklan ke depannya.
  • Menjaga halaman pendaftaran tetap cepat (skor Google PageSpeed hijau di keempat kategori), langsung mendukung ranking SEO dan skor kualitas iklan alih-alih kehilangan prospek karena loading lambat.

Sorotan

Di Balik Layar

Tinjauan lebih dekat soal apa yang ditawarkan produk jadinya, hambatan di sepanjang jalan, dan hasil akhirnya.

Fitur Utama

  • Desain full responsive di perangkat desktop dan mobile.
  • Gambar dioptimasi untuk loading cepat.
  • Formulir pendaftaran PPDB publik dengan 6 field (nama siswa, jenis kelamin, program, nama orang tua, nomor WhatsApp, sumber referral).
  • Validasi field inline custom tanpa layout shift.
  • Title-casing nama otomatis dan formatting nomor WhatsApp saat mengetik.
  • Submission tersimpan langsung ke Google Sheets, tanpa database terpisah yang perlu dikelola.
  • Halaman konfirmasi setelah pendaftaran.
  • Notifikasi email ke tim admin di setiap pendaftaran baru.
  • Formulir pendaftaran otomatis tertutup dan menampilkan pesan fallback saat admin menonaktifkannya.
  • Admin dashboard dengan login Google OAuth dibatasi ke whitelist email admin.
  • Tabel pendaftar yang bisa dicari, difilter, dan berpaginasi.
  • Update status inline di 5 tahap pendaftaran.
  • Follow-up WhatsApp satu klik dengan template sapaan yang terisi otomatis.
  • Modal detail pendaftar dengan update status dan loading state per baris.
  • Edit data pendaftar dengan validasi penuh dan optimistic update.
  • Hapus pendaftar dengan langkah konfirmasi.
  • Kontrol admin untuk toggle pendaftaran buka atau tutup dan update tahun ajaran.

Tantangan yang Dihadapi

Merutekan Dua Subdomain Dari Satu Codebase

Formulir pendaftaran publik dan admin dashboard harus berada di dua subdomain berbeda, tapi tetap berbagi satu deployment Next.js. Diselesaikan dengan routing layer yang menulis ulang request berdasarkan host header yang masuk.

Dropdown yang Ter-render Gelap di Dalam Halaman Terang

Select dropdown di-render lewat portal di luar konteks styling halamannya sendiri, jadi defaultnya jatuh ke tema gelap meski halamannya sendiri light-mode. Diperbaiki dengan meng-override class warnanya secara eksplisit per konteks.

Autofill Browser Meng-override Warna Field

Memilih nilai tersimpan dari saran autofill browser ternyata melewati styling field form biasa, jadi butuh aturan CSS khusus yang mencakup state autofill spesifik WebKit maupun standar, plus state active-nya.

Email Tidak Terkirim Sebelum Function Freeze

Platform hosting bisa membekukan server function sebelum notifikasi email selesai terkirim. Diperbaiki dengan membungkusnya dalam background task yang tetap berjalan meski respons sudah terkirim duluan.

Menyesuaikan Diri dengan Rename Framework di Tengah Pengembangan

Upgrade versi major framework di tengah proyek mengganti nama konvensi routing inti dan mengubah API cache invalidation. Logic routing dan caching pun harus disesuaikan dengan konvensi barunya.

Pelajaran yang Didapat

  • Membangun aplikasi dual-subdomain dari satu codebase Next.js jadi pelajaran bagus soal routing berbasis host, sesuatu yang jarang dibutuhkan di proyek single-domain biasa.
  • Infrastruktur tingkat gratis ternyata benar-benar bisa mendukung kebutuhan produksi nyata institusi kecil tanpa biaya berkelanjutan.
  • Upgrade versi major framework di tengah proyek berarti harus langsung menyesuaikan diri dengan konvensi yang berganti nama dan API yang berubah. Jadi pengingat baik untuk selalu membaca migration notes framework dengan teliti.

Dampak

Masalah yang Terselesaikan Setelah Rilis

Bagaimana proyek ini mengubah keadaan bagi bisnis dan penggunanya setelah rilis.

Sistem pendaftaran terpusat

Gambar di bawah 200KB

PageSpeed hijau di keempat kategori

Follow-up WhatsApp satu klik

Toggle pendaftaran satu klik

Biaya infrastruktur nol

Perbaikan Kritis

Proses Pendaftaran yang Manual dan Rawan Kesalahan

Sebelum

Pendaftaran berjalan lewat Google Form generik dan spreadsheet, tanpa branding sendiri dan butuh kerja manual untuk melacak status, follow-up ke orang tua, dan menjaga catatan tetap rapi.

Sesudah

Sistem terpusat sekarang menangani pendaftaran, tracking status, dan alur kerja admin di satu tempat, menghilangkan pemeliharaan spreadsheet manual.

Performa

Halaman Lambat Akibat Gambar yang Tidak Dioptimasi

Sebelum

Gambar beresolusi tinggi di seluruh situs, bukan cuma satu bagian, berisiko memperlambat setiap halaman.

Sesudah

Setiap gambar di seluruh situs dikompres ke WebP dan dijaga di bawah 200KB, menjaga halaman tetap cepat tanpa penurunan kualitas yang terlihat.

Performa

Skor Google PageSpeed di Bawah Target

Sebelum

Performa awal tidak konsisten di keempat kategori Google PageSpeed.

Sesudah

Optimasi berkelanjutan untuk delivery gambar, JS, dan CSS membawa keempat kategori jadi hijau semua.

Peningkatan

Follow-Up Manual ke Orang Tua yang Lambat

Sebelum

Follow-up ke tiap orang tua berarti mencari manual nomor WhatsApp mereka di spreadsheet.

Sesudah

Tombol WhatsApp satu klik dengan template sapaan yang sudah terisi mempercepat follow-up admin langsung dari dashboard.

Peningkatan

Tidak Ada Cara Rapi untuk Menjeda Pendaftaran Antar Periode

Sebelum

Proses manual tidak punya cara rapi untuk menandakan pendaftaran sedang ditutup di antara periode penerimaan.

Sesudah

Admin bisa toggle pendaftaran buka atau tutup langsung dari dashboard, otomatis menampilkan pesan tertutup ke pengunjung.

Peningkatan

Biaya Hosting Berkelanjutan untuk Sistem Sekolah Kecil

Sebelum

Sistem pendaftaran khusus berisiko menambah biaya hosting atau software berkelanjutan untuk sekolah.

Sesudah

Dibangun sepenuhnya di tingkat gratis, hosting dan Google Sheets sebagai database, menjaga biaya infrastruktur tetap nol.