← Back to work

02 / 06Mobile & identity

UniAttend

UniAttend is an ongoing university attendance platform built by a team of four. I set up the Expo mobile app and built the identity layer: OpenID Connect login with PKCE, secure token storage, session restoration and refresh, logout, and route protection for student screens.

Illustration
Team
Team of 4
Status
In progress

What I built

  1. 01Expo Router app foundation with shared UI components and typed feature services.
  2. 02Keycloak login using the Authorization Code Flow with PKCE.
  3. 03Token persistence in device secure storage, with expiry margin, restoration, refresh, and logout.
  4. 04Authentication-based route protection and a tested student profile flow.
  5. 05Jest, React Native Testing Library, and GitHub Actions checks for types, lint, and tests.

Scope and limits

  • This is an ongoing team project, not a finished production system.
  • Role-specific guards live on an unmerged branch; main checks authentication only.
  • Face verification, geofencing, QR, and lecturer and admin features belong to teammates.

Built with

  • React Native
  • Expo
  • TypeScript
  • Keycloak
  • OpenID Connect
  • PostgreSQL
  • GitHub Actions