Expo + TypeScript mobile client for ChatbotX — the open-source omnichannel chatbot platform.
- Auth & workspaces: sign in, switch workspaces, workspace picker
- Live Chat: Conversations tab with attachments, replies, edit/delete, and read state
- Contact CRM: Contacts tab with tags, custom fields, and PII masking for restricted roles
- Realtime: PartyKit-backed live updates for messages and conversation state
- Push notifications: Expo push + Android FCM, with deep-linking into a conversation/contact
- i18n: 20 locales, including RTL support for
ar/he - Typed API client: REST client generated from the backend's OpenAPI spec
- Expo (SDK 57) + expo-router
- TypeScript, strict mode
- TanStack Query for server state
- Zustand for client state
- openapi-fetch + openapi-typescript for the typed REST client
- i18next / react-i18next for translations
- expo-secure-store for token storage
There is no web target — this app ships iOS/Android only.
pnpm install
cp .env.example .env
# edit API_BASE_URL if the backend isn't on the default local port (http://localhost:3123)
pnpm startThen follow the Expo CLI prompts to open the app in a development build, Android emulator, iOS
simulator, or Expo Go. .env's BRAND=chatbotx and APP_ENV=development defaults are enough to
run the app with zero EAS setup — see Deploying once you need a real build.
pnpm ios # expo run:ios
pnpm android # expo run:android
pnpm lint # expo lint (eslint-config-expo)
pnpm typecheck # tsc --noEmit
pnpm test # jest
pnpm format # prettier --write .
pnpm format:check # prettier --check .
pnpm generate:api # regenerate the typed API client from a running backend instance
pnpm brand:new <id> # scaffold a new brand from brands/_templateTEST builds are EAS internal distribution; production builds go through EAS Build/Submit to the App Store and Play Store. See docs/deploy.md for the full flow.
This app can be built for a different brand (app name, icons, colors, bundle id, EAS project) from the same codebase — see docs/white-label.md.