Mobile app¶
A native mobile app (iOS + Android) that gives students and staff a phone-first way into KATE General. It is a genuine native app — not a wrapped website — built with Expo/React Native, and it talks to the same backend API as the web app.
Status: in active development (Phase 2)
The mobile app exists and builds, with the student experience furthest along. It is not yet the primary channel — the web application is. Treat this as the mobile roadmap track.
What it is¶
- Built with Expo (SDK 54) + React Native 0.81 using Expo Router for navigation — a modern, cross-platform native stack from one codebase.
- Native screens, not a webview. The app has its own native UI and calls the platform API directly over HTTPS.
- Points at the backend via a build-time setting (
EXPO_PUBLIC_API_URL), normallyhttps://kategeneral.long-cao.dev. The same accounts, roles, and data as the web app — one system, two clients.
Role-based structure¶
The app is organized into role route-groups, mirroring the web app's roles:
| Group | For |
|---|---|
(auth) |
Login |
(student) |
Students — read-aloud practice, AI Tutor, notifications |
(teacher) |
Teachers |
(admin) |
Managers |
(parent) |
Parents (Phase 2 portal) |
The student area leads, with read-aloud pronunciation practice, the AI Tutor, and notifications already present as native screens.
Why native (vs. just the responsive web app)¶
- Better audio capture for Speaking/read-aloud — native microphone access is more reliable than a mobile browser.
- Push notifications (Phase 2) — the promised "new schedule / score / fee-due" alerts are natural on a native app.
- App-store presence — a phone icon students tap, not a URL they have to remember.
Building & shipping (for engineers)¶
-
API origin is required at build time and verified to be embedded in the bundle — the release script fails if the configured origin isn't baked in, so a build can't accidentally ship pointing at the wrong backend.
# Android release APK, pinned to production API: EXPO_PUBLIC_API_URL=https://kategeneral.long-cao.dev npm run android:assemble:release -
Quality gates: TypeScript type-checking, linting, and an end-to-end test suite (Maestro) that drives the real app.
- Backend health for the mobile app is the same as the web app — it depends on the API and Media services shown on the Service status page.
Roadmap¶
- Now: student read-aloud, tutor, notifications; auth; the role-group scaffold for teacher/admin/parent.
- Next (Phase 2): push notifications, the full student homework flow on mobile, and the parent portal.
- Later: feature parity with the web app where it makes sense for a phone (grading and heavy management stay web-first).