NIHub Attendance System
Multi-client event management and QR check-in platform with real-time dashboards, automated reporting, and a self-service attendee portal.
Problem
Event organizers at Nigerian hub events relied on manual sign-in sheets to track attendance. This made real-time reporting impossible, exported data was error-prone and slow to compile, and there was no way to verify attendee check-in status without physically scanning lists. The system also needed to support multiple concurrent events with different organizers and departments.
Solution
A full-stack event management platform built with FastAPI and PostgreSQL on the backend, React for the staff dashboard, and Flutter for the mobile check-in app. Each event gets a unique QR code that attendees scan to check in and out; staff see live attendance counts on a real-time dashboard.
The system supports multiple clients (departments/organizations), attendee self-service registration via department codes, email verification for attendees, and one-click spreadsheet export for event organizers.
Architecture
React Staff Dashboard → FastAPI REST API → PostgreSQL → Flutter Mobile App (QR check-in)
Technical Decisions
QR-based check-in
Each event generates a unique QR code containing a signed token. Mobile apps decode and verify the token locally, then send check-in requests to the API — no internet required at the venue for the scan itself.
JWT with refresh token rotation
Staff authentication uses Argon2id password hashing with short-lived access tokens and rotating refresh tokens. If a refresh token is compromised, it's immediately invalidated — reducing the window of exposure.
PostgreSQL + Alembic migrations
Schema changes across deployments are managed with Alembic, making it safe to iterate the data model without manual migration scripts or downtime.
Caddy reverse proxy
Caddy handles HTTPS termination and routes traffic to the appropriate service (API, frontend, mobile API) — single public entry point with automatic TLS certificates.