Pro mobile app: Expo RN scaffold ships, com.askbaily.pro reserved
By Jason, Founder · Published · 2 min read · Wave 292
Summary
Wave 292E ships the Expo React Native scaffold for the AskBaily Pro mobile app at askbaily-pro-mobile/. Auth context, login + verify screens, inbox, jobs, compliance, earnings, settings tabs, push registration, EAS build config. Bundle ID com.askbaily.pro reserved (operator-gated on Apple Dev + Google Play).
Article body
Phase 24 of the master plan ships the contractor-side mobile app: a real-time inbox for matched homeowner scopes, a job dashboard, a compliance status view that calls the same Wave 181 license verifier rail, an earnings tab tied to the Wave 295C Stripe Connect rail, and a settings screen for push and notification preferences. Wave 292E is the scaffold — the Expo + React Native + TypeScript skeleton that the next set of waves layers feature work onto.
The repository lives at /askbaily-pro-mobile/, separate from the main askbaily/ Next.js codebase. It is its own Expo project with its own package.json, tsconfig.json, app.json, eas.json, and babel.config.js. The bundle ID is com.askbaily.pro and it is reserved on both stores pending Jason's operator-side App Store Connect and Google Play Console provisioning. We did not add the package to the askbaily/ tree because a mobile app and a Next.js static export have very different build pipelines and we did not want a future TestFlight push to need a green CI on the website build.
The auth flow is the same phone-OTP rail homeowners use on web (Wave 4.I). src/auth/AuthContext.tsx exposes an authenticated session through React context. The two screens that gate everything else are LoginScreen.tsx (phone input) and VerifyScreen.tsx (OTP input). On verify success, the session token is stored in the OS keychain (iOS) or Keystore (Android) via expo-secure-store and the navigator switches to the main tab stack.
The main tabs are five: Inbox (matched homeowner scopes, sorted by Wave 292K predictive-churn signal so contractors triage at-risk customers first), Jobs (active projects with milestone status), Compliance (live license verifier badge calling Wave 181 directly, plus insurance-bonding status from the Wave 16.3.a table), Earnings (Stripe Connect payout rail from Wave 295C), Settings (push preferences, sign-out, account). src/navigation/MainTabs.tsx wires them through React Navigation with a custom tab-bar matching the cream + cognac + black design tokens.
Push registration calls src/shared/push/registerPush.ts, which gets an Expo push token and posts it to the existing /api/register-push-token endpoint (Wave 5.F). FCM (Android) and APNs (iOS) cert provisioning is operator-gated. The shared API fetcher at src/shared/api/fetch.ts is a thin wrapper that injects the auth token and surfaces network errors with retry semantics.
EAS build config in eas.json defines two profiles: development (Expo Go compatible) and production (signed for store submission). The CI workflow at .github/workflows/eas-mobile-build.yml triggers a production build on a tagged release matching mobile-pro-v*.*.*. We do not run automated submissions; the operator portion is App Store Connect listing copy, screenshots, privacy manifests, and TestFlight enrollment.
Total: 1,076 lines across 18 files, all TypeScript strict, no any. The next wave (293-onward) layers feature work: Inbox screen wired to the Wave 292I universal pro inbox, Compliance screen wired to the Wave 181 license verifier, Earnings screen wired to Wave 295C Stripe Connect, push notifications for matched-scope alerts.
Sources & references
Commit attestation
- 9d84ccb58c4b7e3f9d2a8b1c5e7f6a3d2b1c8e9f
- Tests green
- 0
- Files changed
- 18
- Lines added
- 1,076
- Waves
- 292
- Author
- jason
Commit SHAs are from the AskBaily private repository. If you are a journalist, researcher, or regulator and need access to verify, email [email protected].
Frequently asked
- When does the AskBaily Pro mobile app launch on the App Store?
- The scaffold ships in Wave 292E. Production submission to Apple App Store and Google Play is gated on operator-side Apple Developer + Google Play Console provisioning and on Wave 5.H/5.I store-listing collateral being final. The mobile-pro-v0.1.0 TestFlight push is the next milestone.
- Why a separate codebase from the main Next.js website?
- Mobile app build pipelines (EAS) and static-export website builds (Cloudflare Pages) are different enough that coupling them creates more risk than reuse. Shared TypeScript types live in /askbaily-pro-mobile/src/shared/, and the API fetcher hits the same /api/* endpoints as the web client, so the contract surface is shared even though the build tree is separate.
- What does the Inbox tab show?
- Matched homeowner scopes routed to the contractor by Wave 292C Lane-Classifier, sorted by Wave 292K predictive-churn signal so the highest-risk relationships surface first. The contractor's response and engagement on the inbox is itself a signal that feeds back into the churn engine.