찍술: 술자리 사진으로,
어제의 기록을 정리해요.
무엇을 마셨는지 확인하고, 실제로 마신 양을 남겨보세요.
iPhone 앱·앱인토스 미니앱 준비 중 · 공개 설치 링크는 아직 없습니다.

사진을 골라도, 기록은 확인한 뒤에.
사진 속 병의 수가 내가 마신 양은 아니니까요. 실제로 마신 양은 직접 확인해요.
사진 없이 직접 입력할 수도 있어요.사진 선택
술자리에서 찍은 사진을 선택해요.
제품과 마신 양 확인
제품 후보를 확인하고, 내가 실제로 마신 양을 입력해요.
기록 저장
확인한 내용으로 하루의 기록을 저장해요.
하루씩 쌓인 기록을,
달력에서 다시 봐요.
날짜를 눌러 기록을 확인하고, 필요하면 수정하거나 삭제하세요.
기록하지 않은 날은 미기록으로 구분해요. 비어 있는 날짜가 술을 마시지 않은 날을 뜻하지는 않아요.

어디에서 사용할 수 있나요?
지금은 두 플랫폼에서 준비 중이에요. 아직 공개 설치 링크는 없어요.
- iPhone 앱
- 내부 테스트 중 · 공개 설치 링크 준비 중
- 앱인토스 미니앱
- 실기기 검증과 심사·출시 준비 중
두 앱의 기록은 따로 보관되며 서로 동기화되지 않습니다.
자주 묻는 질문
사진이 없어도 기록할 수 있나요?
네. 직접 입력으로 제품과 실제로 마신 양을 확인한 뒤 기록할 수 있어요.
마신 양을 자동으로 알 수 있나요?
사진만으로 내가 마신 양을 확정할 수는 없어요. 사진에서 찾은 제품 후보를 확인하고, 실제로 마신 양은 직접 입력한 뒤 저장해요.
지금 설치할 수 있나요?
아직 공개 설치 링크는 없어요. iPhone 앱은 내부 테스트 단계이며, 앱인토스 미니앱은 실기기 검증과 심사·출시를 준비하고 있어요.
iPhone 앱과 미니앱의 기록이 연결되나요?
두 앱은 별도로 기록을 보관해요. 현재 두 앱 사이의 기록 동기화는 제공하지 않아요.
만든 과정과 기술 이야기
SwiftUI 음주 기록 앱과 별도의 앱인토스 미니앱을 개발하고 있습니다. 미니앱의 촬영·후보 확인·기록 저장 흐름과 .ait 패키지 생성을 마쳤고, Toss 실기기 검증과 심사는 진행 전입니다.
담당한 일
- SwiftUI·SwiftData 기반 iOS 앱 설계와 개발
- Vision OCR·바코드 분석, 제품 후보 확인과 명시적 저장 흐름 구현
- 한국어·영어 UI, 접근성 검사와 내부 TestFlight 배포 절차 구축
- 앱인토스 미니앱 구조, Toss SDK 기기·저장소 연결과 .ait 패키징 구현
개발 기록
· 앱인토스 앱을 콘솔에 등록하고 별도 React 미니앱과 로컬 .ait 패키지를 만들었습니다. 심사·출시·실기기 테스트는 진행 전이며, iOS와 미니앱 간 기록 동기화도 구현하지 않았습니다.
배경
사진만으로는 실제로 마신 양을 알 수 없고, 곡면 라벨·반사·물방울 때문에 제품 식별도 불확실할 수 있습니다.
iOS 앱은 제품 후보와 실제 마신 양을 확인해 기록하는 경험을 제공하고, 앱인토스 미니앱은 별도 저장소와 진입 흐름으로 먼저 배포할 계획입니다.
구현한 것
- Today·캘린더·제품 확인·직접 입력·내보내기를 연결한 iOS MVP
- 기본 브랜치에 기록 경험, Xcode Canvas 프리뷰, App Intents와 워드마크 개선 병합
- 별도 다중 사진 PR에 내부 TestFlight 1.1 (26) 업로드·처리·테스터 그룹 연결 기록
- Toss 앱 등록, 카메라·사진 선택·SDK 저장소 흐름과 zziksool.ait 로컬 산출물
제약과 주요 판단
- 사진 속 제품·용기 수를 사용자의 실제 음용량으로 간주할 수 없음
- 제품 카탈로그와 OCR 근거가 부족할 때 확정 대신 후보·미확인 상태를 유지해야 함
- 시뮬레이터 검사와 실제 iPhone 카메라·Vision 검증의 차이
- Vision OCR·바코드와 출처를 확인한 로컬 카탈로그로 제품 후보를 만들고 실제 음용량은 사용자가 입력하도록 구성
- 촬영·사진 선택·직접 입력 모두 확인 화면을 거쳐 명시적으로 저장할 때만 기록 생성
- 기본 브랜치의 한 장 입력과 개발 중인 1~5장 세션 인식을 구분하고, 다중 사진의 중복·불확실한 후보는 보수적으로 처리
- SwiftData 기록·수정·삭제·내보내기와 한국어·영어, Dynamic Type 접근성 흐름을 함께 검증
- 웹뷰 미니앱은 React 18·Toss SDK를 사용하고 iOS 앱과 저장·로그인 경계를 분리; 두 앱 사이 동기화는 구현 범위에 포함하지 않음
검증 범위와 남은 한계
- 앱인토스 미니앱은 Toss 실기기 검증, 콘솔 업로드, 심사 전입니다.
- iOS와 미니앱은 별도 저장소를 사용하며 기록 동기화는 구현되지 않았습니다.
- 인식 기능은 기본 앱의 처리 범위와 별도 실험 기능, 미니앱의 로컬 OCR 범위를 나누어 보며 외부 인식 기능은 비활성 상태입니다.
- 다중 사진 인식은 미병합 PR이며, 내부 TestFlight 업로드를 테스터의 설치·실행 성공이나 App Store 출시로 간주하지 않습니다.
- 기존 실제 사진 검사는 독립된 정확도 평가셋이 아니므로 제품 식별 정확도 수치를 주장하지 않습니다.
- 실제 기기 카메라·Apple Intelligence·iOS 18 동작은 별도 검증이 필요합니다.
다음 작업
- 실제 iPhone 설치·촬영 흐름과 독립된 촬영 세션에서 제품 식별·중복 처리 검증
- 다중 사진 PR의 검증 결과를 정리한 뒤 기본 기록 흐름에 통합
기술 선택
| 기술 | 선택 이유 및 적용 위치 | 실제 겪은 제약 및 배운 점 |
|---|---|---|
Swift 6 & SwiftUI | iPhone 앱 UI와 비동기 분석 상태 관리 | 분석 취소·화면 전환·오래된 결과의 반영을 제어 |
Apple Vision | 기기 내 한글·영문 라벨 OCR과 바코드 분석 | 사진 조건에 따른 오인식을 후보 확인 흐름으로 처리 |
SwiftData & Observation | 로컬 기록과 캘린더 상태 관리 | 저장·삭제 실패 시 일관성과 복구 확인 |
AppIntents & PhotosUI | 촬영·사진 선택·직접 입력으로 연결하는 시스템 진입점 | 단축어 진입이 기록 저장을 대신하지 않도록 분리 |
Xcode & TestFlight | 빌드·접근성 검사와 내부 배포 | 업로드·처리·설치·실행 상태를 각각 기록 |