ID — Bahasa Indonesia

Muhamad Irga

Purwokerto, Central Java

Updated

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.

See the service: School & Learning Centre Applications

Screenshots

Hadira attendance API documentation listing the available endpoints
Main application view · Open image for full resolution

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

Need something like this?

Send a short brief and I’ll come back with scope, approach, and an honest timeline.