← Semua karya

Karya 02 / 05

GBKP Runggun Gading Serpong

Website jemaat dengan CMS untuk jadwal ibadah, warta, dan permohonan layanan — berjalan di shared hosting tanpa SSH.

Peran
Pengembang utama
Tahun
2026
Teknologi
Next.js, Payload CMS, SQLite, Tailwind CSS
Situs
gbkpgadis.com ↗

Konteks

GBKP Runggun Gading Serpong adalah jemaat Gereja Batak Karo Protestan di Tangerang. Mereka butuh tempat untuk jadwal ibadah, warta jemaat, renungan, dan formulir permohonan layanan — yang bisa diperbarui pengurus sendiri tanpa memanggil developer.

Yang saya bangun

Website Next.js dengan Payload CMS dan database SQLite, plus halaman perayaan Natal 2026 dengan tema musiman sendiri. Ornamen Karo di situs (pengeret-ret dan motif uis) digambar ulang sebagai SVG, bukan ditempel sebagai gambar.

Masalah yang menarik: hosting murah

Anggarannya hanya cukup untuk shared hosting cPanel: tanpa SSH, RAM 1 GB, dan batas 100 proses per akun. Saat pertama naik, situs langsung 503 — penggunaan proses 99/100.

Penyebabnya: tiga library native masing-masing membuat thread pool seukuran jumlah core server fisik, bukan ukuran akun saya. Solusinya adalah membatasi setiap pool secara eksplisit saat aplikasi start:

UV_THREADPOOL_SIZE=2
VIPS_CONCURRENCY=1
TOKIO_WORKER_THREADS=2

Hasilnya, di bawah 10 request bersamaan pemakaian turun ke 9–13 dari 100 proses. Karena tidak ada SSH, saya juga membuat skrip build yang mengemas aplikasi lengkap dengan binary Linux yang benar, siap diunggah lewat File Manager.

Data jemaat

Formulir permohonan tidak membuka API publik. Semuanya lewat satu server action dengan validasi yang sama di klien dan server, perlindungan dari bot, dan pembatasan kiriman tanpa menyimpan alamat IP pengunjung — sejalan dengan UU PDP.