냉장고에 뭐가 있는지
기억하시나요?
한국에서 한 해 버려지는 음식물 쓰레기는 약 500만 톤, 처리 비용만 8천억 원이 넘습니다. 그 중 가장 단순한 원인 — 있는 것을 몰라서 버리는 낭비 — 하나에만 집중했습니다.
- 냉장고 안이 보이면, 사지 않아도 될 것을 사지 않게 됩니다
- "있는 것을 알고 쓰는 것" — 그 하나로 충분합니다
- 선함의 데이터화 — 선함연구소의 첫 번째 일상 실험
앱을 열고, 찍고,
닫는다. 그게 전부예요
복잡한 카테고리 분류도, 레시피 연동도 없습니다. 행동을 바꾸는 가장 확실한 방법은 마찰을 없애는 것입니다. 사진 한 장이 냉장고 뒤편의 식재료를 기억하게 합니다.
- 3열 그리드 — 냉장고 속을 보는 것처럼
- 코멘트 추가 가능 — "반 썼음", "오른쪽 선반"
- 커스텀 카테고리로 한눈에 구분
실수해도 괜찮고,
데이터는 기기 안에만 있어요
삭제해도 3초 안에 되돌릴 수 있습니다.모든 사진과 데이터는 기기 내에만 저장되며, 서버로 전송되지 않습니다. 계정도, 인터넷 연결도 필요 없습니다.
- 롱프레스 편집 모드 — iOS 홈 화면처럼 직관적
- 삭제 즉시 되돌리기 Snackbar 3초 표시
- 서버 없음 · 로컬 SQLite · 완전 오프라인
2026.03 App Store 정식 출시 · 2026.05 v1.1.0 배포 — 기획부터 스토어 배포·운영까지 1인 개발.
배경
“매주 버려지는 식재료 하나를 줄이는 것이 선함의 시작입니다.”
한국에서 한 해 버려지는 음식물 쓰레기는 약 500만 톤, 처리 비용만 8천억 원이 넘습니다. 그 원인 중 가장 단순한 것은 기억하지 못해서 버리는 낭비입니다. 냉장고 안이 보이면, 사지 않아도 될 것을 사지 않게 됩니다.
선함연구소의 슬로건 “선함의 데이터화”—거창한 운동이 아니라, 측정 가능한 작은 행동의 축적—을 일상 속에서 실험하기 위해 기획했습니다.
2026년 3월 iOS App Store 정식 출시, 같은 해 5월 v1.1.0을 배포했습니다.
서비스 구조
남았던가 (Turborepo 모노레포)
├── apps/native — React Native + Expo 모바일 앱 (iOS / Android)
└── apps/landing — Astro 정적 랜딩 페이지서버 없는 로컬 전용 아키텍처입니다. 모든 데이터는 기기 내 SQLite와 파일 시스템에만 저장되며, 계정 생성이나 네트워크 연결 없이도 완전히 동작합니다.
주요 기능
사진 메모
식재료를 직접 촬영하거나 갤러리에서 선택해 저장합니다. 사진에 코멘트(예: “반 썼음”, “오른쪽 선반”)를 추가하고, 커스텀 카테고리(채소·육류·유제품 등 직접 생성)로 분류할 수 있습니다.
보기 모드
| 보기 방식 | 설명 |
|---|---|
| 그리드 뷰 | 사진 중심 3컬럼, 냉장고 속을 보는 느낌 |
| 리스트 뷰 | 텍스트 + 코멘트 중심, 빠른 스캔 |
정렬은 최신 등록순 / 오래된 순을 지원합니다.
삭제 & 실수 복구
카드를 드래그하면 쓰레기통 아이콘이 나타나고, 올려놓으면 삭제됩니다. 삭제 직후 3초간 되돌리기 Snackbar가 표시되어 즉시 복원할 수 있습니다.
편집 모드
롱프레스 시 iOS 홈 화면 스타일의 wobble 애니메이션이 적용되며, 삭제 버튼이 노출됩니다.
슬롯 머신 타이틀
15개 식재료 이름이 overshoot 이징으로 순환되는 헤더 애니메이션. “있는 것을 기억하라”는 서비스 정체성을 진입부터 표현합니다.
담당 역할 & 기여
- 전체 기획 및 아키텍처 설계 — 서비스 개념 수립부터 로컬 전용 아키텍처 결정까지
- React Native 앱 개발 — Expo Router 기반 화면 구성, SQLite 데이터 레이어, Zustand 상태 관리
- UX 구현 — 드래그 삭제, 롱프레스 편집 모드, 슬롯 머신 애니메이션 등 인터랙션 전체
- 랜딩 페이지 개발 — Astro 기반 정적 소개 페이지
- 앱스토어 배포 및 운영 — iOS App Store 출시 및 EAS 빌드 파이프라인 구성
기술 스택
| 레이어 | 기술 |
|---|---|
| 모바일 앱 | React Native, Expo SDK 55, TypeScript, Expo Router |
| 로컬 DB | Expo SQLite |
| 이미지 저장 | expo-file-system |
| 상태 관리 | Zustand v5 |
| 애니메이션 | react-native-reanimated, react-native-gesture-handler |
| 랜딩 페이지 | Astro v5, Tailwind CSS v4 |
| 모노레포 | Turborepo, Bun |
기술 선택 이유
- 로컬 전용 아키텍처: 서버 운영·비용·보안 고려 없이 출시 가능합니다. 모든 데이터가 기기 안에만 있어 프라이버시를 구조적으로 보장합니다.
- Expo SQLite: 관계형 스키마로 카테고리·이미지·코멘트를 구조화하면서, 추후 클라우드 동기화 확장 시 Cloudflare D1(SQLite 호환)으로 그대로 마이그레이션할 수 있도록 설계했습니다.
- Zustand: 경량 상태 관리로 UI 레이어의 복잡도를 최소화했습니다.
성과 & 수치
- 2026년 3월 iOS App Store 정식 출시 (v1.0.0)
- 2026년 5월 v1.1.0 배포 — 카테고리 시스템 및 커스텀 색상 추가
- 로컬 전용 아키텍처로 서버 운영 비용 제로
- 1인 개발·운영으로 기획부터 앱스토어 출시까지 전 사이클 담당