TPJ Adz Dzikri · Laporan kerja

Aplikasi TPJ: keanggotaan dan iuran

Data peserta kini per anggota keluarga dengan nomor anggota yang mudah diingat dari RW dan blok rumah. Pengurus bisa mencatat iuran, mengirim pengingat lewat WhatsApp, dan memasukkan daftar peserta lama dari Excel. Peserta bisa melihat iuran rumahnya sendiri dari HP.

Ringkasan

13layar dibuat untuk peserta dan pengurus
33uji otomatis, semua lolos
0layar yang harus digeser ke samping di lebar HP 360px
5pertanyaan yang perlu dijawab pengurus

Nomor anggota

Disusun dari yang pasti diingat warga: RW dan blok rumahnya. Dibuat otomatis saat peserta didaftarkan.

11.M12A.1 11.M12A.2 11.M12A.3

Satu keluarga di blok M-12A, RW 11. Anggota baru dapat nomor urut berikutnya.

00.D2.1

Peserta di luar RW Pesona Group memakai RW 00.

Nomor yang sudah pernah dipakai tidak diberikan ke orang lain, termasuk milik peserta yang sudah meninggal atau keluar, supaya kartu lama tidak tertukar. Saat mengetik nomor, warga boleh memakai huruf kecil, spasi, atau strip: 11 m-12a 1 tetap dibaca 11.M12A.1.

Permintaan pengurus dan jawabannya

Diambil dari percakapan pengurus, lalu dicocokkan dengan yang sekarang ada di aplikasi.

PermintaanDi aplikasi
Sistem dapat kirim WA/SMS info mengingatkan pembayaran iuranSatu pesan WhatsApp per rumah, berisi rincian iuran yang belum dibayar. Jalur gratis: tombol membuka WhatsApp di HP pengurus dengan pesan sudah terisi. Jalur otomatis lewat layanan berbayar (Fonnte) tersedia kalau pengurus berlangganan. SMS tidak dibuat karena biayanya per pesan.
Setiap anggota harus isi no HPBeranda pengurus menyebut berapa peserta belum punya nomor HP beserta akibatnya: tidak bisa masuk dan tidak bisa diingatkan. Satu ketukan membuka daftar mereka.
Data ini perlu disempurnakan: kode anggota, no HPImpor dari Excel. Aplikasi menebak kolom (nama, RW, blok, HP), pengurus memeriksa, lalu nomor anggota dibuat otomatis. Baris yang bermasalah dilaporkan dengan nomor baris Excel dan alasannya.
Penomoran dari RW dan blok rumah, per anggota keluargaFormat RW.BLOK.URUT, per orang, bukan per KK.
RW di luar Pesona Group pakai 00RW 00, dengan sebutan "Di luar RW Pesona Group" yang bisa diganti di Pengaturan.
Login untuk akses bisa pakai nomor kartu sajaNomor kartu ditambah 4 angka terakhir nomor HP. Alasannya di bagian Keputusan di bawah.
Memudahkan pelacakan kalau lupa nomorHalaman "Lupa nomor anggota": pilih RW, ketik blok, muncul nomor setiap anggota di rumah itu. Nama disamarkan (mis. "Ahmad S.") karena halaman ini terbuka untuk umum.

Tampilan di HP

Diambil dari aplikasi yang berjalan dengan data contoh, lebar layar 360px. Nama "Contoh …" adalah data uji, bukan warga sungguhan.

Peserta

Halaman masuk peserta: isian nomor anggota dan 4 angka terakhir nomor HP
MasukNomor anggota dan 4 angka terakhir HP, dengan contoh cara menulis nomor.
Halaman peserta: nomor anggota besar dan iuran rumah yang belum dibayar
Keanggotaan sayaNomor anggota dalam tiga bagian, lalu total iuran rumah yang belum dibayar.
Rincian tagihan per anggota keluarga dan cara membayar
Rincian dan cara bayarTagihan seluruh keluarga, lalu cara membayar yang diisi pengurus.
Hasil cari nomor anggota untuk rumah 11.M12A dengan nama disamarkan
Lupa nomor anggotaNomor setiap anggota di satu rumah. Ketuk nomor untuk langsung masuk.

Pengurus

Beranda pengurus: total iuran belum dibayar dan tombol kirim pengingat
BerandaSatu angka utama: iuran belum dibayar, dengan tombol kirim pengingat.
Daftar peserta dengan pencarian dan saringan
PesertaCari nama, nomor, blok, atau HP. Saringan "Belum ada nomor HP".
Detail satu peserta dengan nomor anggota besar dan formulir ubah data
Detail pesertaUbah data, lihat rumahnya, tambah anggota keluarga.
Halaman rumah 11.M12A dengan tagihan tiap anggota dan tombol catat bayar
RumahCatat bayar per orang, atau semua sekaligus karena satu keluarga biasanya membayar bersama.
Halaman iuran: daftar rumah yang belum membayar dengan totalnya
IuranRumah yang belum membayar, lalu terbitkan tagihan tahunan atau bulanan.
Halaman pengingat: isi pesan WhatsApp untuk rumah 11.M12A
PengingatIsi pesan bisa dilihat dulu. Tercatat kapan terakhir diingatkan.
Langkah cocokkan kolom saat impor Excel
Impor: cocokkan kolomTebakan kolom dari judul Excel, bisa diubah sebelum disimpan.
Hasil impor: jumlah peserta masuk dan baris yang dilewati
Impor: hasilBerapa yang masuk, berapa tanpa HP, dan baris mana yang perlu dibetulkan.
Halaman cetak kartu anggota
Cetak kartuUkuran kartu ATM, untuk semua peserta, satu RW, atau satu rumah.

Keputusan yang perlu diketahui

  • Masuk pakai nomor kartu dan 4 angka terakhir HP, bukan nomor kartu saja.

    Nomor kartu mudah ditebak dari RW dan blok. Kalau cukup nomor kartu, siapa pun bisa membuka tagihan rumah orang lain. 4 angka akhir HP mudah diingat warga lanjut usia, tapi pengamannya tetap lemah, jadi percobaan masuk dibatasi: 5 kali salah, nomor itu dikunci 15 menit.

  • Pengingat gratis lewat WhatsApp pengurus; otomatis hanya kalau berlangganan.

    Jalur gratis berarti pengurus menekan Kirim satu per satu. Jalur otomatis butuh langganan layanan pengirim WhatsApp (Fonnte), dipasang lewat pengaturan server. SMS tidak dibuat.

  • Tagihan per orang, dibayar per rumah.

    Keanggotaan per anggota keluarga, jadi setiap orang punya tagihan. Pengurus bisa mencatat semua tagihan satu rumah dengan satu tombol.

  • Tidak ada fitur hapus peserta.

    Peserta yang meninggal atau keluar diubah statusnya. Datanya dan riwayat pembayarannya tetap tersimpan, dan tidak mendapat tagihan baru.

  • Warna hijau tua sementara.

    Belum memakai warna logo Adz Dzikri. Bisa diganti di satu tempat kalau logonya sudah ada.

Pertanyaan untuk pengurus

Sampai dijawab, aplikasi memakai asumsi yang tertulis di bawah setiap pertanyaan.

  1. Iuran TPJ tahunan atau bulanan, dan berapa nominalnya?

    Sekarang: pengurus mengisi sendiri saat menerbitkan tagihan. Keduanya bisa.

  2. Tagihan per orang atau per KK?

    Sekarang: per orang, dibayar per rumah.

  3. RW mana saja yang termasuk Pesona Group?

    Sekarang: semua RW selain 00 dianggap Pesona Group.

  4. Boleh kirim berkas Excel "PESERTA TPJ Adz Dzikri tahun 2024"?

    Berkasnya belum diterima. Impor sudah diuji dengan berkas buatan; pencocokan kolom perlu dicek dengan berkas aslinya.

  5. Perlu SMS, atau cukup WhatsApp?

    Sekarang: WhatsApp saja.

Hasil uji

Aplikasi dijalankan lengkap di komputer dan lewat Docker, lalu setiap layar dibuka di Chrome dalam bingkai selebar 360px. Diperiksa di 10 layar: tidak ada yang harus digeser ke samping, semua tombol dan isian minimal 44px, tidak ada teks di bawah 16px. Kontras warna teks minimal 7,9 banding 1 (syarat: 7 banding 1 untuk teks utama). 33 uji otomatis lolos, termasuk masuk, batas percobaan, impor, terbitkan tagihan, catat bayar, dan pengingat.

Ditemukan saat pengujian, sudah dibetulkan

  • DibetulkanServer bisa berhenti merespons saat formulir peserta menampilkan pesan salah isi.
  • DibetulkanCSV dari Excel berbahasa Indonesia tidak terbaca kalau baris pertamanya judul laporan (pemisahnya titik koma).
  • DibetulkanNomor anggota terpotong di HP: "M12A" tampil sebagai "M12" dan "A" di dua baris.
  • DibetulkanRW tidak terisi saat menekan "Tambah anggota keluarga" dari halaman rumah.
  • DibetulkanTombol Keluar tidak muncul setelah peserta masuk.
  • DibetulkanSemua warga terhitung satu orang di server sungguhan, sehingga 30 kali salah masuk dari siapa pun bisa mengunci semua warga.

Belum diuji

Belum dicoba oleh warga lanjut usia sungguhan, belum di HP fisik, belum dipasang di server dengan domain dan HTTPS, dan pengiriman WhatsApp otomatis baru diuji dengan pengirim tiruan, belum ke layanan Fonnte sungguhan.

Untuk pengembang

Setiap aturan punya nomor, misalnya KA-02 (nomor urut tidak dipakai ulang) atau AK-02 (batas percobaan masuk). Nomor yang sama dipakai di spec, nama uji, dan komentar kode, jadi satu pencarian menemukan semua tempatnya. Perubahan perilaku dimulai dari spec, lalu kontrak API, lalu uji, baru kode.

docs/specs/ aturan bernomor (KA, AK, IU, PG, TA) dan pertanyaan terbuka docs/api/ openapi.yaml: kontrak antara BE dan FE be/ Go + SQLite, berlapis: domain → aplikasi → infra / api fe/ React + Vite + TanStack, satu folder per bagian (sama dengan BE) infra/ Docker Compose, HTTPS (Caddy), cadangan database harian CLAUDE.md panduan kerja dan jebakan yang pernah ditemui

Mencoba di komputer: cd infra && docker compose up -d --build, buka http://localhost:8080, lalu buat akun pengurus pertama. Tidak ada akun bawaan.