This app is the client-side implementation of eduMFA's edupush token type. It enrolls push tokens and lets users approve or deny sign-in requests from their eduMFA server.
-
Install dependencies
bun install
-
Generate the native projects
bunx expo prebuild
The app requires native dependencies, including React Native Firebase. Expo Prebuild generates the Android and iOS projects and applies their native configuration.
-
Build and run a development app
With Android Studio or Xcode installed, run the command for your platform:
bun run android # or, on macOS bun run ios -
Start the development server for subsequent sessions
bunx expo start --dev-client
Open the installed development app on your device, Android emulator, or iOS simulator. Regenerate and rebuild the native app when native dependencies or app configuration change.
You can start developing by editing the files inside the src/app directory. This project uses file-based routing.
bun run test --runInBand
bun run test:watch
bun run test:coverage
bun run typecheckJest uses the Expo preset with mocked native APIs and network responses. The suite covers all services, stores, utilities, rollout state helpers, errors, and token detail helpers. Coverage includes untested files within those directories and enforces at least 95% statements, lines, and functions, plus 90% branches. Screens, UI components, hooks, and native RSA implementations are outside this unit coverage scope.
The HTML report is available at coverage/lcov-report/index.html. Pull requests run the suite with coverage checks.
Releases are tag-driven through EAS Workflows. The main branch is the development branch and does not publish store builds by itself.
Beta releases use pre-release tags:
git tag beta/0.1.0-beta.1
git push origin beta/0.1.0-beta.1
git tag beta/0.1.0-beta.2
git push origin beta/0.1.0-beta.2Production releases use final version tags:
git tag v0.1.0
git push origin v0.1.0The beta workflow builds Android and iOS store binaries. Android is submitted to the Google Play open testing track. iOS is distributed to the TestFlight external group External Testers.
The production workflow builds Android and iOS store binaries, then waits for approval in EAS before submitting to Google Play production and App Store Connect.
Both workflows build the downloadable APK after the Android store build has reserved the next remote build number. EAS then publishes the APK to the matching GitHub release, so no GitHub Actions runner waits in the EAS build queue.
Required setup:
- Connect this GitHub repository to EAS Workflows.
- Configure EAS credentials for iOS and Android.
- Configure Android Google Play submission credentials in EAS.
- Configure iOS App Store Connect submission credentials in EAS.
- Add
GITHUB_RELEASE_TOKENas a secret EAS environment variable in theproductionenvironment. Use a fine-grained GitHub token for this repository with read/write access to Contents.