Installation & Build (Mobile)
The XetaSuite mobile app is built with React Native and Expo (SDK 55). It communicates with the XetaSuite backend via the Sanctum API and features an integrated voice assistant.
Prerequisites
Section titled “Prerequisites”- Node.js 20+
- npm 10+ or yarn
- Expo CLI (
npx expo) - EAS CLI for cloud builds (
npm install -g eas-cli) - An Expo account (free)
- For native Android builds locally: Android Studio with a configured Android SDK
- For native iOS builds locally: macOS + Xcode 15+
Installation
Section titled “Installation”-
Clone the repository
Terminal window git clone https://github.com/XetaSuite/Mobile.gitcd Mobile -
Install dependencies
Terminal window npm install -
Configure environment variables
Create a
.envfile at the root:EXPO_PUBLIC_API_URL=https://api.xetasuite.comFor local development, point to your backend:
EXPO_PUBLIC_API_URL=http://192.168.1.x:8000 -
Log in to Expo
Terminal window eas login
Running in development
Section titled “Running in development”Starts a development server compatible with the Expo Go app:
npx expo startScan the QR code with the Expo Go app on your phone.
Build a development client including all native modules:
# Build the dev client via EAS (cloud)eas build --profile development --platform android
# Then start the servernpx expo start --dev-clientWith Android Studio configured:
npx expo run:androidProduction build
Section titled “Production build”Production builds are generated via EAS Build (Expo Application Services).
Android (AAB — Google Play)
Section titled “Android (AAB — Google Play)”eas build --platform android --profile productionThe generated .aab file is ready for submission to the Google Play Store.
iOS (IPA — App Store)
Section titled “iOS (IPA — App Store)”eas build --platform ios --profile productionThe generated .ipa file is ready for submission to the Apple App Store.
Both platforms simultaneously
Section titled “Both platforms simultaneously”eas build --platform all --profile productionAvailable EAS profiles
Section titled “Available EAS profiles”| Profile | Distribution | Format | Usage |
|---|---|---|---|
development | Internal | APK | Testing with dev client |
preview | Internal | APK | Internal testing before release |
production | Store | AAB / IPA | Publishing to stores |
Submitting to stores
Section titled “Submitting to stores”Google Play Store
Section titled “Google Play Store”eas submit --platform android --latestApple App Store
Section titled “Apple App Store”eas submit --platform ios --latestapp.json configuration
Section titled “app.json configuration”Key application settings are in app.json:
{ "expo": { "name": "XetaSuite-Mobile", "slug": "xetasuite-mobile", "version": "1.0.0", "android": { "package": "com.xetasuite.app" }, "ios": { "bundleIdentifier": "com.xetasuite.app" } }}Required permissions
Section titled “Required permissions”Android (android.permission.*)
Section titled “Android (android.permission.*)”| Permission | Reason |
|---|---|
RECORD_AUDIO | Voice assistant — voice transcription |
MODIFY_AUDIO_SETTINGS | Microphone management during voice sessions |
FOREGROUND_SERVICE | Keep audio session alive in the foreground |
FOREGROUND_SERVICE_MEDIA_PLAYBACK | Foreground audio playback |
iOS (Info.plist)
Section titled “iOS (Info.plist)”| Key | Reason |
|---|---|
NSMicrophoneUsageDescription | Microphone access for the voice assistant |
NSSpeechRecognitionUsageDescription | System speech recognition (iOS) |