Skip to main content

Mobile App

Updated: 2026-09-21

Members use Bellamy Book on phone the same way as on the website: your self-hosted stack is enough. There is no separate mobile server to deploy.

How members use it​

  1. Install Bellamy Book from the App Store or Google Play.
  2. Open the app and enter your API URL — the public API address of your instance (e.g. https://api.example.com or https://social.example.com if API and site share one host).
  3. Sign in (or register, if you allow public registration).
  4. Allow notifications when asked (for chat and call alerts in the background).
Enter the API URL — not the frontend-only URL

The Connect field is for API_PUBLIC_URL (where /api and hubs live). Do not tell members to type a frontend-only host if the API is on a different domain.

Enter thisDo not enter (when API is separate)
https://api.example.com (API_PUBLIC_URL)Frontend-only host with no API (e.g. SPA-only https://app.example.com)
Same host as the site if Traefik serves /api thereInternal Docker names (api:8080), localhost, or /api path alone

Give members the same public API base you set as API_PUBLIC_URL (scheme + host, no /api suffix required — the app adds it).

To switch communities later: Settings → Change server.


What you need as operator​

Your normal self-host kit already covers mobile (dockerProd / dockerPublish):

  • Public HTTPS API URL (API_PUBLIC_URL) — this is what members type in the app
  • Chat / notification hubs reachable on that API host (or set hub overrides below)
  • Expo push worker running (background notifications)
  • Storage / LiveKit / Google configured the same as for the website (if you use those features)

Smoke check: open https://your-api-host/api/mobile/bootstrap in a browser — you should see JSON (no login required).


Env (optional)​

Most installs need no extra mobile-only secrets. Storage and Google already live on the server; the app reads them after Connect.

Only set these in Compose .env when you need them:

# Force members to update when you ship a newer store build
# Mobile__MinAppVersion=1.0.0

# Only if chat/notification hubs are NOT on the same public host as the API
# Mobile__ChatHubUrl=https://your-api-host
# Mobile__NotificationHubUrl=https://your-api-host

Related (same as website — not mobile-specific):

FeatureEnv
Google Sign-InSame Web ExternalAuth__Google__ClientId as the website, plus Authorized redirect URI https://YOUR_FRONTEND_ORIGIN/auth/google/callback. No Android/iOS OAuth clients.
Voice / video callsLiveKit__Url, LiveKit__ApiKey, LiveKit__ApiSecret (optional). Native v1: in-app + Expo push while the app is open or in background; no CallKit ring when the app is killed.
Media / avatarsStorage__Provider + R2__PublicUrl or Minio__PublicUrl

Tell your members​

  1. Download Bellamy Book on App Store / Play Store.
  2. Enter the API URL (API_PUBLIC_URL), e.g. https://api.your-community.example.com — not a frontend-only URL.
  3. Allow notifications for chat and calls.

Troubleshooting​

SymptomCheck
Cannot connectThey typed API_PUBLIC_URL (not frontend-only); HTTPS; https://your-api-host/api/mobile/bootstrap returns JSON
Works on PC, fails on phoneDo not use localhost — use the public API domain (or LAN IP only for local testing)
No pushMember allowed notifications; Expo push worker is running
Google button missingSet ExternalAuth__Google__ClientId; reconnect in the app
Google opens the website instead of the appThe instance frontend must include the native bounce (state=bb-native. → bellamybook://google-oauth). Rebuild/redeploy the site that FRONTEND_PUBLIC_URL points at. Do not add bellamybook:// to the Google Web client.
Forced updateMobile__MinAppVersion is higher than the installed app