Hadira — Backend Presensi Sekolah (Go)
Backend presensi sekolah berbasis Go: sesi presensi, QR code dan pemeriksaan lokasi, koreksi presensi, tahun ajaran, laporan matriks, ekspor, serta observabilitas Prometheus dan OpenTelemetry.
Tangkapan layar
Ringkasan
Apa yang dikerjakan sistem ini.
Hadira adalah backend presensi untuk lingkungan pendidikan yang ditulis dengan Go dan Gin. Lembaga, siswa, guru, orang tua, kelas, tingkat, ruang beserta klasifikasinya, mata pelajaran, jadwal, dan penugasan staf menjadi dasar pencatatan presensi. Data tiap lembaga terisolasi, dan dasbor serta akses data berbeda menurut peran superadmin, administrator, guru, siswa, dan orang tua.
Presensi mencakup sesi dengan daftar peserta, token QR yang bisa disegarkan, check-in bergeolokasi, entri manual, koreksi presensi, penghitungan keterlambatan, dan riwayat presensi. Kebijakan presensi, pekan sekolah, semester, dan kalender akademik menentukan konteks kegiatan yang sedang berjalan, dengan pemeriksaan kesiapan sebelum mengaktifkan tahun ajaran. Administrasi akademik mencakup pendaftaran dan penempatan siswa, permintaan pemutakhiran profil berdokumen, dan kenaikan kelas.
Pelaporannya berlapis: rekap per siswa, kelas, dan mata pelajaran, laporan generasi kedua dengan dimensi yang bisa dipilih, matriks presensi, dan ekspor spreadsheet. Impor data berjalan sebagai job dengan status dan unduhan baris yang gagal. Untuk operasional, layanan ini menyediakan metrik Prometheus, tracing OpenTelemetry dengan exporter Jaeger, logging terstruktur zerolog, dokumentasi Swagger, koleksi Postman, penyimpanan berkas S3, serta rangkaian uji unit dan integrasi yang luas. Aplikasi web admin dan aplikasi mobile Flutter mengonsumsi API ini.
Daftar fitur
Rincian kemampuan
31 kemampuan yang diverifikasi langsung terhadap kode sumber proyek.
Lembaga dan data induk
- Pengelolaan lembaga dengan isolasi data antarsekolah
- Akun dan hak akses untuk superadmin, administrator, guru, siswa, dan orang tua
- Data siswa, guru, dan orang tua beserta relasinya
- Direktori siswa dengan pencarian dan filter
- Kelas, tingkat, ruang, dan klasifikasi ruang
- Mata pelajaran, jadwal pelajaran, dan penugasan staf
Presensi
- Sesi presensi dengan daftar peserta dan pengelolaan sesi
- Penerbitan dan penyegaran token QR untuk sesi yang aktif
- Check-in QR dengan validasi token dan data lokasi
- Entri presensi manual oleh guru atau administrator
- Koreksi presensi dengan pencatatan perubahan
- Penghitungan keterlambatan berdasarkan kebijakan sekolah
- Riwayat presensi dan proyeksi presensi historis
Kalender akademik
- Pengaturan kebijakan presensi dan aturan pekan sekolah
- Tahun ajaran, semester, kalender akademik, dan konteks akademik aktif
- Pemeriksaan kesiapan sebelum tahun ajaran diaktifkan
- Pendaftaran, penempatan, dan kenaikan kelas siswa
- Permintaan pemutakhiran profil dengan dokumen pendukung
Dasbor dan pelaporan
- Dasbor administrator, guru, siswa, dan orang tua
- Dasbor insight, operasional, dan indikator risiko kehadiran
- Laporan presensi per siswa, kelas, dan mata pelajaran
- Laporan lanjutan dengan dimensi yang bisa dipilih dan matriks presensi
- Ekspor laporan, siswa, orang tua, guru, dan riwayat presensi
Data dan operasional
- Impor data sebagai job dengan status dan unduhan baris yang gagal
- Penghapusan data massal dengan pemeriksaan integritas
- Notifikasi dengan preferensi pengguna
- Unggahan berkas ke object storage S3
Platform dan observabilitas
- Autentikasi JWT, pembatasan laju permintaan, dan log aktivitas
- Metrik Prometheus, tracing OpenTelemetry/Jaeger, dan logging terstruktur
- Dokumentasi Swagger dan koleksi Postman untuk konsumen API
- Uji unit dan integrasi, termasuk property-based testing
Teknologi
Dibangun dengan 14 teknologi.
- Go 1.24
- Gin
- GORM
- PostgreSQL
- Redis
- JWT
- Excelize
- Amazon S3
- Prometheus
- OpenTelemetry
- Jaeger
- Zerolog
- Swagger
- Testify
Pertanyaan umum
Yang biasanya ditanyakan.
Bagaimana presensi QR menahan titip absen?
Token sesi disegarkan, sehingga tangkapan layar yang diambil sebelumnya tidak lagi valid, dan check-in juga memvalidasi data lokasi. Keduanya membuat titip absen jauh lebih sulit daripada memanggil daftar hadir.
Apakah presensi bisa dikoreksi setelahnya?
Bisa, dan koreksinya dicatat, bukan menimpa data lama. Keterlambatan dihitung dari kebijakan sekolah, jadi koreksi menghitung ulang secara konsisten tanpa penyesuaian manual.
Apa yang tersedia untuk kebutuhan operasional?
Metrik Prometheus, tracing OpenTelemetry dengan exporter Jaeger, logging terstruktur, dokumentasi Swagger, dan koleksi Postman — dengan uji unit, integrasi, dan property-based di belakangnya.
Satu bidang
Proyek serupa.
SIMPKBM — SaaS Multi-Tenant untuk PKBM
Platform multi-tenant untuk program Paket A, B, dan C di PKBM: akademik, presensi QR, jurnal mengajar terverifikasi, pembelajaran daring, ujian, rapor, ijazah, langganan, dan bantuan AI.
Laravel 12 · PHP 8.3 · Inertia.js 2 · React 19 · +18
RestMaos — API Manajemen Perpustakaan Sekolah
API perpustakaan sekolah berbasis Lumen: katalog dan klasifikasi DDC, eksemplar, anggota, sirkulasi, denda, kunjungan, siaran, dan pelaporan.
Lumen 8 · PHP 8 · MySQL · JWT Auth · +3