STEMP21's Teacher & Parent app is a single Flutter mobile application that serves as the only interface for two ERP roles — TEACHER and GUARDIAN. Every function these roles are authorized to perform anywhere in the school ERP is delivered through this app, since no separate web portal was built for either role. Admin, HR, and SuperAdmin functions remain entirely on a separate React-based web portal; this app has no admin-level capabilities by design.
**Teacher-facing functions**
Teachers get a dashboard summarizing their schedule and assigned classes, pulled from the ClassSubject relations in the schema. The My Classes screen lists every class and subject they teach, and tapping into a class opens a detail view with three tabs: Students (roster), Attendance (mark and edit daily attendance, enforced unique per student per date per class-subject), and Homework (assign new homework and review submissions). The Timetable screen renders their personal teaching schedule from TimetableConfig. Teachers can enter exam results for their assigned classes through the Examinations flow, and where applicable, manage Quran session data. They receive announcements targeted to their role or class, and can post announcements back to their own classes. A Profile screen lets them manage their own TeacherProfile details.
**Parent/Guardian-facing functions**
Parents use a single account that can be linked to multiple StudentProfiles, covering households with more than one child enrolled. The home screen shows a stats grid summarizing each child's progress at a glance. Attendance is shown as a calendar with per-day status, corrected for local time zone. Homework shows what's been assigned to each child along with submission status. The Timetable screen shows each child's class schedule. Exam results and progress reports are visible per child through the Examinations and ProgressReport data. Fee status — challans issued and payments made — is visible under the Fee section. Where a child is enrolled in Quran classes, enrollment and progress data is shown. Behavioural summaries, where logged by teachers, are visible to parents as well. Announcements relevant to a child's class or audience appear via a bell-icon bottom sheet.
**Architecture & security**
All access is enforced through the existing authMiddleware and authorize stack, with schoolId resolved server-side from the JWT rather than trusted from client input, consistent with the platform's multi-tenant security model. Each role only sees data scoped to their own assignments — a teacher sees only their classes, a parent sees only their linked children — with no cross-tenant or cross-role visibility.
**Implementation note**
Built in Flutter with role-based navigation (UserRole enum, unified login() dispatcher), service classes (teacher_service.dart, class_service.dart) and providers (TeacherProvider, ClassProvider) feeding the relevant screens. Teacher-side and parent-side flows live as separate sections within one codebase rather than as separate apps.
**Out of scope**
Admin, HR, Admission, Finance/Budget, and SuperAdmin operations are explicitly out of scope and live entirely in the separate Admin/SuperAdmin web portal (React, Vite, Tailwind). This app carries zero admin-level write access.
In short: one mobile app, two roles, full functional parity with everything a teacher or parent is entitled to across the ERP — eliminating the need for a dedicated teacher or parent web portal.