Skip to content

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), normally https://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).