d3ro-voice/apps/mobile/app.config.ts
윤찬 211673bc6c feat(mobile): Phase M-1 모바일 프로젝트 기반 + V3 마스터 플랜
- V3 모바일 마스터 플랜 작성 (docs/v3/00-mobile-master-plan.md)
  11개 Phase, 5주 로드맵, 전략 결정사항 확정
- 7개 디자인 HTML 레퍼런스 저장 (docs/v3/designs/)
- app.json → app.config.ts 전환 + 환경변수 체계
- 5탭 네비게이션 (DASH/HIST/REC FAB/TALK/SET)
- metro.config.js monorepo 격리 (root RN 0.84 충돌 해결)
- ui-native 테마 디자인 목업 색상 동기화
- SafeArea 적용 (useSafeAreaInsets)
- DEV 로그인 우회 (__DEV__ 전용)
- Supabase .env 연동
- iOS 시뮬레이터 검증 완료
2026-04-13 03:22:15 +09:00

64 lines
1.5 KiB
TypeScript

// apps/mobile/app.config.ts
// Expo 설정 — 환경변수 관리, 플러그인, 권한
import { type ExpoConfig, type ConfigContext } from 'expo/config'
export default ({ config }: ConfigContext): ExpoConfig => ({
...config,
name: 'D3RO Voice',
slug: 'd3ro-voice',
scheme: 'd3ro-voice',
version: '1.0.0',
orientation: 'portrait',
icon: './assets/icon.png',
userInterfaceStyle: 'dark',
splash: {
image: './assets/splash.png',
resizeMode: 'contain',
backgroundColor: '#19191b'
},
ios: {
supportsTablet: true,
bundleIdentifier: 'com.d3ro.voice',
infoPlist: {
NSMicrophoneUsageDescription:
'D3RO Voice uses the microphone for voice recognition and recording.',
UIBackgroundModes: ['audio', 'fetch', 'remote-notification']
}
},
android: {
package: 'com.d3ro.voice',
permissions: [
'RECORD_AUDIO',
'FOREGROUND_SERVICE',
'FOREGROUND_SERVICE_MICROPHONE',
'POST_NOTIFICATIONS'
],
adaptiveIcon: {
foregroundImage: './assets/adaptive-icon.png',
backgroundColor: '#19191b'
}
},
plugins: [
'expo-router',
'expo-secure-store',
'expo-av',
[
'expo-notifications',
{
icon: './assets/icon.png',
color: '#ff5c35'
}
]
],
experiments: {
typedRoutes: true
},
extra: {
supabaseUrl: process.env.EXPO_PUBLIC_SUPABASE_URL ?? '',
supabaseAnonKey: process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ?? '',
eas: {
projectId: process.env.EAS_PROJECT_ID ?? ''
}
}
})