1081a3a85e1cfd4b28953ee6c8af01785a4b5114
새 의존성: - expo-image-picker ~56.0.13 (PhotoCapture) - expo-media-library ~56.0.6 (CaptureResult 저장) - expo-file-system ~56.0.7 (generateRegionMask 파일 저장 — Mac 구현 시) 새 파일: - src/store/useAppStore.ts: zustand store (photoUri/maskUri/pose/mode + reset) - src/features/segmentation/index.ts: SegmentationModule TS wrapper (Mac Swift 빌드 대기) - src/features/composite/shaders.ts: Skia RuntimeEffect 셰이더 소스 (마스크 흰색 → 카메라, 그 외 → 베이스) - src/features/composite/CompositeView.tsx: 합성 컴포넌트 골격 (Skia v2 API Mac 검증 대기) - src/features/composite/useCameraFrameUri.ts: 카메라 프레임 URI hook 골격 (vision-camera v5 API Mac 검증 대기) - src/features/maskSplit/generateRegionMask.ts: region 마스크 생성 골격 (Skia v2 API Mac 검증 대기) - src/features/maskSplit/useModeMask.ts: mode 전환 시 마스크 자동 재생성 hook + cleanup race 처리 - src/screens/OnboardingScreen.tsx: 3장 슬라이드 (정상 동작) - src/screens/PhotoCaptureScreen.tsx: 갤러리 선택 + 자세 검증 (PoseModule Mac 빌드 후 동작) - src/screens/CaptureResultScreen.tsx: 결과 + 저장 + 공유 (expo-media-library) - src/screens/LiveFittingScreen.tsx: 모드 전환 + 핀치/팬 + Composite 골격 (Camera는 v5 API Mac 검증 대기) - App.tsx: 4화면 state-based navigation (onboarding → photo → live → result) + GestureHandlerRootView 감싸기 핵심 결정: - vision-camera v5는 v4와 완전 다른 Nitro 기반 (takeSnapshot 미존재 / usePhotoOutput/usePreviewOutput hook 패턴). v0-plan v4 코드 그대로 옮길 수 없어 Camera 부분 골격 + Mac TODO 명시. - Skia v2 child shader API도 v1과 다를 가능성 → CompositeView 골격 + Mac TODO. - 모드 전환/핀치 줌/네비게이션/store/검증 로직은 골격 단계에서 정상 동작. 검증 (Windows 가능 범위): - npx tsc --noEmit: 무에러 - npm test: 6 suites / 17 tests passed (UI 골격 추가가 기존 테스트 영향 없음 확인) Mac에서 채울 부분 (정리): - vision-camera v5 Camera + photoOutput + previewOutput 통합 - Skia v2 RuntimeEffect child shader 패턴 (ImageShader / useShader) - expo-file-system v56 writeAsStringAsync(base64) 동작 확인 - generateRegionMask 본 구현 (Surface.MakeOffscreen + clipRect + encode PNG) - 실기기 manual test 5종 (각 화면 전환 + 핀치 줌 + 캡쳐 + 저장 + 공유) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lapie (라피)
정면 전신 사진의 신체 영역에 실시간 카메라로 옷을 대보는 iOS 앱. 박재오 정체성-Why-탐색의 외면 분기 첫 증거.
입구
- 하네스 운영 규약:
CLAUDE.md← AI agent와 협업하기 전에 반드시 읽음 - 정식 spec:
docs/spec.md - v0 구현 plan (W1~W4, 13 task):
docs/v0-plan.md - brainstorming 원본:
docs/brainstorming-raw.md
v0 상태 (2026-05-25 기준)
사전 액션
| 항목 | 상태 |
|---|---|
| Brainstorming (6단 결정) | ✅ |
| Spec 작성 | ✅ |
| v0 plan (W1~W4) | ✅ |
| Day 0 검증 (도메인·앱스토어·인스타·상표) | ✅ |
| @lapie_app 인스타 핸들 선점 | ✅ |
| macOS 접근 방안 결정 | ✅ 박재오 Mac 보유 (2026-05-24) |
| lapie.kr / lapie.io 도메인 등록 | ⏸ 7월 착수 직전 |
| 변리사 정식 상표 조사 | ⏸ 출원 직전 |
| Figma 와이어프레임 5화면 | ⏸ 가능하면 W1 첫 주 |
v0 코드 진행 (W1~W4, 7월 → 2026-05-24 앞당김)
| Task | 상태 | 비고 |
|---|---|---|
Gitea repo 연결 (gahusb/lapie_app) |
✅ SSH ED25519 키 (windows-pc) |
|
| W1 Task 1 Expo + RN + TS 셋업 | ✅ Windows 가능 범위 (SDK 56, RN 0.85, TS 6) | prebuild + run:ios는 Mac |
| W1 Task 2 카메라 화면 + 권한 | ⏸ Mac 실기기 | |
| W1 Task 3 Segmentation Swift 브릿지 | ⏸ Mac | |
| W2 Task 4 Pose Swift 브릿지 | 🟡 TS wrapper + mock test ✅ / Swift Mac | |
| W2 Task 5 validatePose | ✅ TDD 3 케이스 / UI는 Task C | |
| W2 Task 6 splitMask | ✅ TDD 4 케이스 | |
| W3 Task 7 Skia 합성 컴포넌트 | ⏸ Mac 실기기 | |
| W3 Task 8 자동 스케일 (핵심 차별화) | ✅ calculateScale TDD + 폴백 + usePinchScale / Mac 검증 | |
| W4 Task 9 LiveFittingScreen | ⏸ Task C UI 골격 + Mac | |
| W4 Task 10 CaptureResultScreen | ⏸ Task C UI 골격 + Mac | |
| W4 Task 11 Onboarding + 네비게이션 | ⏸ Task C UI 골격 + Mac | |
| W5~6 Task 12 자동 스케일 보강 | ⏸ 버퍼 | |
| W5~6 Task 13 마케팅 콘텐츠 5편 | ⏸ 버퍼 |
검증:
npx tsc --noEmit: 무에러npm test: 6 suites / 17 tests passed (sanity 1 + pose 1 + photoValidation 3 + maskSplit 4 + calculateScale 6 + detectClothBounds 2)- 푸시: 7 commits → Gitea
기술 스택 (v0)
React Native (Expo bare) + TypeScript + react-native-vision-camera + @shopify/react-native-skia + iOS Vision Framework (Swift 브릿지) + Zustand + Jest.
자세한 빌드 명령어는 CLAUDE.md §4 참고.
박재오 위키 연결
- 메타 페이지:
[[사업-Lapie-피팅앱]] - 트랙 분류: 박재오 위키 카테고리 3 (사업)
- Why 증거 라인: #3 (외면 분기)
Description
Languages
TypeScript
99.3%
JavaScript
0.7%