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
- 01Expo Router app foundation with shared UI components and typed feature services.
- 02Keycloak login using the Authorization Code Flow with PKCE.
- 03Token persistence in device secure storage, with expiry margin, restoration, refresh, and logout.
- 04Authentication-based route protection and a tested student profile flow.
- 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