How ictudevs/ua-dtr works
UA DTR is a mobile attendee app for Google sign-in, device enrollment, biometric attendance check-in, and attendance-log review. The main scan flow gates on location, runs a liveness check, then submits the captured image and transaction ID for attendance recording; users can also manage their account and request device unbinding. The README is only the generic Expo starter, so product capabilities are inferred from the app routes and source index. Some implementation details are unsampled; uncertain integrations are omitted or marked unverified.
Main entry points: attendee-api.ts Attendee API · index.tsx Scan Screen · login.tsx Google Sign-in · auth-gate.tsx Auth Gate
Components 18
Identity & Enrollment
- Google Sign-in
src/app/login.tsx - Auth Gate
src/components/auth-gate.tsx - Device Binding
src/app/bind.tsx - Session Cache
src/lib/session.ts - Attendee API
src/lib/attendee-api.ts - Push Registration
src/lib/push.ts
Attendance Check-in
- Scan Screen
src/app/(app)/index.tsx - Location Gate
src/lib/location.ts - Liveness Check
src/lib/liveness.ts - Attendance Submission
src/lib/attendance.ts
Account & Logs
- Attendance Logs
src/app/(app)/logs.tsx - Account Drawer
src/components/account-drawer.tsx
App UI
- University Header
src/components/ua-header.tsx - Status Toast
src/components/float-toast.tsx - Theme Tokens
src/constants/theme.ts - Friendly Errors
src/lib/friendly-error.ts
Other components
- Attendee
- Attendance Service
Connections 25
- Attendee → Google Sign-in: starts sign-in
src/app/login.tsx - Google Sign-in → Attendee API: submits token
src/app/login.tsx - Google Sign-in → Auth Gate: refreshes auth
src/app/login.tsx - Attendee API → Attendance Service: calls API
src/lib/attendee-api.ts - Attendee API → Session Cache: stores session
src/lib/attendee-api.ts - Auth Gate → Attendee API: fetches attendee
src/components/auth-gate.tsx - Auth Gate → Session Cache: reads session
src/components/auth-gate.tsx - Auth Gate → Push Registration: registers token
src/components/auth-gate.tsx - Attendee → Device Binding: binds device
src/app/bind.tsx - Device Binding → Attendee API: requests binding
src/app/bind.tsx - Attendee → Scan Screen: starts check-in
src/app/(app)/index.tsx - Scan Screen → Location Gate: checks location
src/app/(app)/index.tsx - Scan Screen → Liveness Check: runs verification
src/app/(app)/index.tsx - Scan Screen → Attendance Submission: submits scan
src/app/(app)/index.tsx - Attendance Submission → Attendance Service: records attendance
- Attendee → Attendance Logs: reviews history
src/app/(app)/logs.tsx - Attendance Logs → Attendee API: fetches logs
src/app/(app)/logs.tsx - Attendee → Account Drawer: opens account
- Account Drawer → Attendee API: requests unbind
src/components/account-drawer.tsx - Google Sign-in → Status Toast: shows status
src/app/login.tsx - Scan Screen → Status Toast: shows status
src/app/(app)/index.tsx - Account Drawer → Friendly Errors: formats errors
src/components/account-drawer.tsx - Scan Screen → Friendly Errors: formats errors
src/app/(app)/index.tsx - University Header → Theme Tokens: uses tokens
src/components/ua-header.tsx - Status Toast → Theme Tokens: uses tokens
src/components/float-toast.tsx