Mobile App
React Native app for all roles — Android and iOS from a single codebase.
Built with React Native (Expo). Uses the same backend API and Socket.IO server as the web portal — no separate API layer required.
Platform Capabilities
- Single codebase for Android and iOS (React Native + Expo)
- FCM (Firebase Cloud Messaging) push notifications for all roles
- Biometric login — Face ID and fingerprint via Expo SecureStore
- Offline caching for home, courses, attendance, and notices
- Child switcher for parents managing multiple enrolled children
- School switcher for super admins managing multiple schools
- In-app browser for DodoPayments checkout flow
- Real-time Socket.IO events (live bus tracking, notifications)
Screen Sets Per Role
| Role | Key Screens |
|---|---|
| Student | Dashboard, Courses, Assignments, Quizzes, Grades, Timetable, Fees, Notices, Profile |
| Parent | Child overview, Attendance, Fees + Pay, Timetable, Bus tracking, Notices, Chat with teacher |
| Teacher | Dashboard, Sessions, Attendance, Assignments (create + grade), Quizzes, Notices |
| Admin | School overview, Users, Notices, Fee overview, Reports |
| Accountant | Fee accounts, Payments, Defaulters, Reports |
| Facilities Admin | Assets, Maintenance, Transport (bus + routes) |
| Librarian | Catalogue, Issue/Return, Overdue list |
| Driver | Today's trips, Start trip, Pickup/dropoff, SOS button |
| Super Admin | Schools overview, School switcher, Analytics |
| Platform Admin | Platform stats, Super admins, School management |
Push Notifications (FCM)
On mobile, web push is replaced by FCM. The fcmToken is stored on the User model and updated on each app launch. The existing notificationService.js dispatches both web push and FCM in parallel — no separate notification service needed.