Page 1 of 21
System Requirements Document for gptkk-fulolo
1. Introduction
gptkk-fulolo adalah aplikasi data jemaat gereja yang dirancang untuk mencatat, memelihara, dan menelusuri data jemaat secara lengkap dan akurat, dengan sinkronisasi data real-time berbasis cloud. Aplikasi ini melayani kebutuhan gereja dalam mengelola identitas jemaat, riwayat sakramen, kehadiran ibadah, pengelompokan jemaat, pelaporan bulanan dan mingguan, pengingat ulang tahun, notifikasi jadwal ibadah dan acara gereja mingguan, inventaris aset gereja, serta manajemen pelayanan/imam-imam beserta daftar tugas terjadwal.
Audiens pengguna: Administrator Data Jemaat, Petugas Pelayanan dan Penjadwalan, Pemimpin/Pengurus Gereja (Penerima Laporan), dan Petugas Inventaris Aset Gereja — umumnya staf gereja non-teknis yang bekerja dari kantor gereja atau perangkat seluler.
Tujuan produk: menyediakan satu register jemaat yang dapat dipercaya — tempat setiap jiwa, sakramen, kehadiran, aset, dan penugasan pelayanan tercatat rapi, tersinkronisasi, dan dapat dilaporkan tepat waktu.
Page 2 of 21
2. System Overview
gptkk-fulolo adalah aplikasi berbasis web dengan identitas milik aplikasi (app-owned identity), sinkronisasi data real-time berbasis cloud, otomasi latar belakang untuk pengingat ulang tahun dan pembuatan laporan mingguan, dokumen yang dihasilkan (ekspor PDF dan Excel), serta notifikasi push untuk jadwal ibadah dan acara gereja mingguan.
Aktor manusia (persona aktif):
- Administrator Data Jemaat
- Petugas Pelayanan dan Penjadwalan
- Pemimpin/Pengurus Gereja (Penerima Laporan)
- Petugas Inventaris Aset Gereja
Aktor non-persona: layanan sinkronisasi cloud (penyimpanan dan replikasi data real-time), layanan notifikasi push (pengiriman ke perangkat), dan proses latar belakang otomasi (pengingat ulang tahun, pembuatan laporan mingguan).
Perilaku yang diterima (ringkas): pencatatan data jemaat lengkap dengan nomor induk jemaat, identitas pribadi, kontak, pekerjaan, pendidikan, dan riwayat sakramen; pencarian cepat dengan filter kriteria spesifik; pengelompokan jemaat berdasarkan usia, wilayah, keluarga, dan jenis pelayanan; pencatatan kehadiran; dashboard statistik kehadiran dan pertumbuhan jemaat; pengingat ulang tahun otomatis; notifikasi push jadwal ibadah dan acara mingguan; laporan bulanan dengan ekspor PDF dan Excel; laporan otomatis kegiatan ibadah dan kehadiran mingguan; manajemen inventaris aset gereja; manajemen pelayanan/imam-imam dengan daftar tugas terjadwal.
Kepemilikan akses: Landing dapat diakses tanpa identitas. Login dan Sign Up adalah permukaan akses tanpa pembatasan peran (entry anonim untuk membangun identitas). Dashboard, Members, Member Details, Member Search, Member Groups, Attendance, Monthly Reports, Weekly Reports, Birthday Reminders, Schedules, Inventory, dan Ministry dibatasi berdasarkan peran.
Pengecualian sempit: Tidak ada fotografi wajah atau stok gambar jemaat; tidak ada 3D; tidak ada parallax; tidak ada glassmorphism, gradien blob, atau tombol pill. Biru/indigo dilarang sebagai warna primer atau aksen antarmuka (chip denim hanya kode kategori, selalu berpasangan dengan label teks).
Page 3 of 21
2a. Product Interpretation and Delivery Boundary
gptkk-fulolo adalah sistem register jemaat milik gereja yang dioperasikan sendiri oleh pengurus. Identitas dimiliki aplikasi: pengguna baru mendaftar melalui Sign Up, dan pengguna berulang memverifikasi diri melalui Login. Setelah identitas terbentuk, akses ke data jemaat, laporan, penjadwalan, dan aset dibedakan menurut peran, karena pengelolaan data, pelayanan, laporan, dan inventaris memiliki kontrol yang berbeda.
Sinkronisasi data berjalan real-time berbasis cloud: perubahan data jemaat, kehadiran, jadwal, dan inventaris langsung tersedia bagi pengguna yang berhak. Otomasi latar belakang menangani pengingat ulang tahun bagi jemaat terdaftar dan pembuatan laporan mingguan; notifikasi push mengirimkan jadwal ibadah dan acara gereja mingguan ke perangkat pengguna. Ekspor laporan bulanan menghasilkan berkas PDF dan Excel.
Semua kemampuan yang tercantum di atas adalah lingkup saat ini (current). Tidak ada kemampuan masa depan yang dinyatakan dalam sumber; tidak ada modul akuntansi, keuangan, atau keanggotaan lintas-gereja yang termasuk lingkup.
2b. Source Content Inventory
Tidak ada direktif referensi dengan content_source yang diberikan; bagian ini tidak berlaku.
2c. Page Content and Component Coverage
Page 4 of 21
Landing
- Informasi/state: penjelasan aplikasi data jemaat gereja, pengguna yang dilayani (administrator data, petugas pelayanan, pengurus, petugas inventaris), dan fungsi utama (pencatatan jemaat, sakramen, kehadiran, laporan, jadwal, inventaris, pelayanan).
- Aksi utama: "MASUK KE REGISTER" (menuju Login); "LIHAT FITUR" (menampilkan ringkasan fitur).
- Aksi pendukung: tautan ke Sign Up bagi pengguna baru.
- Entitas domain: jemaat, sakramen, kehadiran, jadwal, aset, pelayanan.
- Tanggung jawab komponen: hero poster asimetris (headline besar, kartu register miring berisi fragmen data nyata: baris NIK, stempel baptisan, strip pengingat ulang tahun); badge/stamp melingkar; CTA berbingkai 2px dengan hard shadow.
- State: loading (kerangka hero), empty (tidak berlaku — konten statis), success (hero tampil penuh), error (fallback teks tanpa gambar), recovery (muat ulang konten).
Login
- Informasi/state: formulir verifikasi berulang (email/identitas akun dan kata sandi), pesan kesalahan kredensial.
- Aksi utama: masuk ke aplikasi.
- Aksi pendukung: menuju Sign Up; kembali ke Landing.
- Entitas domain: akun pengguna, peran.
- Tanggung jawab komponen: formulir satu kolom, label di atas field, blok submit berstempel, tautan pemulihan kesalahan.
- State: loading (tombol submit nonaktif), empty (field kosong dengan validasi), success (dialihkan ke Dashboard), error (kredensial salah, akun tidak ditemukan), recovery (coba lagi atau daftar).
Sign Up
- Informasi/state: formulir pendaftaran awal (nama, email, kata sandi, konfirmasi kata sandi), indikator kekuatan kata sandi.
- Aksi utama: membuat akun.
- Aksi pendukung: menuju Login; kembali ke Landing.
- Entitas domain: akun pengguna, peran awal.
- Tanggung jawab komponen: formulir satu kolom, validasi inline, blok submit berstempel.
- State: loading, empty (field kosong), success (akun dibuat, dialihkan ke Login atau Dashboard), error (email sudah terdaftar, kata sandi tidak cocok), recovery (perbaiki input dan kirim ulang).
Page 5 of 21
Dashboard
- Informasi/state: header register (nama gereja, tanggal Minggu berjalan); strip 4 statistik (total jemaat, hadir minggu ini, ulang tahun bulan ini, aset terdaftar) dengan angka tabular; panel grafik kehadiran lebar; panel agenda & pengingat sempit; statistik pertumbuhan jemaat.
- Aksi utama: meninjau ringkasan statistik kehadiran dan pertumbuhan jemaat.
- Aksi pendukung: menuju Attendance, Monthly Reports, Weekly Reports, Birthday Reminders, Schedules.
- Entitas domain: jemaat, kehadiran, ulang tahun, aset, pertumbuhan jemaat.
- Tanggung jawab komponen: panel bergaris, strip statistik, grafik kehadiran, panel agenda, chip kategori.
- State: loading (kerangka panel), empty (belum ada data kehadiran/jemaat), success (statistik tampil), error (gagal memuat data), recovery (muat ulang).
Members
- Informasi/state: daftar jemaat terdaftar dengan nomor induk jemaat, nama, dan chip kategori kelompok; tabel bergaris dengan header lengket hijau hutan.
- Aksi utama: menambah jemaat baru; membuka Member Details.
- Aksi pendukung: menuju Member Search, Member Groups; filter cepat.
- Entitas domain: jemaat (nomor induk, nama, tempat/tanggal lahir, jenis kelamin, NIK, alamat lengkap, nomor HP/WA, pekerjaan, pendidikan terakhir/sekolah).
- Tanggung jawab komponen: tabel register, kolom aksi rata kanan, tombol tambah, chip kategori.
- State: loading, empty (belum ada jemaat), success (daftar tampil), error (gagal memuat), recovery (muat ulang atau tambah ulang).
Member Details
- Informasi/state: rekam lengkap satu jemaat — identitas pribadi, kontak, pekerjaan, pendidikan, dan riwayat sakramen (penyerahan anak, baptisan air, pemberkatan nikah) dengan stempel verifikasi.
- Aksi utama: menyunting data jemaat; menambah/memperbarui riwayat sakramen.
- Aksi pendukung: kembali ke Members; menuju Member Groups.
- Entitas domain: jemaat, sakramen (penyerahan anak, baptisan air, pemberkatan nikah).
- Tanggung jawab komponen: panel bergaris, stempel sakramen melingkar, formulir satu kolom, blok submit berstempel.
- State: loading, empty (riwayat sakramen belum ada), success (perubahan tersimpan dan tersinkronisasi), error (validasi gagal, konflik sinkronisasi), recovery (perbaiki input, muat ulang, gabungkan perubahan).
Page 6 of 21
Member Search
- Informasi/state: bilah pencarian dan filter kriteria spesifik (nomor induk, nama, NIK, kelompok usia, wilayah, keluarga, jenis pelayanan, jenis kelamin, rentang tanggal lahir).
- Aksi utama: mencari jemaat dengan kriteria spesifik.
- Aksi pendukung: menghapus filter; membuka Member Details dari hasil.
- Entitas domain: jemaat, kelompok, wilayah, keluarga, pelayanan.
- Tanggung jawab komponen: bilah filter, chip kategori, tabel hasil, kolom aksi.
- State: loading, empty (tidak ada hasil), success (hasil tampil), error (kriteria tidak valid), recovery (ubah kriteria).
Member Groups
- Informasi/state: pengelompokan jemaat berdasarkan kelompok usia (anak sekolah minggu, kaum muda remaja, dewasa muda, usia lanjut), wilayah, keluarga, dan jenis pelayanan; chip kategori berlabel.
- Aksi utama: membuat dan mengelola kelompok; menetapkan jemaat ke kelompok.
- Aksi pendukung: menuju Members, Member Search.
- Entitas domain: kelompok usia, wilayah, keluarga, jenis pelayanan.
- Tanggung jawab komponen: panel bergaris, chip kategori (mustard, denim, rust, sage, netral), tabel anggota kelompok, panel tekstur peta untuk wilayah.
- State: loading, empty (kelompok belum dibuat), success (kelompok dan anggota tampil), error (gagal menyimpan penetapan), recovery (coba lagi).
Attendance
- Informasi/state: pencatatan kehadiran jemaat pada kegiatan ibadah mingguan; daftar kegiatan dan status hadir.
- Aksi utama: mencatat kehadiran per kegiatan ibadah.
- Aksi pendukung: menuju Weekly Reports, Dashboard.
- Entitas domain: kehadiran, kegiatan ibadah, jemaat.
- Tanggung jawab komponen: tabel register, pemilih kegiatan, penanda status, chip kategori.
- State: loading, empty (belum ada kegiatan), success (kehadiran tersimpan dan tersinkronisasi), error (gagal menyimpan), recovery (simpan ulang).
Page 7 of 21
Monthly Reports
- Informasi/state: laporan bulanan jemaat dan kehadiran; pemilih periode bulan.
- Aksi utama: mengekspor laporan bulanan ke PDF; mengekspor laporan bulanan ke Excel.
- Aksi pendukung: meninjau pratinjau laporan; menuju Weekly Reports.
- Entitas domain: laporan bulanan, jemaat, kehadiran.
- Tanggung jawab komponen: panel bergaris, tombol ekspor berbentuk stempel melingkar (PDF/Excel) dengan stamp-scale 90ms, pratinjau tabel.
- State: loading (menyiapkan laporan), empty (belum ada data periode), success (berkas PDF/Excel terunduh), error (gagal membuat berkas), recovery (coba ekspor ulang).
Weekly Reports
- Informasi/state: laporan otomatis kegiatan ibadah dan kehadiran setiap minggu; pemilih minggu.
- Aksi utama: meninjau laporan mingguan otomatis.
- Aksi pendukung: menuju Attendance, Monthly Reports.
- Entitas domain: laporan mingguan, kegiatan ibadah, kehadiran.
- Tanggung jawab komponen: panel bergaris, tabel ringkasan, penanda status otomasi.
- State: loading, empty (laporan minggu belum tersedia), success (laporan tampil), error (gagal memuat), recovery (muat ulang).
Birthday Reminders
- Informasi/state: daftar pengingat ulang tahun otomatis bagi jemaat terdaftar; strip tiket dengan blok tanggal oranye.
- Aksi utama: meninjau dan mengelola pengingat ulang tahun.
- Aksi pendukung: menuju Members, Member Details.
- Entitas domain: jemaat, tanggal lahir, pengingat.
- Tanggung jawab komponen: strip tiket berlubang, blok tanggal oranye, panel bergaris.
- State: loading, empty (tidak ada ulang tahun pada periode), success (daftar pengingat tampil), error (gagal memuat), recovery (muat ulang).
Page 8 of 21
Schedules
- Informasi/state: jadwal ibadah dan acara gereja mingguan; status pengiriman notifikasi push.
- Aksi utama: membuat dan mengelola jadwal ibadah/acara mingguan; mengirim notifikasi push.
- Aksi pendukung: menuju Ministry, Dashboard.
- Entitas domain: jadwal ibadah, acara gereja, notifikasi push.
- Tanggung jawab komponen: panel bergaris, tabel jadwal, lonceng notifikasi dengan wiggle 2-frame saat jadwal baru, penanda status kirim.
- State: loading, empty (belum ada jadwal), success (jadwal tersimpan dan notifikasi terkirim), error (gagal mengirim notifikasi), recovery (kirim ulang).
Inventory
- Informasi/state: catatan aset gereja dan kondisi setiap aset.
- Aksi utama: menambah dan memperbarui aset serta kondisinya.
- Aksi pendukung: meninjau riwayat kondisi aset.
- Entitas domain: aset gereja, kondisi aset.
- Tanggung jawab komponen: tabel register, formulir satu kolom, blok submit berstempel.
- State: loading, empty (belum ada aset), success (aset tersimpan dan tersinkronisasi), error (gagal menyimpan), recovery (coba lagi).
Ministry
- Informasi/state: daftar pelayanan/imam-imam dan daftar tugas terjadwal setiap anggota.
- Aksi utama: mengelola pelayanan/imam-imam; menetapkan tugas terjadwal per anggota.
- Aksi pendukung: menuju Schedules; menandai tugas selesai/terlambat.
- Entitas domain: pelayanan, imam, anggota pelayanan, tugas terjadwal.
- Tanggung jawab komponen: panel bergaris, tabel tugas, penanda tugas terlambat oranye, chip jenis pelayanan.
- State: loading, empty (belum ada pelayanan/tugas), success (penugasan tersimpan dan tersinkronisasi), error (konflik jadwal/tugas), recovery (sesuaikan penugasan).
Page 9 of 21
3. Functional Requirements
FR-01 — Pencatatan data dasar jemaat (explicit)
As an Administrator Data Jemaat I should mencatat data jemaat yang mencakup nomor induk jemaat, nama, tempat/tanggal lahir, jenis kelamin, NIK, alamat lengkap, nomor HP/WA, pekerjaan, serta pendidikan terakhir/sekolah, so that setiap jemaat memiliki rekam identitas yang lengkap dan dapat ditelusuri.
- Trigger/input: administrator membuka Members dan menambah jemaat baru.
- Observable result: rekam jemaat tersimpan dengan seluruh field terisi dan tampil pada daftar Members.
- Access state: role_restricted (Administrator Data Jemaat).
- Failure/recovery: validasi field gagal atau konflik sinkronisasi → perbaiki input dan simpan ulang.
- Continuation: rekam dapat dibuka pada Member Details.
FR-02 — Pencatatan riwayat sakramen (explicit)
As an Administrator Data Jemaat I should mencatat riwayat sakramen jemaat yang meliputi penyerahan anak, baptisan air, dan pemberkatan nikah, so that riwayat sakramen setiap jemaat terdokumentasi.
- Trigger/input: administrator membuka Member Details dan menambah/memperbarui entri sakramen.
- Observable result: entri sakramen tersimpan dan ditandai stempel verifikasi pada rekam jemaat.
- Access state: role_restricted (Administrator Data Jemaat).
- Failure/recovery: data sakramen tidak lengkap → lengkapi dan simpan ulang.
- Continuation: riwayat sakramen tampil pada Member Details.
FR-03 — Sinkronisasi data real-time berbasis cloud (explicit)
As an Administrator Data Jemaat I should melihat perubahan data jemaat, kehadiran, jadwal, dan inventaris tersinkronisasi secara real-time melalui cloud, so that seluruh pengguna berhak bekerja dari data terkini.
- Trigger/input: penyimpanan atau perubahan data oleh pengguna berhak.
- Observable result: perubahan tercermin pada tampilan pengguna lain tanpa memuat ulang manual.
- Access state: berlaku pada seluruh permukaan terlindungi.
- Failure/recovery: koneksi terputus → perubahan ditahan dan disinkronkan saat koneksi pulih.
- Continuation: pengguna melanjutkan pekerjaan dari data yang telah disinkronkan.
FR-04 — Ekspor laporan bulanan PDF dan Excel (explicit)
As a Pemimpin/Pengurus Gereja (Penerima Laporan) I should mengekspor laporan bulanan dalam format PDF dan Excel, so that laporan dapat dibagikan dan diarsipkan.
- Trigger/input: pengurus memilih periode bulan pada Monthly Reports dan menekan tombol ekspor PDF atau Excel.
- Observable result: berkas PDF atau Excel terunduh berisi laporan bulanan periode terpilih.
- Access state: role_restricted (Pemimpin/Pengurus Gereja).
- Failure/recovery: pembuatan berkas gagal → coba ekspor ulang.
- Continuation: berkas digunakan untuk rapat pengurus atau arsip gereja.
FR-05 — Dashboard statistik kehadiran (explicit)
As a Pemimpin/Pengurus Gereja (Penerima Laporan) I should melihat dashboard statistik kehadiran jemaat, so that tingkat kehadiran ibadah dapat dipantau.
- Trigger/input: pengurus membuka Dashboard.
- Observable result: panel statistik kehadiran menampilkan angka dan grafik kehadiran.
- Access state: role_restricted (Pemimpin/Pengurus Gereja).
- Failure/recovery: data gagal dimuat → muat ulang panel.
- Continuation: pengurus menelusuri Attendance atau Weekly Reports.
FR-06 — Pengingat ulang tahun otomatis (explicit)
As an Administrator Data Jemaat I should memantau pengingat ulang tahun otomatis bagi jemaat yang terdaftar di sistem, so that jemaat dapat dihubungi pada hari ulang tahunnya.
- Trigger/input: otomasi latar belakang mengevaluasi tanggal lahir jemaat terdaftar.
- Observable result: pengingat ulang tahun muncul pada Birthday Reminders dan Dashboard sebagai strip tiket dengan blok tanggal oranye.
- Access state: role_restricted (Administrator Data Jemaat).
- Failure/recovery: pengingat tidak muncul → periksa kelengkapan tanggal lahir jemaat dan muat ulang.
- Continuation: administrator menindaklanjuti dengan membuka Member Details.
FR-07 — Notifikasi push jadwal ibadah dan acara mingguan (explicit)
As a Petugas Pelayanan dan Penjadwalan I should mengirim notifikasi push untuk jadwal ibadah dan acara gereja mingguan, so that jemaat dan petugas mengetahui jadwal tepat waktu.
- Trigger/input: petugas menyimpan jadwal pada Schedules dan mengirim notifikasi.
- Observable result: notifikasi push terkirim ke perangkat penerima; lonceng notifikasi melakukan wiggle 2-frame saat jadwal baru tiba.
- Access state: role_restricted (Petugas Pelayanan dan Penjadwalan).
- Failure/recovery: pengiriman gagal → kirim ulang dari Schedules.
- Continuation: jadwal tetap tampil pada Schedules dan Dashboard.
FR-08 — Pengelompokan jemaat (explicit)
As an Administrator Data Jemaat I should mengelompokkan jemaat berdasarkan kelompok usia, wilayah, keluarga, dan jenis pelayanan, so that jemaat dapat ditelusuri menurut kelompoknya.
- Trigger/input: administrator membuat kelompok dan menetapkan jemaat pada Member Groups.
- Observable result: jemaat tampil di bawah kelompok yang sesuai dengan chip kategori berlabel.
- Access state: role_restricted (Administrator Data Jemaat).
- Failure/recovery: penetapan gagal disimpan → coba lagi.
- Continuation: kelompok digunakan sebagai filter pada Member Search.
FR-09 — Kelompok usia baku (explicit)
As an Administrator Data Jemaat I should menggunakan kelompok jemaat yang mencakup anak sekolah minggu, kaum muda remaja, dewasa muda, hingga kategori usia lanjut, so that pengelompokan usia konsisten dengan struktur gereja.
- Trigger/input: administrator memilih kelompok usia saat menetapkan jemaat.
- Observable result: jemaat terklasifikasi ke salah satu kelompok usia baku dengan chip kategori (mustard, denim, rust, sage).
- Access state: role_restricted (Administrator Data Jemaat).
- Failure/recovery: kelompok tidak tersedia → buat kelompok terlebih dahulu.
- Continuation: kelompok usia tampil pada daftar dan filter.
FR-10 — Manajemen inventaris aset gereja (explicit)
As a Petugas Inventaris Aset Gereja I should mengelola modul manajemen inventaris aset gereja, mencatat aset yang dimiliki beserta kondisinya, so that pengelolaan aset gereja tertib.
- Trigger/input: petugas menambah atau memperbarui aset pada Inventory.
- Observable result: catatan aset dan kondisinya tersimpan serta tersinkronisasi.
- Access state: role_restricted (Petugas Inventaris Aset Gereja).
- Failure/recovery: penyimpanan gagal → coba lagi.
- Continuation: aset terdaftar muncul pada statistik Dashboard (aset terdaftar).
FR-11 — Pencarian cepat dengan filter kriteria spesifik (explicit)
As an Administrator Data Jemaat I should mencari data jemaat dengan cepat dan akurat melalui filter kriteria yang spesifik, so that rekam jemaat dapat ditemukan dengan tepat.
- Trigger/input: administrator memasukkan kriteria pada Member Search (nomor induk, nama, NIK, kelompok, wilayah, keluarga, pelayanan, jenis kelamin, rentang tanggal lahir).
- Observable result: daftar hasil yang sesuai kriteria tampil.
- Access state: role_restricted (Administrator Data Jemaat).
- Failure/recovery: tidak ada hasil atau kriteria tidak valid → ubah kriteria.
- Continuation: administrator membuka Member Details dari hasil.
FR-12 — Dasbor statistik pertumbuhan jemaat (explicit)
As a Pemimpin/Pengurus Gereja (Penerima Laporan) I should melihat dasbor statistik yang menampilkan pertumbuhan jemaat, so that perkembangan jumlah jemaat dapat dievaluasi.
- Trigger/input: pengurus membuka Dashboard.
- Observable result: panel pertumbuhan jemaat menampilkan tren jumlah jemaat.
- Access state: role_restricted (Pemimpin/Pengurus Gereja).
- Failure/recovery: data gagal dimuat → muat ulang.
- Continuation: pengurus membandingkan dengan laporan bulanan.
FR-13 — Pelaporan otomatis kegiatan ibadah dan kehadiran mingguan (explicit)
As a Pemimpin/Pengurus Gereja (Penerima Laporan) I should menerima laporan otomatis untuk kegiatan ibadah serta kehadiran setiap minggunya, so that laporan mingguan tersedia tanpa penyusunan manual.
- Trigger/input: otomasi latar belakang menyusun laporan dari data kegiatan ibadah dan kehadiran minggu berjalan.
- Observable result: laporan mingguan tampil pada Weekly Reports.
- Access state: role_restricted (Pemimpin/Pengurus Gereja).
- Failure/recovery: laporan belum tersedia → muat ulang setelah periode tertutup.
- Continuation: pengurus meninjau Attendance atau mengekspor laporan bulanan.
FR-14 — Pencatatan kehadiran ibadah mingguan (explicit)
As an Administrator Data Jemaat I should mencatat kehadiran jemaat pada kegiatan ibadah mingguan, so that data kehadiran menjadi dasar statistik dan laporan.
- Trigger/input: administrator memilih kegiatan ibadah pada Attendance dan menandai kehadiran jemaat.
- Observable result: kehadiran tersimpan dan tersinkronisasi; statistik Dashboard diperbarui.
- Access state: role_restricted (Administrator Data Jemaat, Pemimpin/Pengurus Gereja).
- Failure/recovery: penyimpanan gagal → simpan ulang.
- Continuation: data kehadiran masuk ke laporan mingguan dan bulanan.
FR-15 — Manajemen pelayanan/imam-imam dan tugas terjadwal (explicit)
As a Petugas Pelayanan dan Penjadwalan I should mengelola modul manajemen pelayanan/imam-imam beserta daftar tugas terjadwal untuk setiap anggota, so that koordinasi pelayanan berjalan lancar.
- Trigger/input: petugas menambah pelayanan/imam dan menetapkan tugas terjadwal per anggota pada Ministry.
- Observable result: daftar pelayanan, imam, dan tugas terjadwal tersimpan serta tersinkronisasi; tugas terlambat ditandai oranye.
- Access state: role_restricted (Petugas Pelayanan dan Penjadwalan).
- Failure/recovery: konflik jadwal/tugas → sesuaikan penugasan.
- Continuation: tugas terjadwal terhubung ke Schedules.
FR-16 — Pendaftaran awal pengguna (required_inference)
As a calon pengguna I should mendaftar melalui Sign Up untuk mulai menggunakan aplikasi, so that saya memperoleh akses ke register jemaat.
- Trigger/input: pengguna baru mengisi formulir Sign Up.
- Observable result: akun dibuat dan pengguna dapat melanjutkan ke Login/Dashboard.
- Access state: none (entry anonim).
- Failure/recovery: email sudah terdaftar atau kata sandi tidak cocok → perbaiki input.
- Continuation: pengguna masuk melalui Login.
FR-17 — Login verifikasi berulang (required_inference)
As a pengguna terdaftar I should masuk melalui Login untuk memverifikasi identitas saya, so that akses ke data jemaat, laporan, penjadwalan, dan aset tetap terlindungi.
- Trigger/input: pengguna memasukkan kredensial pada Login.
- Observable result: sesi terbentuk dan pengguna diarahkan ke Dashboard.
- Access state: none (entry anonim untuk membangun sesi).
- Failure/recovery: kredensial salah → coba lagi atau daftar.
- Continuation: pengguna mengakses permukaan sesuai perannya.
FR-18 — Otorisasi berbasis peran (required_inference)
As a pengguna terdaftar I should hanya mengakses permukaan yang sesuai peran saya, so that pengelolaan data, pelayanan, laporan, dan inventaris memiliki kontrol yang berbeda.
- Trigger/input: pengguna membuka permukaan terlindungi.
- Observable result: permukaan yang diizinkan tampil; permukaan di luar peran tidak dapat diakses.
- Access state: role_restricted pada Dashboard, Members, Member Details, Member Search, Member Groups, Attendance, Monthly Reports, Weekly Reports, Birthday Reminders, Schedules, Inventory, Ministry.
- Failure/recovery: akses ditolak → kembali ke permukaan yang diizinkan.
- Continuation: pengguna melanjutkan pekerjaan sesuai perannya.
FR-19 — Otomasi pengingat ulang tahun dan pembuatan laporan mingguan (required_inference)
As a sistem I should menjalankan otomasi latar belakang untuk pengingat ulang tahun dan pembuatan laporan mingguan, so that pengingat dan laporan tersedia tanpa tindakan manual.
- Trigger/input: jadwal otomasi berkala.
- Observable result: pengingat ulang tahun dan laporan mingguan tersedia pada permukaan terkait.
- Access state: system_process (tidak ada interaksi manusia langsung).
- Failure/recovery: otomasi gagal → jalankan ulang pada siklus berikutnya.
- Continuation: pengguna meninjau hasil pada Birthday Reminders dan Weekly Reports.
FR-20 — Dukungan push notification jadwal dan acara mingguan (required_inference)
As a sistem I should mengirimkan push notification untuk jadwal ibadah dan acara gereja mingguan ke perangkat penerima, so that jadwal dan acara diketahui tepat waktu.
- Trigger/input: jadwal baru disimpan atau waktu pengiriman tiba.
- Observable result: notifikasi diterima perangkat; lonceng notifikasi melakukan wiggle 2-frame.
- Access state: system_process (pengiriman), dengan pemicu dari Petugas Pelayanan dan Penjadwalan.
- Failure/recovery: pengiriman gagal → kirim ulang.
- Continuation: penerima membuka Schedules.
Page 10 of 21
4. User Personas
Administrator Data Jemaat
- Konteks produk: bekerja di kantor gereja atau dari perangkat seluler, memelihara register jemaat sebagai sumber kebenaran tunggal gereja.
- Tujuan utama: memastikan seluruh data jemaat lengkap, akurat, tersinkronisasi, dan dapat ditelusuri kembali dengan tepat.
- Tanggung jawab yang diterima: mencatat nomor induk jemaat, nama, tempat/tanggal lahir, jenis kelamin, NIK, alamat lengkap, nomor HP/WA, pekerjaan, pendidikan terakhir/sekolah; mencatat riwayat sakramen (penyerahan anak, baptisan air, pemberkatan nikah); mencari jemaat dengan filter kriteria spesifik; mengelompokkan jemaat berdasarkan usia, wilayah, keluarga, dan jenis pelayanan; mencatat kehadiran ibadah mingguan; memantau pengingat ulang tahun.
- Input/keputusan: data identitas jemaat, entri sakramen, kriteria pencarian, penetapan kelompok, status kehadiran.
- Interaksi dengan peserta lain: menyediakan data bagi Pemimpin/Pengurus Gereja melalui laporan dan dashboard; menyediakan data kehadiran bagi laporan mingguan otomatis.
- Keberhasilan yang teramati: seluruh data jemaat tersimpan, tersinkronisasi real-time, dan dapat ditemukan kembali dengan tepat.
Petugas Pelayanan dan Penjadwalan
- Konteks produk: mengoordinasikan pelayanan, imam-imam, dan jadwal ibadah/acara gereja mingguan.
- Tujuan utama: memastikan penugasan pelayanan terkoordinasi tanpa tumpang tindih dan setiap petugas menerima pemberitahuan jadwalnya.
- Tanggung jawab yang diterima: mengelola modul manajemen pelayanan/imam-imam beserta daftar tugas terjadwal setiap anggota; menyusun jadwal ibadah dan acara gereja mingguan; mengirim notifikasi push.
- Input/keputusan: daftar pelayanan dan imam, penugasan tugas, jadwal ibadah/acara, waktu pengiriman notifikasi.
- Interaksi dengan peserta lain: berkoordinasi dengan anggota pelayanan melalui tugas terjadwal dan notifikasi push; menyediakan jadwal bagi pengurus melalui Dashboard.
- Keberhasilan yang teramati: penugasan pelayanan terkoordinasi tanpa tumpang tindih dan setiap petugas menerima pemberitahuan jadwalnya.
Pemimpin/Pengurus Gereja (Penerima Laporan)
- Konteks produk: memantau statistik dan laporan untuk pengambilan keputusan penggembalaan dan pengelolaan jemaat.
- Tujuan utama: memperoleh gambaran statistik dan laporan yang akurat serta tepat waktu.
- Tanggung jawab yang diterima: memantau dashboard statistik kehadiran dan pertumbuhan jemaat; meninjau laporan kegiatan ibadah dan kehadiran mingguan; mengekspor laporan bulanan dalam format PDF dan Excel.
- Input/keputusan: periode laporan, pembacaan tren kehadiran dan pertumbuhan, keputusan penggembalaan.
- Interaksi dengan peserta lain: menerima data dari Administrator Data Jemaat dan laporan otomatis; menerima jadwal dari Petugas Pelayanan dan Penjadwalan.
- Keberhasilan yang teramati: laporan bulanan PDF/Excel dan statistik tersedia akurat serta tepat waktu.
Page 11 of 21
Petugas Inventaris Aset Gereja
- Konteks produk: mengelola catatan aset gereja dan kondisinya.
- Tujuan utama: memastikan data inventaris aset gereja tercatat dan dapat ditinjau kembali.
- Tanggung jawab yang diterima: mengelola modul manajemen inventaris aset gereja, mencatat aset yang dimiliki dan kondisinya.
- Input/keputusan: data aset, kondisi aset, pembaruan status.
- Interaksi dengan peserta lain: menyumbang angka "aset terdaftar" pada Dashboard bagi pengurus.
- Keberhasilan yang teramati: data inventaris aset gereja tercatat dan dapat ditinjau kembali.
5. Core User Flows
Alur 1 — Administrator Data Jemaat mencatat jemaat baru
- Administrator membuka Members dari rail navigasi hijau hutan.
- Administrator menekan tombol tambah jemaat.
- Administrator mengisi nomor induk jemaat, nama, tempat/tanggal lahir, jenis kelamin, NIK, alamat lengkap, nomor HP/WA, pekerjaan, dan pendidikan terakhir/sekolah.
- Administrator menyimpan; rekam tersimpan dan tersinkronisasi real-time ke cloud.
- Hasil teramati: jemaat baru tampil pada daftar Members dengan chip kategori kelompok.
- Lanjutan: administrator membuka Member Details untuk menambah riwayat sakramen.
- Kegagalan/pemulihan: jika validasi gagal atau terjadi konflik sinkronisasi, administrator memperbaiki input dan menyimpan ulang.
Alur 2 — Administrator Data Jemaat mencatat riwayat sakramen
- Administrator membuka Member Details dari Members atau hasil pencarian.
- Administrator menambah entri sakramen: penyerahan anak, baptisan air, atau pemberkatan nikah.
- Administrator menyimpan; entri tersimpan dan tersinkronisasi.
- Hasil teramati: entri sakramen tampil dengan stempel verifikasi melingkar pada rekam jemaat.
- Lanjutan: administrator melanjutkan ke pencatatan jemaat lain atau ke pengelompokan.
- Kegagalan/pemulihan: data tidak lengkap → lengkapi dan simpan ulang.
Page 12 of 21
Alur 3 — Administrator Data Jemaat mencari jemaat dengan filter spesifik
- Administrator membuka Member Search.
- Administrator memasukkan kriteria spesifik (nomor induk, nama, NIK, kelompok usia, wilayah, keluarga, jenis pelayanan, jenis kelamin, rentang tanggal lahir).
- Sistem menampilkan daftar hasil yang sesuai.
- Hasil teramati: rekam jemaat yang dicari tampil akurat pada tabel register.
- Lanjutan: administrator membuka Member Details untuk meninjau atau memperbarui.
- Kegagalan/pemulihan: tidak ada hasil → administrator mengubah atau menghapus kriteria.
Alur 4 — Administrator Data Jemaat mengelompokkan jemaat
- Administrator membuka Member Groups.
- Administrator membuat kelompok berdasarkan usia, wilayah, keluarga, atau jenis pelayanan.
- Administrator menetapkan jemaat ke kelompok, termasuk kelompok usia baku: anak sekolah minggu, kaum muda remaja, dewasa muda, usia lanjut.
- Hasil teramati: jemaat tampil di bawah kelompok dengan chip kategori berlabel (mustard, denim, rust, sage, netral).
- Lanjutan: kelompok tersedia sebagai filter pada Member Search.
- Kegagalan/pemulihan: penetapan gagal disimpan → coba lagi.
Alur 5 — Administrator Data Jemaat mencatat kehadiran ibadah mingguan
- Administrator membuka Attendance.
- Administrator memilih kegiatan ibadah minggu berjalan.
- Administrator menandai kehadiran jemaat.
- Hasil teramati: kehadiran tersimpan dan tersinkronisasi; statistik Dashboard diperbarui.
- Lanjutan: data kehadiran masuk ke laporan mingguan otomatis dan laporan bulanan.
- Kegagalan/pemulihan: penyimpanan gagal → simpan ulang.
Page 13 of 21
Alur 6 — Administrator Data Jemaat memantau pengingat ulang tahun
- Administrator membuka Birthday Reminders.
- Sistem menampilkan pengingat ulang tahun otomatis bagi jemaat terdaftar sebagai strip tiket dengan blok tanggal oranye.
- Hasil teramati: daftar jemaat yang berulang tahun pada periode tampil.
- Lanjutan: administrator membuka Member Details untuk menindaklanjuti.
- Kegagalan/pemulihan: pengingat tidak muncul → periksa kelengkapan tanggal lahir jemaat dan muat ulang.
Alur 7 — Petugas Pelayanan dan Penjadwalan mengelola pelayanan dan tugas
- Petugas membuka Ministry.
- Petugas menambah pelayanan/imam dan menetapkan tugas terjadwal untuk setiap anggota.
- Hasil teramati: daftar pelayanan, imam, dan tugas terjadwal tersimpan serta tersinkronisasi; tugas terlambat ditandai oranye.
- Lanjutan: petugas menghubungkan tugas ke jadwal pada Schedules.
- Kegagalan/pemulihan: konflik jadwal/tugas → petugas menyesuaikan penugasan.
Alur 8 — Petugas Pelayanan dan Penjadwalan menyusun jadwal dan mengirim notifikasi push
- Petugas membuka Schedules.
- Petugas membuat jadwal ibadah atau acara gereja mingguan.
- Petugas menyimpan dan mengirim notifikasi push.
- Hasil teramati: notifikasi push terkirim ke perangkat penerima; lonceng notifikasi melakukan wiggle 2-frame saat jadwal baru tiba.
- Lanjutan: jadwal tetap tampil pada Schedules dan Dashboard.
- Kegagalan/pemulihan: pengiriman gagal → petugas mengirim ulang.
Page 14 of 21
Alur 9 — Pemimpin/Pengurus Gereja memantau dashboard statistik
- Pengurus masuk melalui Login dan diarahkan ke Dashboard.
- Pengurus meninjau header register (nama gereja, tanggal Minggu berjalan) dan strip 4 statistik: total jemaat, hadir minggu ini, ulang tahun bulan ini, aset terdaftar.
- Pengurus meninjau panel grafik kehadiran dan panel pertumbuhan jemaat.
- Hasil teramati: statistik kehadiran dan pertumbuhan jemaat tampil dengan angka tabular.
- Lanjutan: pengurus menelusuri Attendance atau Weekly Reports.
- Kegagalan/pemulihan: data gagal dimuat → muat ulang panel.
Alur 10 — Pemimpin/Pengurus Gereja meninjau laporan mingguan otomatis
- Pengurus membuka Weekly Reports.
- Pengurus memilih minggu yang ingin ditinjau.
- Hasil teramati: laporan otomatis kegiatan ibadah dan kehadiran minggu tersebut tampil.
- Lanjutan: pengurus membandingkan dengan data pada Attendance atau melanjutkan ke laporan bulanan.
- Kegagalan/pemulihan: laporan belum tersedia → muat ulang setelah periode tertutup.
Alur 11 — Pemimpin/Pengurus Gereja mengekspor laporan bulanan PDF dan Excel
- Pengurus membuka Monthly Reports.
- Pengurus memilih periode bulan.
- Pengurus menekan tombol ekspor berbentuk stempel melingkar untuk PDF atau Excel; tombol melakukan stamp-scale 90ms.
- Hasil teramati: berkas PDF atau Excel terunduh berisi laporan bulanan periode terpilih.
- Lanjutan: berkas digunakan untuk rapat pengurus atau arsip gereja.
- Kegagalan/pemulihan: pembuatan berkas gagal → pengurus mencoba ekspor ulang.
Page 15 of 21
Alur 12 — Petugas Inventaris Aset Gereja mengelola aset
- Petugas membuka Inventory.
- Petugas menambah aset gereja baru atau memperbarui kondisi aset yang ada.
- Hasil teramati: catatan aset dan kondisinya tersimpan serta tersinkronisasi.
- Lanjutan: aset terdaftar muncul pada statistik Dashboard (aset terdaftar).
- Kegagalan/pemulihan: penyimpanan gagal → coba lagi.
Alur 13 — Pengguna baru mendaftar dan masuk
- Calon pengguna membuka Landing dan meninjau penjelasan aplikasi serta fungsi utamanya.
- Calon pengguna menekan "MASUK KE REGISTER" atau tautan Sign Up.
- Calon pengguna mengisi formulir Sign Up (nama, email, kata sandi, konfirmasi kata sandi).
- Hasil teramati: akun dibuat.
- Lanjutan: pengguna masuk melalui Login dan diarahkan ke Dashboard sesuai perannya.
- Kegagalan/pemulihan: email sudah terdaftar atau kata sandi tidak cocok → perbaiki input dan kirim ulang.
Alur 14 — Pengguna terdaftar masuk kembali
- Pengguna membuka Login.
- Pengguna memasukkan kredensial.
- Hasil teramati: sesi terbentuk dan pengguna diarahkan ke Dashboard.
- Lanjutan: pengguna mengakses permukaan sesuai perannya (Members, Attendance, Schedules, Inventory, Ministry, laporan).
- Kegagalan/pemulihan: kredensial salah → coba lagi atau daftar melalui Sign Up.
Page 16 of 21
6. Visuals Colors and Theme
Muse: Aaron Draplin — Field-notes record-keeping: kraft, badge and thick-line honesty for a church registry.
Headline arah: register gereja yang terasa seperti buku catatan lapangan — kraft, stempel, dan garis tebal yang jujur.
Palet (light mode)
| Peran | Hex | Penggunaan |
|---|
| Background | #EFE6D4 | Kraft/field-notes paper ground, dengan tekstur halftone 4% |
| Surface | #FBF5E6 | Ruled-paper surface untuk kartu, tabel, formulir |
| Text | #1C1A17 | Near-black ink untuk seluruh body dan data (kontras ~14:1) |
| Primary | #1F3D2B | Forest green struktural — header, sidebar, badge fill, table header rules, active nav |
| Accent | #D96A1F | Burnt orange — CTA utama, motif stempel/seal, pengingat ulang tahun, flag tugas terlambat, focus ring |
| Muted | #6B5E4A | Label sekunder, metadata, hairline rules |
Chip kategori (workwear set — chip kecil solid, selalu berpasangan dengan label teks)
| Kategori | Hex |
|---|
| Sekolah Minggu | #C8922A (mustard) |
| Kaum Muda Remaja | #2A4B6E (denim) |
| Dewasa Muda | #A63A1E (rust) |
| Usia Lanjut | #4A6B4F (sage/green) |
| Tidak ditetapkan | #6B5E4A (netral) |
Biru tidak pernah menjadi aksen antarmuka; chip denim hanya kode kategori.
Page 17 of 21
Tipografi
- Headings: Alfa Slab One — display dan section title, all-caps, tracking -0.01em.
- Body: Barlow Semi Condensed — 500/600 untuk subhead, label, dan data; 400 untuk body copy.
- Label: all-caps, letter-spacing 0.08em, 12–13px.
- Numeral: Barlow tabular untuk statistik dan laporan.
- Skala: 1.333 modular — 96/72/54/40/30/22/17/14; hero
clamp(44px, 9vw, 128px), section title clamp(28px, 4vw, 54px), card title 22px, label 12px, body 17px, table data 14px, numeral 40px.
Bahasa bentuk
Hard-edged dan chunky: border ink 2px, radius 4–6px hanya pada kontrol dan kartu, tanpa tombol pill (gunakan rounded rectangle dengan border 2px dan hard shadow offset 3px), badge/stamp melingkar untuk status dan sakramen, garis horizontal ruled di dalam tabel, section rule tebal 4px, aksen hazard-stripe diagonal hanya sebagai divider tipis. Tidak ada yang lembut, tidak ada yang glassy.
Layout
Panel ruled poster-like pada grid 12 kolom dengan rule 1px terlihat antar baris dan section. Rail navigasi kiri adalah kolom forest-green solid dengan label all-caps dan penanda aktif berstempel kecil. Dashboard adalah tumpukan panel ruled: header register lebar (nama gereja dan tanggal), strip statistik 4-up (total jemaat, hadir minggu ini, ulang tahun bulan ini, aset terdaftar) dengan numeral tabular, lalu body dua kolom — panel grafik kehadiran lebar dan panel agenda & pengingat sempit. Tabel menggunakan sticky header dengan fill forest-green dan teks cream, baris zebra #FBF5E6/#EFE6D4, dan kolom aksi rata kanan. Formulir satu kolom dengan label di atas field, spacing 8pt, dan blok submit berstempel.
Page 18 of 21
Imagery
Tanpa fotografi orang, tanpa stok gambar jemaat, tanpa 3D. Imagery adalah vektor garis tebal: badge mark gereja-dan-menara, set ikon sakramen (dove/host/water-drop) dengan stroke 2px, tekstur topografi dan garis peta untuk panel pengelompokan wilayah, tekstur kertas kraft halftone-dot 4% pada background, dan seal melingkar berstempel untuk ekspor laporan (PDF/Excel) serta rekam sakramen terverifikasi. Foto, jika ada, hanya duotone kraft-and-ink dokumenter bangunan gereja, tidak pernah wajah.
7. Signature Design Concept
Hero Landing — "Satu Buku, Satu Jemaat"
Hero full-bleed pada kraft-paper field #EFE6D4 dengan tekstur halftone dot 4%. Sisi kiri 7 kolom didominasi headline all-caps Alfa Slab One berukuran besar dalam near-black ink yang membentang viewport pada clamp(44px, 9vw, 128px) — kata "SATU BUKU, SATU JEMAAT" ditumpuk dalam 3 baris — dengan rule burnt-orange 6px di bawah baris pertama dan badge/stamp melingkar forest-green yang menumpuk baseline baris terakhir di tepi kanan. Di bawahnya, blok CTA berbingkai 2px oranye "MASUK KE REGISTER" dengan hard shadow offset 3px, plus tombol sekunder outlined "LIHAT FITUR".
Sisi kanan 5 kolom: tumpukan tiga kartu ruled-paper yang sedikit miring (seperti halaman register bertab) — masing-masing menampilkan satu fragmen rekam nyata: baris NIK, stempel baptisan, dan strip pengingat ulang tahun — sengaja bleed keluar tepi kanan viewport. Tidak ada headline terpusat, tidak ada gradien, tidak ada tombol biru, tidak ada illustration blob.
Konsep ini hanya menyusun ulang konten, state, dan kontrol yang telah diterima — tidak menambah perilaku, halaman, atau destinasi baru.
Page 19 of 21
8. Interaction Model & Motion Direction
Interaction Model: Static (direction)
Motion Tempo: restrained
Hero Dimensionality: flat
Landing Hero Motion Brief
- Focal subject: headline all-caps Alfa Slab One "SATU BUKU, SATU JEMAAT" pada kraft halftone ground, dengan badge/stamp forest-green dan tumpukan kartu register miring di sisi kanan.
- Input → transformation → outcome: pengguna mengarahkan kursor/menyentuh CTA → tombol melakukan stamp-scale 90ms (1.04 → 1.0) → pengguna diarahkan ke Login. Kartu register tetap statis; tidak ada animasi dekoratif.
- Motion vocabulary: restrained dan mekanis, seperti stempel karet turun: 120–180ms ease-out untuk perubahan state, 90ms stamp-scale pada tombol primer, hover baris tabel sebagai bar oranye 2px di sisi kiri, tanpa parallax, tanpa bounce, tanpa floating blob. Satu loop bertujuan: lonceng notifikasi melakukan wiggle 2-frame saat jadwal ibadah baru atau pengingat ulang tahun tiba, lalu berhenti.
- Composed first frame: kraft field penuh dengan tekstur halftone 4%; headline 3 baris di kiri dengan rule oranye di bawah baris pertama; badge stamp forest-green menumpuk baseline baris terakhir; CTA oranye berbingkai 2px dengan hard shadow; tiga kartu ruled-paper miring bleed keluar tepi kanan.
- Reduced-motion state: wiggle lonceng dan seluruh transisi scale dinonaktifkan; kartu register tetap dalam susunan statis yang dapat dibaca penuh; CTA tetap tampil utuh tanpa animasi.
9. Non-Functional Requirements
- NFR-01 — Sinkronisasi real-time berbasis cloud (explicit): perubahan data jemaat, kehadiran, jadwal, dan inventaris harus tersinkronisasi secara real-time melalui cloud. Rasional: constraint eksplisit pengguna.
- NFR-02 — Ekspor PDF dan Excel (explicit): basis data harus mendukung ekspor laporan dalam format PDF dan Excel. Rasional: constraint eksplisit pengguna.
- NFR-03 — Laporan bulanan (explicit): laporan yang diekspor adalah laporan bulanan. Rasional: constraint eksplisit pengguna.
- NFR-04 — Pengingat ulang tahun terbatas jemaat terdaftar (explicit): pengingat ulang tahun otomatis hanya berlaku bagi jemaat yang terdaftar di sistem. Rasional: constraint eksplisit pengguna.
- NFR-05 — Notifikasi push mingguan (explicit): notifikasi push harus mencakup jadwal ibadah dan acara gereja mingguan. Rasional: constraint eksplisit pengguna.
- NFR-06 — Kelompok usia baku (explicit): kelompok jemaat harus mencakup anak sekolah minggu, kaum muda remaja, dewasa muda, hingga kategori usia lanjut. Rasional: constraint eksplisit pengguna.
- NFR-07 — Pelaporan otomatis mingguan (explicit): pelaporan otomatis harus mencakup kegiatan ibadah serta kehadiran setiap minggunya. Rasional: constraint eksplisit pengguna.
- NFR-08 — Keterbacaan lintas viewport (explicit, dari arah kreatif): headline, wordmark, label, angka, teks kartu, dan kontrol harus tetap utuh di dalam viewport dan kontainernya pada 375px, 768px, dan 1280px, membungkus atau menskalakan (misalnya
font-size: clamp(...)) agar muat; tidak ada elemen lain yang menutupi bagian mana pun dari teks atau kontrol yang dapat dibaca.
- NFR-09 — Aksesibilitas kontras (required_inference): teks body dan data pada
#1C1A17 di atas #EFE6D4/#FBF5E6 harus mempertahankan kontras tinggi (~14:1) untuk keterbacaan daftar NIK, alamat, dan riwayat sakramen yang panjang.
- NFR-10 — Preferensi gerak tereduksi (explicit, dari arah kreatif):
prefers-reduced-motion harus menonaktifkan wiggle lonceng dan seluruh transisi scale.
Page 20 of 21
10. Tech Stack
- Frontend: React (aplikasi web) — antarmuka register jemaat dengan rail navigasi, tabel ruled, dan panel statistik.
- Backend: Python/FastAPI — layanan data jemaat, sakramen, kehadiran, jadwal, inventaris, pelayanan, otorisasi berbasis peran, otomasi pengingat ulang tahun dan laporan mingguan, serta pembuatan berkas PDF dan Excel.
- Storage: basis data relasional untuk data jemaat, sakramen, kehadiran, jadwal, inventaris, pelayanan, dan tugas terjadwal, dengan dukungan sinkronisasi real-time berbasis cloud.
- Realtime/Cloud sync: layanan sinkronisasi cloud untuk replikasi perubahan data secara real-time.
- Push notification: layanan notifikasi push untuk jadwal ibadah dan acara gereja mingguan.
- Dokumen: pustaka pembuatan PDF dan Excel untuk ekspor laporan bulanan.
- Deployment: Docker/docker-compose untuk pengemasan dan menjalankan layanan.
11. Assumptions and Constraints
- A-01 (required_inference): Identitas dimiliki aplikasi; pengguna baru mendaftar melalui Sign Up dan pengguna berulang memverifikasi melalui Login. Sumber tidak menetapkan provider, provisioning, undangan, atau akun yang sudah ada.
- A-02 (required_inference): Otorisasi berbasis peran membedakan pengelolaan data, pelayanan, laporan, dan inventaris, sesuai penetapan akses per permukaan.
- A-03 (explicit): Sinkronisasi data harus real-time berbasis cloud.
- A-04 (explicit): Ekspor laporan harus mendukung format PDF dan Excel, dan laporan yang diekspor adalah laporan bulanan.
- A-05 (explicit): Pengingat ulang tahun otomatis hanya bagi jemaat yang terdaftar di sistem.
- A-06 (explicit): Notifikasi push mencakup jadwal ibadah dan acara gereja mingguan.
- A-07 (explicit): Kelompok jemaat mencakup anak sekolah minggu, kaum muda remaja, dewasa muda, hingga kategori usia lanjut.
- A-08 (explicit): Pelaporan otomatis mencakup kegiatan ibadah serta kehadiran setiap minggunya.
- A-09 (explicit, arah kreatif): Biru/indigo dilarang sebagai warna primer atau aksen antarmuka; chip denim hanya kode kategori dan selalu berpasangan dengan label teks.
- A-10 (explicit, arah kreatif): Tidak ada fotografi wajah atau stok gambar jemaat, tidak ada 3D, tidak ada parallax, tidak ada glassmorphism, gradien blob, tombol pill, atau radius 16px+.
- A-11 (default — tidak ditentukan pengguna): Tidak ada kemampuan masa depan yang dinyatakan dalam sumber; seluruh kemampuan yang tercantum adalah lingkup saat ini.
Page 21 of 21
12. Glossary
- Jemaat: anggota gereja yang terdaftar dalam sistem.
- Nomor Induk Jemaat: nomor identitas unik jemaat dalam register gereja.
- NIK: Nomor Induk Kependudukan jemaat.
- Sakramen: riwayat sakramen jemaat — penyerahan anak, baptisan air, pemberkatan nikah.
- Penyerahan Anak: sakramen penyerahan anak kepada Tuhan.
- Baptisan Air: sakramen baptisan air.
- Pemberkatan Nikah: sakramen pemberkatan pernikahan.
- Kelompok Usia: klasifikasi jemaat berdasarkan usia — anak sekolah minggu, kaum muda remaja, dewasa muda, usia lanjut.
- Wilayah: pengelompokan jemaat berdasarkan area tempat tinggal.
- Keluarga: pengelompokan jemaat berdasarkan unit keluarga.
- Jenis Pelayanan: pengelompokan jemaat berdasarkan bidang pelayanan.
- Kehadiran: catatan kehadiran jemaat pada kegiatan ibadah mingguan.
- Laporan Bulanan: laporan periodik bulanan yang dapat diekspor dalam format PDF dan Excel.
- Laporan Mingguan: laporan otomatis kegiatan ibadah dan kehadiran setiap minggu.
- Pengingat Ulang Tahun: pengingat otomatis bagi jemaat terdaftar pada hari ulang tahunnya.
- Notifikasi Push: pemberitahuan yang dikirim ke perangkat untuk jadwal ibadah dan acara gereja mingguan.
- Inventaris Aset Gereja: catatan aset yang dimiliki gereja beserta kondisinya.
- Pelayanan/Imam: modul manajemen pelayanan dan imam-imam gereja.
- Tugas Terjadwal: daftar tugas yang dijadwalkan untuk setiap anggota pelayanan.
- Sinkronisasi Real-time Berbasis Cloud: replikasi data secara langsung melalui cloud sehingga seluruh pengguna berhak bekerja dari data terkini.
No comments yet. Be the first!