Lompat ke konten
Ryan Riandi
Semua portofolio
Organisasi kemasyarakatan & kesehatan2026

Sistem data anggota dan check-in kesehatan untuk organisasi berjenjang

Satu tempat untuk data anggota, kegiatan check-in kesehatan, dan rekam medis ringan, dengan hak akses yang mengikuti struktur pengurus sampai tingkat kelurahan.

Konteks

Sebuah organisasi dengan struktur pengurus bertingkat, dari kota sampai kelurahan, perlu merapikan data anggotanya. Datanya sudah tersedia di sistem lain, tapi pemindahannya dilakukan manual: pengurus login ke sistem lama, mengunduh berkas Excel, lalu mengunggahnya ke tempat baru setiap kali ada pembaruan.

Organisasi ini juga rutin mengadakan pemeriksaan kesehatan. Kehadiran dicatat manual dan hasil pemeriksaan tersimpan di berkas terpisah, sehingga pertanyaan sesederhana jumlah anggota di satu kecamatan yang perlu ditindaklanjuti tidak bisa dijawab.

Persoalannya

Data kesehatan tidak boleh terlihat lintas wilayah

Pengurus satu kecamatan tidak boleh melihat data anggota kecamatan lain. Pembatasan seperti ini sering diselesaikan dengan menyembunyikan menu di tampilan, padahal itu bukan pengamanan. Aturannya ditegakkan di lapisan akses data untuk setiap koleksi, sehingga permintaan dari luar wilayah tidak mengembalikan baris apa pun.

Anggota tidak login, tapi tetap harus bisa check-in

Kegiatan lapangan menuntut alur secepat mungkin: buka tautan, isi identitas, ambil swafoto, kirim. Mewajibkan ratusan orang membuat akun akan menghambat kegiatannya. Endpoint publik yang bisa menulis ke basis data anggota juga berisiko, jadi jalur check-in dipisah dari jalur admin dengan validasi identitas dan kode kegiatan di sisi server.

Impor berkas yang sama dua kali tidak boleh menggandakan anggota

Pengurus kerap mengunggah ulang berkas yang sama, entah karena ragu prosesnya berhasil atau karena isinya diperbarui sebagian. Kuncinya nomor induk anggota, dan operasinya berupa upsert: baris baru dibuat, baris yang sudah ada diperbarui. Wilayah dan kelompok pembinaan dicocokkan otomatis dari kolom yang tersedia.

Alur unduh dan unggah manual akhirnya dihapus

Setelah impor berjalan stabil, tahap berikutnya menghilangkan langkah manualnya. Sistem menarik data langsung dari sumber dengan satu klik. Kredensial yang dipakai hanya aktif selama satu permintaan dan tidak disimpan. Tersedia juga mode uji koneksi yang menjalankan seluruh alur tanpa menulis ke basis data.

Keputusan yang diambil

Berikut alternatif yang ditolak dan alasannya.

Memakai Payload alih-alih membangun panel admin dari nol

Panel admin adalah pekerjaan berbulan-bulan yang tidak terlihat oleh pengguna akhir. Payload menyediakan CRUD, autentikasi, unggah berkas, dan kontrol akses yang bisa ditulis sebagai fungsi, sehingga waktu pengerjaan bisa dialihkan ke kebutuhan yang khas organisasi ini. Konsekuensinya harus mengikuti pola kerangka kerjanya.

Kelompok pembinaan dipisah dari struktur wilayah

Keduanya sama-sama pengelompokan anggota, dan menyatukannya jadi satu tabel terlihat lebih hemat. Tapi kelompok pembinaan tidak punya pengurus dan tidak mengikuti batas administratif, sehingga penyatuan itu akan menyulitkan aturan hak akses begitu datanya bertambah. Pemisahan dilakukan sejak awal, sebelum ada data yang perlu dimigrasi.

PostgreSQL, bukan SQLite

Ukuran datanya masih muat di SQLite. Yang menjadi pertimbangan adalah pola pemakaiannya: banyak pengurus menulis data bersamaan saat kegiatan berlangsung, dari lokasi yang berbeda-beda.

Kebutuhan Anda mirip dengan proyek ini.

Kalau iya, pembahasannya biasanya lebih cepat karena persoalannya sudah pernah saya tangani. Kalau berbeda sama sekali juga tidak masalah, silakan ceritakan.

Saya bekerja penuh waktu di sebuah software house, jadi proyek luar saya ambil dengan lingkup dan jadwal yang disepakati di awal. Balasan biasanya masuk dalam satu hari kerja.