React Native (Expo) 기반 모바일 애플리케이션
- Framework: React Native with Expo SDK 54
- Language: TypeScript
- Navigation: React Navigation 7
- State Management: Zustand
- Data Fetching: TanStack Query (React Query)
- HTTP Client: Axios
- Icons: react-native-svg
# Node.js 버전 확인 (18.x 이상 권장)
node -v
# npm 버전 확인
npm -vNode.js가 설치되어 있지 않다면 nodejs.org에서 LTS 버전을 설치하세요.
# 저장소 클론
git clone <repository-url>
cd hanium-app
# 의존성 설치
npm install이거 권장 -> WIFI 같지 않아도 됨. (규영) npx expo start --clear --tunnel
npx expo start실행 후 터미널에 QR 코드가 표시됩니다.
-
Expo Go 앱 설치
- Android: Play Store
- iOS: App Store
-
QR 코드 스캔
- Android: Expo Go 앱 내에서 직접 스캔
- iOS: 기본 카메라 앱으로 스캔 후 링크 터치
주의: PC와 휴대폰이 같은 Wi-Fi 네트워크에 연결되어 있어야 합니다.
# iOS 시뮬레이터 (Mac 전용, Xcode 필요)
npx expo start --ios
# Android 에뮬레이터 (Android Studio 필요)
npx expo start --android# 캐시 초기화 후 실행 (문제 발생 시)
npx expo start -c
# 터널 모드 (Wi-Fi 연결 문제 시)
npx expo start --tunnel
# TypeScript 타입 체크
npx tsc --noEmit
# 린트 검사
npm run lint| 문제 | 해결 방법 |
|---|---|
| QR 코드 스캔이 안됨 | 같은 Wi-Fi인지 확인, npx expo start --tunnel 시도 |
| 의존성 설치 에러 | rm -rf node_modules && npm install |
| Metro bundler 에러 | npx expo start -c (캐시 초기화) |
| Expo Go 버전 불일치 | Expo Go 앱을 최신 버전으로 업데이트 |
| 네트워크 연결 실패 | 방화벽 확인, 터널 모드 사용 |
src/
├── apis/ # API 호출 함수
│ ├── instance.ts # Axios 인스턴스
│ ├── feed/ # 피드 관련 API
│ ├── log/ # 로그 관련 API
│ └── ...
├── assets/ # 정적 리소스
│ ├── icons/ # SVG 아이콘 컴포넌트
│ └── images/ # 이미지 파일
├── components/ # 재사용 컴포넌트
│ ├── common/ # 공통 컴포넌트
│ ├── feed/ # 피드 관련 컴포넌트
│ └── log/ # 로그 관련 컴포넌트
├── hooks/ # 커스텀 훅 (React Query)
├── navigation/ # 네비게이션 설정
│ ├── RootNavigator.tsx
│ ├── MainTabNavigator.tsx
│ └── types.ts
├── pages/ # 화면 컴포넌트
│ ├── home/
│ ├── feed/
│ ├── log/
│ └── ...
├── stores/ # Zustand 상태 관리
└── types/ # TypeScript 타입 정의
| 탭 | 화면 | 설명 |
|---|---|---|
| 홈 | HomeScreen | 메인 홈 화면 |
| 키움일지 | LogScreen | 미션/일기 캘린더 |
| 둘러보기 | FeedScreen | 피드 목록 |
| 설정 | OptionScreen | 앱 설정 |
StyleSheet.create()사용 (NativeWind/className 사용 안함)- 색상:
#171717(텍스트),#7DC960(프라이머리),#BFBFBF(비활성)
- 함수형 컴포넌트 + TypeScript
- Props 타입은 컴포넌트 파일 내에 정의
- TanStack Query 사용
- hooks 폴더에 useXxxApi.ts 형태로 관리