Cookdoc는 음식 검색을 시작점으로 삼아 변형, 스타일, 유튜버별 차이, 댓글 기반 팁을 비교하고 조리까지 이어주는 iOS 앱입니다.
- Swift
- SwiftUI
- Observation (
@Observable) - async/await 기반 서비스 호출
- 홈: 추천 음식과 스타일 기반 진입
- 검색: V2 음식명 검색, 즐겨찾기, 변형/스타일/유튜버 비교
- 조리: V2 steps 기반 단계 진행, 타이머, action type, 핸즈프리 음성 명령, 채팅
- 기록: 조리 이력 및 평점
- 설정: AI 모델, 알림, 마이페이지
- 바코드 스캔
- 영수증/OCR 재료 등록
- 수동 재료 보관 관리
- 사용자의 레시피 직접 등록
- 영상 링크 추가를 첫 화면의 핵심 UX로 두는 방식
Cookdoc/CookDoc-iOS/Config: 앱 설정Cookdoc/CookDoc-iOS/Models: API/도메인 모델Cookdoc/CookDoc-iOS/Services: 네트워크 서비스 계층Cookdoc/CookDoc-iOS/ViewModels: 화면 상태/로직Cookdoc/CookDoc-iOS/Views: 화면 UICookdoc/CookDoc-iOS/Voice: 음성 인식/합성Cookdoc/CookDoc-iOS/Timer: 조리 타이머Cookdoc/CookDoc-iOS/MockData.swift: 목업 데이터
- Xcode에서 프로젝트 열기
- 스킴 선택 후 실행 (
Cmd + R)
CLI 테스트:
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild test -project Cookdoc.xcodeproj -scheme Cookdoc \
-destination 'platform=iOS Simulator,name=iPhone 17,OS=26.5'AppConfig.swift에서 아래 환경 변수를 읽습니다.
-
COOKDOC_MOCK_MODE- 기본값:
false(값이true일 때만 목업 모드) true: 네트워크 호출 없이MockData사용false: 실제 API 호출
- 기본값:
-
COOKDOC_BASE_URL- 기본값:
https://3-36-71-170.nip.io - API 서버 주소
- 기본값:
- 음식 검색:
GET /api/v2/dishes/search?q={query} - 음식 상세/variant:
GET /api/v2/dishes/{dish_id} - 유튜버별 비교:
GET /api/v2/dishes/{dish_id}/creators - 레시피 목록:
GET /api/v2/dishes/{dish_id}/recipes?variant_id=&creator_id=&style_tags=&sort=quality_score - 레시피 상세:
GET /api/v2/recipes/{recipe_id} - 조리 단계:
GET /api/v2/recipes/{recipe_id}/steps
유튜버별 비교는 채널명과 썸네일/이니셜 아바타로 보여주며, youtube:UC... 원시 id는 UI에 직접 노출하지 않습니다.
레시피 상세나 조리 단계 요청이 늦어져도 목록에 포함된 completed V2 steps가 있으면 조리모드는 즉시 embedded 데이터로 시작합니다.
V3 v3_* 데이터는 lab 전용이며 앱에서 직접 호출하지 않습니다.
-
COOKDOC_VOICE_DEBUG- 기본값:
false true:[VOICE]접두사 로그 출력 (STT/TTS/명령 흐름 추적)
- 기본값:
-
COOKDOC_OFFLINE_VOICE_ASSISTANT- 기본값:
true(값이false가 아니면 활성) true: 네트워크 불안정 시 로컬 어시스턴트 응답 우선false: 서버 응답만 사용
- 기본값:
-
COOKDOC_WAKE_WORD- 기본값:
false(값이true일 때만 활성) true: 웨이크워드(쿡독) 기반 명령 게이트 활성false: 핵심 조리 명령 직접 인식
- 기본값:
- 기본 동작: 요리 화면 진입 시 음성 제어 자동 시작
- STT: 부분 인식 기반, 무음 약 2초 후 문장 확정
- TTS: 단계/타이머/응답 안내를 한국어 음성(
ko-KR)으로 재생 - 조작 모드:
모두/음성만/터치만/제스처
주요 음성 명령:
- 이동:
다음 단계,다음 거,넘겨,이전 단계,처음부터,3단계로 - 읽기:
다시 읽어,재료 알려줘 - 타이머:
타이머 시작,타이머 멈춰,타이머 재개,얼마 남았어 - 채팅:
채팅 열어,채팅 닫아,질문 ... - 평가:
별점 5점,평가 남기기
git remote -v
git status
git log --oneline -n 5- 심사용 상세 안내:
CAPSTONE_REVIEW_GUIDE.md - 핵심 시연 흐름: 홈 추천 → 탐색/비교 → 레시피 상세 → 요리 시작 → TTS/음성 명령/타이머 → 완료/평점
- 최종 검증 기준: iPhone 17 / iOS 26.5 Simulator 기준 전체 테스트 통과
- 앱 진입점:
Cookdoc/CookDoc-iOS/CookDocApp.swift - 목업/실서비스 분기:
AppConfig.isMockMode