import type { ExpoConfig } from 'expo/config'; // Public runtime config only — real secrets stay server-side. The API/WS base // URLs point at the same gateway the web client uses; override per environment // with EXPO_PUBLIC_API_URL / EXPO_PUBLIC_WS_URL (e.g. a LAN IP for a device). const apiUrl = process.env['EXPO_PUBLIC_API_URL'] ?? 'http://localhost:8080/api'; const wsUrl = process.env['EXPO_PUBLIC_WS_URL'] ?? 'ws://localhost:8080/connection/websocket'; const config: ExpoConfig = { name: 'Zovi', slug: 'zovi', scheme: 'zovi', version: '0.1.0', orientation: 'portrait', userInterfaceStyle: 'automatic', newArchEnabled: true, ios: { supportsTablet: true, bundleIdentifier: 'com.altricade.messenger', }, android: { package: 'com.altricade.messenger', edgeToEdgeEnabled: true, }, plugins: [ 'expo-router', 'expo-secure-store', ['expo-audio', { microphonePermission: 'Zovi uses the microphone to record voice messages.' }], 'expo-video', ['expo-camera', { cameraPermission: 'Zovi uses the camera for video messages.' }], [ 'expo-image-picker', { photosPermission: 'Zovi accesses your photos to share images and videos.' }, ], 'expo-notifications', ], experiments: { typedRoutes: true, }, extra: { apiUrl, wsUrl, }, }; export default config;