Versine

Mobile & push notifications

Approve on your phone, with a reliable web fallback.

Mobile shares the My account and includes Platforms, Approvals, Blacklist, Account and a clearly marked Wallet placeholder. Wallet does not store money or payment details.

Use approvals

Sign in with a verified email code. In Account, enable approval notifications. Your device asks for permission; saying no still leaves Approvals usable. A notification opens versine://approvals/<requestId>. The app loads current server state after authentication and never treats a payload as an approval.

Cold-start links, warm notification taps and foreground refresh are covered by native tests. Physical-device delivery is a separate release check.

What push credentials mean

Expo routes messages to Apple's APNs on iOS and Google's FCM on Android. An Expo project ID identifies the app; it is not permission to send through those services. APNs keys and FCM service-account credentials are configured securely in EAS, never in source code, public app configuration or chat.

See Expo push setup and Android FCM credentials.

Development requirements

The project is linked to the versine Expo organization, with native identity com.versine.mobile, EAS build profiles and Android Firebase client configuration. The Android FCM sender credential is stored in EAS and Infisical. iOS APNs still needs an Apple Developer team. Neither platform has completed a signed-device push test; see the repository's apps/mobile/SETUP.md.

A phone must reach the configured HTTPS API origin. Desktop .localhost resolves to the phone itself, and an Expo/Metro tunnel does not expose the backend. Do not use the protocol-only Auth0 test tunnel as a Mobile API.

For an approved local device session, pnpm dev:mobile:tunnel opens a separate Mobile-only Cloudflare HTTPS gateway and updates EAS development/preview public configuration. Keep the Mac/backend running. Its temporary URL changes on restart; already bundled previews need rebuilding. It never updates production origins or removes Clerk authentication. See apps/mobile/SETUP.md for the workflow.

Test permission denial, signed-out taps, stale/expired requests, accept/reject, foreground refresh and sign-out/device deregistration. Our current app requires a physical device when registering push.