Skip to content

Repository files navigation

🧑🏻‍🍳 레시픽 (Recipick)

"집에 있는 식재료로, 지금 나에게 딱 맞는 레시피"

냉장고 속 재료와 유통기한을 기준으로, 지금 당장 해먹을 수 있는 현실적인 레시피를 추천해주는 서비스


PythonDjangoDRFPostgreSQLAWSDockerLicense


📖 목차


🍳 레시픽을 왜 만들었나요?

"오늘 뭐 해먹지?" — 매일 반복되는 이 고민, 한 번쯤 해보셨을 거예요.

많은 사람들이 요리를 못하는 이유는 "레시피가 없어서"가 아니라 "지금 내 상황에 맞는 레시피가 없어서" 입니다.

  • 🥬 냉장고에 뭐가 있는지 모르겠고
  • ⏰ 유통기한 지나서 버리는 재료가 아깝고
  • 🍽️ 자취·통학으로 매일 끼니 챙기기는 막막하고
  • 📱 레시피 앱은 너무 많은데, 정작 "지금 내가 만들 수 있는 것"은 알려주지 않죠

레시픽은 이 문제에서 출발했습니다. 지금 내 냉장고 기준, 내 식습관 기준, 내 요리 실력 기준으로 — "지금 가능한 선택지" 를 제안하는 서비스예요.


✨ 핵심 가치

가치설명
🥗 현실적인 추천지금 내 냉장고에 있는 재료로 실제로 만들 수 있는 레시피만 보여줍니다
🛡️ 안전한 추천알러지, 비건, 기피 식재료를 원천 차단해서 추천합니다
♻️ 낭비 최소화유통기한 임박 식재료를 사용하는 레시피를 우선 추천해 음식물 쓰레기를 줄입니다
📈 지속적 개인화요리 일지를 쌓을수록 내 취향에 맞는 추천이 점점 정확해집니다

🎯 주요 기능

🔐 1. 회원/사용자 설정

  • 일반 로그인 + 소셜 로그인 (Google · Kakao · Naver) — JWT 기반 인증
  • 취향 설정: 알러지, 기피 식재료, 요리 숙련도 (초보/중급/숙련)
  • 비회원도 레시피 검색 및 상세 조회 가능 (찜·일지 등은 로그인 필요)

🥦 2. 식재료 등록 및 관리

  • 카테고리 기반 선택형 등록 (채소 / 육류 / 해산물 / 유제품 / 가공식품 / 기타 …)
  • 리스트에 없는 식재료는 직접 추가 가능
  • 유통기한은 선택 입력 — 입력하지 않아도 추천은 정상 작동
  • 한국어/영어 식재료 자동 매핑 (Spoonacular API 연동을 위한 다국어 처리)

🔍 3. 레시피 검색 & 추천

  • 키워드 검색 — 메뉴명 / 재료명으로 자유롭게 검색
  • 맞춤 추천 — 보유 식재료 + 유통기한 + 알러지 + 숙련도 종합 반영
  • 두 데이터 소스 통합 활용
    • 🇰🇷 식품의약품안전처 공공데이터 (한식 레시피 1,146개)
    • 🌍 Spoonacular API (해외 레시피)
  • 영문 레시피는 자동 한글 번역 후 노출

🍳 4. 레시피 상세 & 요리 모드

  • 단계별 조리법 표시
  • 단계 중간 타이머 기능 (프론트엔드)
  • 한글 제목 우선 표시 (해외 레시피도 번역본 노출)

📓 5. 요리 일지

  • 조리 완료 → 일지 작성으로 자연스럽게 연결
  • 별점 · 체감 난이도 · 메모 · 사진 기록
  • 월별 캘린더 조회 / 상세 조회
  • 인스타 스토리 공유 (9:16 비율 이미지 자동 생성)
  • 이번 요리로 소진한 식재료 자동 차감

🔔 6. 유통기한 알림

  • 임박 식재료 푸시 알림
  • 헤더 종모양 아이콘 알림 탭에서 모아보기
  • 임박 재료 활용 레시피를 홈 추천에 상단 우선 노출

🧠 추천 알고리즘

레시픽의 핵심은 4가지 요소를 가중치로 종합하는 추천 점수 시스템입니다.

총점 = (재료 매칭 45%) + (유통기한 임박도 40%) + (난이도 적합도 10%) + (개인화 5%)
점수 요소가중치설명
🥕 재료 매칭45%보유 재료와 레시피 재료의 일치율. 부족한 재료가 적을수록 높은 점수
유통기한 임박도40%임박 식재료를 사용하는 레시피일수록 가산점 (낭비 방지 핵심 가중치)
🎚️ 난이도 적합도10%사용자 숙련도와 레시피 난이도의 거리
👤 개인화5%요리 일지 누적 기반 선호 패턴 반영

📂 추천 결과 분류

추천 결과는 사용자가 한눈에 우선순위를 파악할 수 있도록 3개 그룹으로 분류됩니다.

카테고리라벨조건
🚨소비기한 임박 레시피임박/만료 재료를 활용하는 레시피
지금 바로 만들 수 있어요부족한 재료 0개
🛒재료 1-2개만 있으면 가능해요1~2개 추가 재료만 필요

필터링 우선순위: ① 알러지/기피 식재료 제외 → ② 점수 계산 → ③ 카테고리 분류 → ④ 정렬


🛠️ 기술 스택

Backend

영역기술
LanguagePython 3.11
FrameworkDjango 5.2 · Django REST Framework 3.15
AuthSimpleJWT (Access/Refresh 토큰) + Django Allauth
DatabasePostgreSQL (운영) · SQLite (개발)
CacheFile-based Cache (Redis 전환 준비 완료)
StorageAWS S3 (django-storages + boto3)
StaticWhiteNoise (압축·캐시 헤더 자동 처리)
API Docsdrf-yasg (Swagger / ReDoc)

Frontend

  • HTML5 · CSS3 · Vanilla JavaScript
  • Django Templates 기반 SSR + AJAX

External APIs & Data

  • 🌍 Spoonacular API — 해외 레시피 데이터
  • 🇰🇷 식품의약품안전처 공공데이터 — 한식 레시피 1,146개
  • 🌐 deep-translator / googletrans — 영↔한 자동 번역

Infrastructure

  • Docker + docker-compose
  • AWS Elastic Beanstalk (배포)
  • AWS RDS (PostgreSQL)
  • AWS S3 (미디어 파일)
  • Gunicorn (WSGI 서버)

🏗️ 프로젝트 구조

Recipick/
├── config/ # Django 프로젝트 설정
│ ├── settings.py # 환경별 분기 (SQLite ↔ RDS, S3, JWT, CORS 등)
│ └── urls.py # 메인 라우팅 + Swagger
│
├── users/ # 👤 회원 · 인증 · 프로필
│ ├── models.py # User, UserProfile, SocialAccount
│ └── views.py # 일반/소셜 로그인, 마이페이지
│
├── ingredients/ # 🥦 식재료 마스터 / 사용자 보유 / 카테고리
│ ├── models.py # IngredientCategory, IngredientMaster,
│ │ # IngredientNameMapping, UserIngredient
│ ├── utils/ # 한↔영 식재료 매퍼
│ └── views.py
│
├── recipes/ # 🍳 레시피 · 추천 · 검색
│ ├── models.py # Recipe, RecipeIngredient, FavoriteRecipe
│ ├── utils.py # 추천 알고리즘 핵심 로직
│ ├── services/
│ │ ├── spoonacular.py # Spoonacular API 클라이언트
│ │ └── translator.py # 영문 레시피 자동 번역
│ └── management/commands/
│ ├── setup_recipick.py # 통합 초기 셋업
│ ├── load_korean_recipes.py # 한식 1,146개 적재
│ └── fetch_and_translate_recipes.py
│
├── logs/ # 📓 요리 일지
│ └── models.py # RecipeLog (별점, 난이도, 메모, 사진, 공유 이미지)
│
├── templates/ # Django 템플릿
├── static/ # CSS · JS · 이미지 · 폰트 · 사운드
├── fixtures/ # 초기 데이터 (카테고리, 식재료)
│ ├── categories.json
│ └── ingredients.json
├── foodsafetykorea.json # 식약처 한식 원본 데이터
├── hardcoded_recipes.json # 큐레이션 한식 레시피
│
├── Dockerfile
├── docker-compose.dev.yml
└── requirements.txt

🚀 시작하기

사전 준비물

  • Python 3.11+
  • PostgreSQL 14+(또는 SQLite로 빠른 시작 가능)
  • Docker (선택)
  • Spoonacular API Key — 발급 받기

1️⃣ 저장소 클론

git clone https://github.com/your-org/Recipick.git
cd Recipick

2️⃣ 환경변수 설정

루트 디렉토리에 .env 파일을 만들고 아래 값을 채워주세요.

# DjangoSECRET_KEY=your-secret-key-hereDEBUG=TrueALLOWED_HOSTS=127.0.0.1,localhost# Database (선택 — 미설정 시 SQLite 자동 사용)DB_NAME=recipickDB_USER=postgresDB_PASSWORD=your-passwordDB_HOST=localhostDB_PORT=5432# Spoonacular APISPOONACULAR_API_KEY=your-spoonacular-key# AWS S3 (운영 환경)AWS_ACCESS_KEY_ID=your-aws-keyAWS_SECRET_ACCESS_KEY=your-aws-secret# Social OAuthGOOGLE_CLIENT_ID=...GOOGLE_CLIENT_SECRET=...GOOGLE_REDIRECT_URI=...KAKAO_CLIENT_ID=...KAKAO_CLIENT_SECRET=...KAKAO_REDIRECT_URI=...NAVER_CLIENT_ID=...NAVER_CLIENT_SECRET=...NAVER_REDIRECT_URI=...# CORSCORS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8000

3️⃣ 로컬 실행

# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate# 패키지 설치
pip install -r requirements.txt
# DB 마이그레이션
python manage.py migrate
# 🍱 초기 데이터 세팅 (카테고리 + 식재료 + 한식 레시피 1,146개)
python manage.py setup_recipick
# 관리자 계정 생성 (선택)
python manage.py createsuperuser
# 개발 서버 실행 🎉
python manage.py runserver

브라우저에서 http://127.0.0.1:8000 으로 접속하세요!

4️⃣ Docker로 실행

docker-compose -f docker-compose.dev.yml up --build

5️⃣ 초기 데이터 옵션

setup_recipick 명령어는 다양한 옵션을 지원합니다.

# 전체 셋업 (기본)
python manage.py setup_recipick
# 일부 단계만 건너뛰기
python manage.py setup_recipick --skip-fixtures # fixtures 건너뛰기
python manage.py setup_recipick --skip-mappings # 식재료 매핑 건너뛰기
python manage.py setup_recipick --skip-recipes # 한식 레시피 로드 건너뛰기# Spoonacular API 연결 테스트
python manage.py setup_recipick --test-spoonacular
# 테스트 사용자 + 샘플 식재료 생성
python manage.py setup_recipick --create-test-user

📡 API 문서

서버 실행 후 아래 URL에서 자동 생성된 API 문서를 확인할 수 있습니다.

주요 엔드포인트 한눈에 보기

👤 회원 / 인증
MethodEndpoint설명Auth
POST/api/users/signup/회원가입
POST/api/users/login/로그인
POST/api/users/social/login/{provider}/소셜 로그인
POST/api/users/token/refresh/토큰 재발급
POST/api/users/logout/로그아웃
GET/api/users/me/내 정보 조회
PATCH/api/users/me/내 정보 수정 (취향 포함)
DELETE/api/users/me/회원 탈퇴
GET/api/users/check-nickname/닉네임 중복 확인
🥦 식재료
MethodEndpoint설명Auth
GET/ingredients식재료 마스터 목록
GET/ingredients/categories카테고리 목록
GET/ingredients/search?keyword=자동완성 검색
POST/user-ingredients내 식재료 등록
GET/user-ingredients내 식재료 조회
GET/user-ingredients/expiring유통기한 임박 식재료
PATCH/user-ingredients/{id}식재료 수정 (유통기한 등)
PATCH/user-ingredients/{id}/consume소비 처리
DELETE/user-ingredients/{id}삭제
🍳 레시피
MethodEndpoint설명Auth
GET/recipes?sort=recommend추천순 레시피 목록
GET/recipes/{id}레시피 상세
GET/recipes/search?keyword=레시피 검색
POST/recipes/{id}/favorite찜하기 / 취소
GET/recipes/favorites찜한 레시피 목록
📓 요리 일지
MethodEndpoint설명Auth
POST/api/logs/일지 작성
GET/api/logs/월별 일지 조회
GET/api/logs/{id}/일지 상세
PATCH/api/logs/{id}/일지 수정
DELETE/api/logs/{id}/일지 삭제

📦 MVP 범위

✅ MVP에 포함된 기능

  • 사용자 정보 설정 (알러지 / 기피 재료 / 숙련도)
  • 식재료 카테고리 기반 등록 + 직접 추가
  • 보유 식재료 + 유통기한 기반 추천
  • 키워드 레시피 검색
  • 한식 + 해외 레시피 통합
  • 요리 일지 작성 / 조회 / 인스타 공유
  • 유통기한 임박 알림

⏳ 향후 확장 예정

  • 📸 사진 인식 기반 식재료 자동 등록
  • 🎥 레시피 설명 영상 / 영상 일지
  • 🍴 보유 조리 도구 기반 필터링 고도화
  • 🤝 요리 일지 커뮤니티 / 팔로우 기능

👥 팀원

김경원오채령김서윤박민욱최명규

@kkw610

@chrry03

@kdhye1119

@minuk1749

@YanggalleDolmery
PM / BEBEFEFEFE

📄 라이선스

이 프로젝트는 학습 및 포트폴리오 목적으로 제작되었으며, MIT 라이선스를 따릅니다.

레시피 데이터 출처:



🥕 오늘 뭐 해먹지? 레시픽이 알려드릴게요.

About

집에 있는 식재료로 지금 나에게 딱 맞는 레시피를 추천해주는 웹 서비스입니다👨‍🍳

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages