- Name:
- Description:
- Framework: React Native 0.74+
- Platforms: iOS, Android
- Language: TypeScript
- Navigation: React Navigation 6
- State management: Zustand
| Action | Command |
|---|---|
| Install deps | npm install |
| Start Metro | npm start |
| Run iOS | npm run ios |
| Run Android | npm run android |
| Run tests | npm test |
| Lint | npm run lint |
| Type check | npx tsc --noEmit |
| Install iOS pods | cd ios && pod install && cd .. |
| Clean build (iOS) | cd ios && xcodebuild clean && cd .. |
| Clean build (Android) | cd android && ./gradlew clean && cd .. |
| Build release (iOS) | npx react-native run-ios --mode Release |
| Build release (Android) | cd android && ./gradlew assembleRelease |
src/
├── app/ # App entry, providers, navigation
│ ├── App.tsx
│ └── navigation/ # Navigation stacks and tabs
├── screens/ # Screen components (one per route)
│ ├── HomeScreen.tsx
│ ├── ProfileScreen.tsx
│ └── SettingsScreen.tsx
├── components/ # Reusable UI components
│ ├── ui/ # Primitives (Button, Input, Card)
│ └── features/ # Feature-specific components
├── hooks/ # Custom React hooks
├── services/ # API calls and external integrations
├── store/ # State management (Zustand stores)
├── utils/ # Helper functions
├── types/ # Shared TypeScript types
├── constants/ # App constants, theme, colors
└── assets/ # Images, fonts, icons
ios/ # Native iOS project (Xcode)
android/ # Native Android project (Gradle)
__tests__/ # Test files
- Use functional components with hooks — no class components.
- Screen components live in
src/screens/, named*Screen.tsx. - Use
PascalCasefor components,camelCasefor functions/hooks,UPPER_CASEfor constants. - Keep platform-specific code in
*.ios.tsx/*.android.tsxfiles when needed. - Use
StyleSheet.create()for styles — avoid inline style objects. - Navigation params are typed via
RootStackParamListinsrc/types/navigation.ts. - API layer in
src/services/— never call APIs directly from components. - Test files colocated as
__tests__/ComponentName.test.tsx.
- Minimum deployment target: iOS 15.0
- Xcode workspace:
ios/YourApp.xcworkspace - Run
pod installafter adding native dependencies.
- Minimum SDK: 24 (Android 7.0)
- Build variant: debug / release
- Signing config in
android/app/build.gradle.
| Variable | Required | Description |
|---|---|---|
API_URL |
Yes | Backend API base URL |
GOOGLE_MAPS_KEY |
No | Google Maps API key |
SENTRY_DSN |
No | Sentry error reporting DSN |
- Run
npx react-native doctorto diagnose environment issues. - After native dep changes, rebuild with
npm run ios/npm run android.