Configuration
app.json
| Key | Value |
|---|---|
name / slug / version | EMAW / EMAW / 1.1.3 |
ios.bundleIdentifier | com.emaw-app.com; supportsTablet: true; ITSAppUsesNonExemptEncryption: false |
android.package | com.emaw_app.app; adaptive icon background #1B1C54; permissions RECORD_AUDIO, MODIFY_AUDIO_SETTINGS |
plugins | expo-localization, expo-audio, expo-sqlite, expo-secure-store, expo-status-bar, expo-splash-screen (Bulldog image), ./plugins/withGradleJvmArgs |
updates | url: https://u.expo.dev/<projectId>, fallbackToCacheTimeout: 0; runtimeVersion.policy: appVersion |
extra.eas.projectId | the EAS project |
userInterfaceStyle | light |
No scheme, associatedDomains or intentFilters: the app has no deep links.
app.config.js
Wraps app.json and injects, from the environment:
extra.googleSignIn.webClientId←EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID(the audience the backend verifies)extra.googleSignIn.iosClientId←EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID- the
@react-native-google-signin/google-signinplugin with the reversed iOS client id as URL scheme, only when the iOS id is set
utils/googleSignIn.js reads them via Constants.expoConfig.extra.googleSignIn. With no web id the Google button is hidden.
.env
Committed on purpose; the values are public OAuth client identifiers:
| Variable | Used |
|---|---|
EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID | yes |
EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID | yes |
EXPO_PUBLIC_GOOGLE_ANDROID_CLIENT_ID, EXPO_PUBLIC_GOOGLE_ANDROID_LOCAL_CLIENT_ID | defined but never read (Android matches by package + SHA-1) |
.env*.local is gitignored for personal overrides.
eas.json
| Profile | Settings |
|---|---|
development | developmentClient: true, internal distribution, channel development |
preview | internal distribution, channel preview, Android APK, iOS simulator build |
production | autoIncrement: true, channel production, Android app bundle, iOS device build |
submit.production.ios | appleId only; no ascAppId, no Android submit config |
cli.version >= 13.2.0, appVersionSource: remote (EAS tracks build numbers).
Backend URL
Not configurable at runtime: constants/backendIp.js (Local development).
Styling
constants/styles.js exports EMAWStyles, DarkThemeStyles, the colour palette and fonts (FrankRuhlLibre is loaded in App.js). Use these rather than inline styles.