ID: key_26_22_05_25_18_04_00_00000 Created date: 5월 25 2026 월요일, 22주 18:00
연관 문서
개요
모바일은 신규 프로젝트로, 레포 생성 및 초기 세팅부터 시작한다.
CLAUDE.md는 프로젝트 생성 직후 루트에 작성한다.
프로젝트 파일 위치 (생성 후 기준)
custom-jira-mobile/ ← 레포명 결정 필요
├── CLAUDE.md ← ★ Claude Code가 읽는 핵심 파일
├── .env ← 환경변수 (gitignore)
├── .env.example ← 환경변수 예시 (커밋 대상)
├── package.json
└── src/
├── navigation/ ← React Navigation 설정
│ ├── RootNavigator.tsx ← 루트 네비게이터 (인증 분기)
│ ├── AuthNavigator.tsx ← 로그인/회원가입 스택
│ └── MainNavigator.tsx ← 메인 탭 네비게이터
├── screens/ ← 화면 단위 컴포넌트
│ ├── auth/
│ │ ├── LoginScreen.tsx
│ │ └── RegisterScreen.tsx
│ ├── dashboard/
│ │ └── DashboardScreen.tsx
│ ├── issues/
│ │ ├── IssueListScreen.tsx
│ │ └── IssueDetailScreen.tsx
│ └── board/
│ └── BoardScreen.tsx
├── components/ ← 공통 컴포넌트
│ ├── IssueCard.tsx
│ └── StatusBadge.tsx
├── stores/ ← Zustand 스토어 (웹과 구조 통일)
│ ├── authStore.ts
│ └── issueStore.ts
├── lib/ ← API 클라이언트 / 유틸
│ └── api.ts ← Axios 인스턴스
└── types/ ← TypeScript 타입 정의
└── index.ts
사전 결정 항목
| 항목 | 결정값 | 비고 |
|---|---|---|
| 프로젝트 생성 방식 | Expo | Expo vs bare React Native 결정 필요 |
| 레포명 | 결정 필요 | |
| 상태 관리 | Zustand | Zustand (웹과 통일 권장) |
| 네비게이션 | React Navigation | 확정 |
| 로컬 저장소 | AsyncStorage | AsyncStorage / MMKV 중 결정 |
| 푸시 알림 | FCM (Firebase) | 확정 |
Expo vs Bare React Native
- Expo: 빠른 시작, OTA 업데이트, 네이티브 모듈 제약
- Bare RN: 완전한 네이티브 제어, 초기 세팅 복잡 solclientjs 같은 네이티브 의존 라이브러리 사용 여부에 따라 결정
CLAUDE.md 정의 항목 및 예시
1. 기술 스택 요약
## Tech Stack
- Framework: React Native (Expo / Bare) ← 결정 후 기재
- Language: TypeScript
- State: Zustand
- Navigation: React Navigation 7.x
- HTTP: Axios
- Local Storage: AsyncStorage / MMKV ← 결정 후 기재
- Push: Firebase Cloud Messaging (FCM)
- Icons: lucide-react-native / @expo/vector-icons2. 네비게이션 구조
## Navigation Structure
RootNavigator
├── AuthNavigator (Stack) — 미인증 시
│ ├── LoginScreen
│ └── RegisterScreen
└── MainNavigator (Bottom Tab) — 인증 후
├── Tab: 홈 (DashboardScreen)
├── Tab: 이슈 (IssueListScreen)
├── Tab: 검색 (SearchScreen)
└── Tab: 프로필 (ProfileScreen)3. API 호출 패턴
## API Call Pattern
- 웹(web-plate)과 동일한 구조 사용
- 파일 위치: src/lib/api.ts
- baseURL: process.env.EXPO_PUBLIC_API_URL
예시:
import { api } from '@/lib/api'
const { data } = await api.get('/projects/123/issues')4. 환경변수 목록
## Environment Variables (.env)
EXPO_PUBLIC_API_URL=http://localhost:8080/api/v1
EXPO_PUBLIC_SOLACE_HOST=
EXPO_PUBLIC_SOLACE_VPN=작성 필요: bare RN이면 react-native-config 방식으로 변경
5. 프로젝트 초기 생성 명령 (Claude Code 의뢰 시 포함)
# Expo 방식
npx create-expo-app custom-jira-mobile --template expo-template-blank-typescript
# Bare React Native 방식
npx @react-native-community/cli init CustomJiraMobile --template react-native-template-typescript연관 메일