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.