필름 카메라 현상소 예약·커뮤니티 서비스. 하나의 React 코드베이스를 Capacitor로 패키징해 웹과 Android·iOS 양대 스토어에 출시하고 운영하고 있습니다.
메인 화면
사진 피드
마이페이지OVERVIEW
필름 사진을 찍는 사람이 현상소를 찾고 예약하고, 현상된 사진을 서로 나누는 서비스입니다. 웹으로 시작해 앱 출시까지 이어졌고, 지금도 운영 중입니다. 웹 파트 4인 중 파트 리드로 참여했습니다.
MY SCOPE
소셜 로그인부터 가입 완료까지의 상태 분기와 마이페이지, 현상관리 화면을 담당했습니다.
React 단일 코드베이스를 Capacitor로 감싸 양대 스토어에 출시하고, 네이티브 인증·파일 전송을 붙였습니다.
GitHub Actions에서 Android AAB와 iOS IPA를 자동 생성하는 파이프라인을 만들었습니다.
FCM 등록·수신·딥링크와 서버와의 action 계약 설계까지 맡았습니다.
TROUBLESHOOTING
TAKEAWAYS
웹 계층 밖에서 생기는 문제는 로컬에서 재현되지 않고, 에러 메시지가 원인을 가리키지도 않습니다. release 빌드, CI 러너, 네이티브 브리지처럼 “내 손에서 도는 환경이 아닌 곳”을 다뤄본 것이 이 프로젝트에서 가장 크게 남았습니다.
조용히 실패하는 문제가 가장 오래 남습니다. 로그아웃 시 401, Firebase 콘솔이 감춘 APNs 에러, fallback이 삼킨 딥링크 오타 — 세 건 모두 사용자 눈에는 정상으로 보였습니다. 실패를 실패로 드러내는 설계를 먼저 생각하게 됐습니다.
진단 장치를 남기는 편이 낫습니다. Secret 크기와 매직 바이트를 찍던 가드를 지우지 않은 이유는, 정확히 그 정보가 없어서 하루를 헛짚었기 때문입니다.