냠냠 (NyamNyam)
흩어진 요리 레시피를 기록하고 관리하는 Flutter iOS 앱입니다. 한국 App Store 음식 및 음료 유료 1위·전체 유료 25위를 기록했고, 이후 무료·부분 유료화로 전환하며 개발부터 출시·운영까지 경험했습니다.

담당 역할 · 개인 프로젝트 기획·개발, AI 코딩 도구 활용, 인증·데이터·결제·광고 연동, App Store 출시와 운영
나만의 레시피북, 냠냠
개인의 불편에서 시작해 App Store 출시와 운영으로 이어진 앱
내가 저장한 레시피는 어디에 있을까?
요리를 하려고 레시피를 찾다 보면 유튜브 보관함, 블로그와 메신저에 저장한 자료를 다시 뒤져야 했습니다. 저장은 해뒀지만 필요할 때 찾기 어렵고, 여러 요리를 내 방식으로 분류하기도 번거로웠습니다.
냠냠(NyamNyam)은 이 불편을 해결하려고 만든 개인 레시피북입니다. 복잡한 기능을 늘리기보다 레시피를 기록하고, 사진·재료·조리법을 함께 보관하고, 카테고리별로 정리하는 흐름에 집중했습니다.
저 혼자 기획과 개발, 디자인 구성, 스토어 출시와 수익화 변경까지 진행했습니다. AI 코딩 도구로 구현을 보조받되, 필요한 기능과 범위를 정하고 실제 동작과 사용 화면을 확인하는 역할은 직접 맡았습니다.
작게 만들어, iOS에서 먼저 출시
개발 도구는 Flutter를 선택했습니다. 여러 플랫폼으로 확장할 수 있다는 점도 있었지만, 실제 출시에서는 iOS에 먼저 집중했습니다. 당시 Android의 테스터 확보와 스토어별 등록·업데이트 관리까지 동시에 진행하는 것은 혼자 감당할 작업을 늘리는 선택이었습니다.
모든 플랫폼을 한 번에 지원하기보다 실제로 출시하고 사용자 반응을 확인하는 것을 우선했습니다. App Store 공개 기록상 냠냠의 첫 출시는 2025년 11월입니다.
상단의 ‘No Ads, No Clutter, Just Recipes!’ 이미지는 유료 출시 당시의 홍보 자료입니다. 이후 무료·부분 유료화와 광고 도입으로 수익화 모델을 변경했습니다.
기록에서 조리까지 이어지는 기능
- 나만의 레시피 기록: 사진, 재료, 조리법과 메모를 함께 관리합니다.
- 레시피집과 분류: 상황과 취향에 따라 레시피를 모아 찾기 쉽게 정리합니다.
- 조리 화면: 재료와 조리 단계를 확인하고 타이머 등 요리할 때 필요한 기능을 사용합니다.
- 클라우드와 프리미엄 기능: 데이터 저장과 구매 권한을 연결해 무료 사용과 유료 기능을 구분했습니다.
AI를 활용하되, 개발의 판단은 직접
개발 과정에서는 Gemini와 Antigravity 등 AI 도구를 활용했습니다. 화면의 뼈대를 만든 뒤 상태와 업무 로직을 붙이고, 실행 중 발생한 오류를 확인하며 수정하는 방식으로 작업했습니다.
예를 들어 레시피 상세 화면은 이미지·설명·저장 버튼을 배치한 초기 UI에서 시작해, 저장 상태에 따라 아이콘과 안내가 바뀌도록 연결했습니다. 화면 넘침 같은 문제는 오류 로그와 실제 화면을 함께 보면서 레이아웃을 조정했습니다.
디자인도 필요한 리소스를 직접 정리하고 AI 이미지 도구와 색상 팔레트를 활용했습니다. 도구가 만든 코드를 받는 단계에서 끝내지 않고, 앱의 사용 흐름과 표현에 맞는지 확인하며 완성했습니다.
혼자 관리할 수 있는 백엔드와 수익화 구조
레시피·사용자·카테고리 사이의 관계를 다루기 위해 Supabase의 PostgreSQL을 사용했습니다. 직접 운영할 API 서버와 인프라의 범위를 줄이고, 인증·데이터·이미지 저장을 연결하는 데 집중했습니다.
사용자별 데이터와 이미지 저장
클라이언트에서 데이터에 접근하는 구조이므로, 사용자별 접근 범위를 데이터베이스의 RLS(Row Level Security, 행 단위 접근 제어) 정책으로 제한했습니다. 테이블 전체를 공개하는 대신, 로그인한 사용자가 어느 행을 읽거나 쓸 수 있는지 DB가 조건을 확인하는 방식입니다. 로그인한 사용자의 ID와 레시피 소유자를 기준으로 자신의 데이터에 접근하도록 구성했습니다.
사진 같은 파일을 보관하는 Supabase Storage에 레시피 이미지를 업로드하고, 그 파일에 접근할 주소(URL)를 레시피 데이터와 연결했습니다. 레시피 정보에는 이미지 파일 자체를 넣는 대신 저장된 사진의 위치를 기록했습니다. 텍스트 데이터와 사진을 함께 다루면서도 이미지 서버를 별도로 운영하는 범위를 줄였습니다.
Apple 로그인과 계정 탈퇴
Apple 로그인을 연동하고 계정 탈퇴 기능도 구현했습니다. 로그인 성공 화면만 만드는 것이 아니라, 사용자 정보 처리와 계정·연결 데이터 정리까지 앱의 사용 흐름에 포함했습니다.
RevenueCat으로 구매와 권한 연결
프리미엄 기능에는 RevenueCat을 사용했습니다. 클라이언트에서 ’결제가 끝났다’는 이벤트를 받았다는 이유만으로 기능을 여는 대신, 구매 검증과 프리미엄 권한 상태를 앱의 기능 제공 여부에 연결했습니다. 여기서 권한(entitlement)은 사용자가 특정 유료 기능을 사용할 수 있는 상태를 뜻하며, 구매한 상품과 앱에서 열어 줄 기능을 연결하는 기준입니다.
결제 화면과 상품을 준비하고 심사에서 받은 피드백을 반영하는 과정도 직접 진행했습니다. 결제와 구독 상품의 설명을 사용자가 이해할 수 있게 구성하는 일까지 출시 작업의 일부였습니다.
무료 전환 후 AdMob 도입
이후 무료 사용과 프리미엄 기능을 함께 제공하는 방향으로 바꾸면서 AdMob을 도입했습니다. 화면 일부를 차지하는 배너 광고와 화면 전체로 표시되는 전면 광고를 연결하고, 탐색 중인 화면과 레시피 저장을 마친 시점처럼 사용 흐름을 고려해 노출 위치를 구성했습니다.
유료로 출시했을 때의 ‘광고 없는 레시피북’과 무료 전환 이후의 수익화 구성을 구분하며 운영했습니다.
한국 유료 차트 1위와 25위, 그리고 그다음
냠냠은 1,100원 유료 앱으로 시작했습니다. 한국 App Store에서 음식 및 음료 유료 1위, 전체 유료 앱 25위를 기록했습니다.
처음 앱을 알릴 때는 가족·친구·동료에게 출시 소식을 전하고 구매를 부탁했습니다. 초기 사용자들의 관심과 구매가 있었고, 틈새 카테고리에서 제품을 선보이며 차트에 진입하는 경험을 했습니다.
이 순위가 큰 매출이나 지속적인 사용자 증가를 뜻하지는 않았습니다. 전체 다운로드와 매출은 기대만큼 크지 않았고, 초기 관심이 지나간 뒤에도 사용자가 계속 유입되는 구조를 만드는 일은 별도의 과제였습니다.
유료 다운로드에서 무료·부분 유료화로
출시 때 얻은 순위와 실제로 앱이 계속 사용되는 것은 다른 문제였습니다. 처음 보는 사용자가 기능을 체험하기도 전에 결제해야 하는 구조는 진입 장벽이 될 수 있다고 판단했습니다.
이후 무료로 시작하고, 프리미엄 기능과 광고로 수익화하는 모델로 전환했습니다. RevenueCat과 AdMob을 연결하면서 사용자가 먼저 핵심 기능을 경험하도록 진입 방식을 바꿨습니다.
이 과정에서는 결제 기능을 구현하는 것뿐 아니라 무료로 제공할 범위와 프리미엄 기능의 가치를 다시 정해야 했습니다. 순위를 얻는 출시 전략에서, 사용자가 앱을 계속 쓰는 운영 방식으로 고민이 옮겨갔습니다.
만드는 것과 알리는 것은 다른 일이었다
개발 과정을 공개하는 것만으로는 부족했다
X와 Reddit에 개발 과정과 문제 해결 경험을 공유했습니다. 하지만 개발자에게 흥미로운 이야기와, 레시피를 정리할 사람이 앱을 설치할 이유는 같지 않았습니다.
기술 스택과 구현 과정을 설명하는 글에 관심을 받더라도 제품 사용으로 곧바로 이어지지는 않았습니다. 만든 과정을 알리는 일과 실제 사용자를 찾는 일을 구분해야 한다는 점을 배웠습니다.
해외 진출은 문구 번역보다 넓은 문제
영문 화면을 준비하고 해외 커뮤니티에도 알리려 했지만, 커뮤니티별 홍보 규칙과 사용자 맥락의 차이를 마주했습니다. 개발자가 모인 곳과 요리를 하는 사용자가 모인 곳에서는 관심사도 달랐습니다.
현지화는 다른 언어와 지역의 사용자에게 맞게 제품을 바꾸는 작업입니다. 레시피 앱에서는 화면 문구 번역뿐 아니라 사용하는 레시피 사이트와 입력 형식도 함께 살펴봐야 했습니다. 지역마다 자주 사용하는 레시피 출처와 데이터 구조가 달라, URL 파싱이 어떤 사이트와 형식을 지원해야 하는지도 함께 고민해야 했습니다.
순위보다 오래 남은 출시 경험
냠냠은 큰 매출을 만든 성공담보다, 내가 필요한 앱을 직접 만들고 출시한 뒤 수익화와 유입의 현실을 경험한 프로젝트입니다.
Flutter 화면 개발부터 Supabase의 인증·데이터 접근 제어·이미지 저장, RevenueCat 결제와 AdMob 광고, 스토어 심사와 출시 이후의 변경까지 한 제품의 흐름 안에서 경험했습니다.
다음 제품에서는 초기 관심을 얻는 방법과 지속적인 사용을 만드는 방법을 함께 생각하려 합니다. 기획을 실제 앱으로 완성한 경험에 더해, 누구에게 어떤 가치를 전달하고 어떻게 계속 사용하게 할지 판단하는 기준을 얻었습니다.
그리고 이 때 잠재 고객을 찾아 헤맸던 경험이 다음 아이템인 레디브릿지로 이어집니다.