Gitsunmin

남았던가

← Works
남았던가 아이콘

남았던가

선함연구소

2026.02 ~

냉장고 식재료를 사진으로 기록해 음식물 낭비를 줄이는 모바일 앱입니다. 서버 없이 기기 로컬 스토리지만 사용하는 완전 프라이빗 아키텍처로, 찍고 닫는 2초가 전부입니다.

React Native Expo TypeScript SQLite Zustand Tailwind CSS Astro Turborepo Bun
냉장고 식재료 기록 앱
냉장고 속
당근 남았던가?
+
냉장고 속
당근 남았던가?
🥕
채소당근반 썼음
🥚
단백질달걀6개 남음
🧀
유제품치즈
🧄
채소마늘오른쪽 칸
🍄
채소버섯
🥛
음료두유오픈함
🥬
채소시금치
🧅
채소양파반개
🥩
육류삼겹살냉동
+
냉장고 속
당근 남았던가?
완료
🥕
당근
🥚
달걀
🧀
치즈
🧄
마늘
🍄
버섯
🥛
두유
🥬
시금치
🧅
양파
삼겹살 삭제됨되돌리기

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
로컬 DBExpo 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인 개발·운영으로 기획부터 앱스토어 출시까지 전 사이클 담당

관련 링크