01
the problem
University attendance needs a student workflow that can preserve identity sessions securely while coordinating several verification steps.
case study 02 / Mobile & identity
An ongoing university attendance platform with a React Native student application and web and backend services maintained by a four-person team.
01
University attendance needs a student workflow that can preserve identity sessions securely while coordinating several verification steps.
02
Established the Expo mobile foundation and delivered the merged Keycloak login, PKCE session lifecycle, secure token storage, logout, authenticated routing, profile workflow, mobile tests, and CI foundation.
03
Use OpenID Connect Authorization Code Flow with PKCE and device secure storage, restoring or refreshing sessions before allowing access to student routes.
visual evidence pending
No repository screenshot is published for this project. A real application capture should replace this clearly marked placeholder.
stage 01
Expo app
stage 02
Keycloak discovery
stage 03
Authorization code + PKCE
stage 04
SecureStore
stage 05
Session restoration
stage 06
Protected student routes
Merged mobile foundation with shared UI, typed feature services, and Expo Router navigation.
Merged Keycloak realm bootstrap plus OpenID Connect login using Authorization Code Flow with PKCE.
Merged secure token persistence, expiry margin, session restoration, token refresh, local/Keycloak logout, and failure states.
Merged authentication-based student route protection and a tested student profile workflow.
Established Jest, React Native Testing Library, and GitHub Actions checks for types, lint, and mobile tests.
Active feature-branch work adds Keycloak token validation, user mapping, profile endpoints, and geofence validation; it is not presented as merged functionality.
This is an ongoing team project, not a finished production attendance system.
The student-role-specific guard is present on an unmerged branch; main currently checks authentication rather than the Keycloak student role.
Face verification, geofence UI, QR, notification, lecturer, and administrator features are team-owned and are not attributed here.
Coordinating browser-based identity redirects with native app routing, token expiry, restoration, refresh, cancellation, and local logout states.
Authentication is a state machine, not a login screen; recovery paths and route boundaries deserve first-class design and tests.