Hadira — School Attendance Backend (Go)
A Go school-attendance backend: attendance sessions, QR codes and location checks, attendance corrections, academic years, matrix reports, exports, and Prometheus and OpenTelemetry observability.
Screenshots
Overview
What this system does.
Hadira is an attendance backend for educational settings written in Go with Gin. Institutions, students, teachers, parents, classes, grade levels, rooms and their classifications, subjects, schedules, and staff assignments form the basis of attendance records. Each institution’s data is isolated, and dashboards and data access vary by superadmin, administrator, teacher, student, and parent roles.
Attendance covers sessions with participant rosters, refreshable QR tokens, geolocated check-in, manual entries, attendance corrections, lateness calculation, and attendance histories. Attendance policies, school weeks, semesters, and academic calendars determine the context of current activities, with readiness checks before activating an academic year. Academic administration includes student enrolment and placement, documented profile-update requests, and grade progression.
Reporting has several layers: summaries by student, class, and subject, second-generation reports with selectable dimensions, attendance matrices, and spreadsheet exports. Data imports run as jobs with statuses and downloadable failed rows. For operations, the service provides Prometheus metrics, OpenTelemetry tracing with a Jaeger exporter, zerolog structured logging, Swagger documentation, Postman collections, S3 file storage, and an extensive suite of unit and integration tests. The admin web application and Flutter mobile application consume this API.
Feature inventory
Highlights
31 capabilities verified against the project source.
Institutions and core records
- Institution management with data isolation between schools
- Accounts and access rights for superadmins, administrators, teachers, students, and parents
- Student, teacher, and parent data and their relationships
- Student directory with search and filters
- Classes, grade levels, rooms, and room classifications
- Subjects, lesson schedules, and staff assignments
Attendance
- Attendance sessions with participant rosters and session management
- QR-token issuance and refresh for active sessions
- QR check-in with token and location-data validation
- Manual attendance entry by teachers or administrators
- Attendance corrections with change records
- Lateness calculation based on school policies
- Attendance histories and historical attendance projections
Academic calendar
- Attendance-policy and school-week rule settings
- Academic years, semesters, academic calendars, and active academic contexts
- Readiness checks before academic-year activation
- Student enrolment, placement, and grade progression
- Profile-update requests with supporting documents
Dashboards and reporting
- Administrator, teacher, student, and parent dashboards
- Insights, operations, and attendance-risk indicator dashboards
- Attendance reports by student, class, and subject
- Advanced reports with selectable dimensions and attendance matrices
- Exports of reports, students, parents, teachers, and attendance histories
Data and operations
- Data imports as jobs with statuses and downloadable failed rows
- Bulk data deletion with integrity checks
- Notifications with user preferences
- File uploads to S3 object storage
Platform and observability
- JWT authentication, request rate limiting, and activity logs
- Prometheus metrics, OpenTelemetry/Jaeger tracing, and structured logging
- Swagger documentation and Postman collections for API consumers
- Unit and integration tests, including property-based testing
Tech stack
Built with 14 technologies.
- Go 1.24
- Gin
- GORM
- PostgreSQL
- Redis
- JWT
- Excelize
- Amazon S3
- Prometheus
- OpenTelemetry
- Jaeger
- Zerolog
- Swagger
- Testify
Common questions
What people usually ask.
How does QR attendance resist proxy check-ins?
Session tokens are refreshed, so a screenshot taken earlier no longer validates, and check-in also validates location data. Together those make a proxy check-in considerably harder than a spoken register.
Can attendance be corrected after the fact?
Yes, and corrections are recorded rather than overwritten. Lateness is calculated from the school policy, so a correction recalculates consistently instead of needing a manual adjustment.
What does it expose for operations?
Prometheus metrics, OpenTelemetry tracing with a Jaeger exporter, structured logging, Swagger documentation, and Postman collections — with unit, integration, and property-based tests behind them.
Same field
Related projects.
SIMPKBM — Multi-Tenant SaaS for PKBM
A multi-tenant platform for PKBM Paket A, B, and C programmes: academics, QR attendance, verified teaching journals, online learning, exams, report cards, certificates, subscriptions, and AI assistance.
Laravel 12 · PHP 8.3 · Inertia.js 2 · React 19 · +18
RestMaos — School Library Management API
A Lumen school-library API: catalogue and DDC classification, copies, members, circulation, fines, visits, broadcasts, and reporting.
Lumen 8 · PHP 8 · MySQL · JWT Auth · +3