How dianberlianhutasoit/lab-session-manager works
This Expo app supports practicum assistants managing classes and session schedules, and students viewing sessions, recording attendance, and submitting absence requests. Assistant routes provide class/session CRUD and attendance summaries; student routes provide session details, attendance, permission submission, and permission history. A shared session context coordinates app state and optional Firestore persistence, while an AI classifier supports permission categorization. The README describes only the Expo starter setup, so product capabilities are inferred from the source index and sampled code; unsampled route behavior is represented cautiously.
Main entry points: session-context.tsx Session state · index.tsx Assistant dashboard · izin.tsx Permission requests · firestore-service.ts Firestore operations
Components 23
App routes
- Assistant dashboard
src/app/index.tsx - Attendance summary
src/app/explore.tsx - Session listing
src/app/praktikan/index.tsx - Session detail
src/app/praktikan/[id].tsx - Permission requests
src/app/praktikan/izin.tsx - Permission history
src/app/praktikan/riwayat.tsx
Assistant operations
- Class management
src/components/asisten/class-card.tsx - Class editor
src/components/asisten/class-form-modal.tsx - Session management
src/components/asisten/session-card.tsx - Session editor
src/components/asisten/session-form-modal.tsx - Session details
src/components/asisten/session-detail-modal.tsx - Attendance views
src/components/asisten/attendance-summary-cards.tsx
Student services
- Student session card
src/components/praktikan/SessionCard.tsx - Attendance capture
src/components/praktikan/PresensiModal.tsx - Permission form
src/components/izin/form-pengajuan-izin.tsx - Permission list
src/components/izin/daftar-riwayat-izin.tsx
Shared services
- Session state
src/context/session-context.tsx - Firestore operations
src/services/firestore-service.ts - Firestore
- Firebase setup
src/config/firebase.ts - AI classifier
src/services/ai-classifier.ts - Seed data
src/data/dummy.ts
Other components
- App user
Connections 24
- App user → Assistant dashboard: opens
- App user → Session listing: opens
- Assistant dashboard → Class management: renders
src/app/index.tsx - Assistant dashboard → Session management: renders
src/app/index.tsx - Assistant dashboard → Class editor: opens
src/app/index.tsx - Assistant dashboard → Session editor: opens
src/app/index.tsx - Assistant dashboard → Session details: opens
src/app/index.tsx - Attendance summary → Attendance views: renders
src/app/explore.tsx - Session listing → Student session card: renders
src/app/praktikan/index.tsx - Session detail → Attendance capture: opens
src/app/praktikan/[id].tsx - Permission requests → Permission form: renders
src/app/praktikan/izin.tsx - Permission requests → Permission list: renders
src/app/praktikan/izin.tsx - Assistant dashboard → Session state: reads and updates
src/app/index.tsx - Attendance summary → Session state: reads
src/app/explore.tsx - Session listing → Session state: reads
src/app/praktikan/index.tsx - Session detail → Session state: reads and updates
src/app/praktikan/[id].tsx - Permission requests → Session state: submits request
src/app/praktikan/izin.tsx - Permission history → Session state: reads
- Session state → Firestore operations: delegates writes
src/context/session-context.tsx - Session state → Firestore operations: subscribes
src/context/session-context.tsx - Firestore operations → Firebase setup: uses database config
src/services/firestore-service.ts - Firestore operations → Firestore: reads and writes
src/services/firestore-service.ts - Session state → Seed data: loads fallback data
src/context/session-context.tsx - Permission requests → AI classifier: classifies reason
src/app/praktikan/izin.tsx