자취생들을 위한 식재료 교환 플랫폼 GustoMate입니다. Gusto는 스페인어로 "맛있는 음식을 먹는 즐거움"을 Mate는 "친구"를 의미합니다. 저희 팀명은 "음식의 즐거움을 나누는 친구"를 의미합니다.
1인가구의 증가와 지속적인 물가 상승이 일어나고 있습니다. 하지만 한 번에 구입해야 하는 식재료의 양이 너무 많아 낭비가 발생합니다. 이를 해결하기 위해 식재료 교환 플랫폼을 만들고 필요한 식재료를 소량으로 교환하면 좋겠다고 생각했습니다.
데이터셋 (사용한 데이터셋, API 등)
- 음식 레시피 - https://www.menupan.com/ 에서 1600개의 레시피를 크롤링 했습니다. 각 레시피 마다 난이도, 칼로리, 만드는데 필요한 주재료/부재료/양념, 만드는데 걸리는 시간, 만드는 방법 등 필요한 정보를 크롤링을 통해 얻어왔습니다.
- OpenAi API - 추천 시스템 B에서 사용자의 기분과 최근에 먹은 메뉴를 반영해 최종메뉴와 그 이유를 추천합니다.
- mySQL - 백엔드 DB로 사용했습니다.
- Fast API - 백엔드
- Naver Clova OCR - 영수증 인식 OCR
- React Native - 프론트엔드
모델링 기능 설명:
-
추천시스템 A: 사용자가 보유한 식재료들만 사용해서 만들수 있는 요리 추천
-
추천시스템 B: 사용자의 선호도를 반영, 마켓에 있는 식재료들을 이용해 만들수 있는 요리 추천
- 1단계: 각 음식을 벡터화(맵기, 테마, 칼로리, 난이도 등 이용)
- 2단계: CF를 이용해 벡터화 한 음식들과 input으로 제공받은 사용자 정보 간의 코사인 유사도 계산
- 3단계: 유사도가 가장 높은 10개의 메뉴 필터링
- 4단계: OpenAi api를 이용, 사용자의 기분과 사용자가 최근에 먹은 메뉴를 반영해 3가지 메뉴를 이유와 함께 추천
백엔드 기능 설명:
- 회원가입, 사용자 선호도, 냉장고 식재료, 식재료 교환 마켓, 레시피 추천 기능 제공
- 백엔드 깃허브
-
pip install "fastapi[all]"
-
pip install python-dotenv
-
pip install -r requirements.txt
-
준비 root 파일에 .env 생성 (openai key 유출 조심)
-
실행 터미널에서
uvicorn main:app --reload
실행 http://127.0.0.1:8000/docs 에서 API 문서 확인 가능
파일구조:
GustomateApp
├── account
│ ├── CRUD.py
│ ├── router.py
│ └── schema.py
├── database
│ ├── database.py
│ └── models.py
├── dependency
│ └── dependencies.py
├── fridge
│ ├── CRUD.py
│ ├── router.py
│ └── schema.py
├── friend
│ ├── CRUD.py
│ ├── router.py
│ └── schema.py
├── ingredients
│ ├── CRUD.py
│ ├── router.py
│ └── schema.py
├── market
│ ├── CRUD.py
│ ├── router.py
│ └── schema.py
├── preference
│ ├── CRUD.py
│ ├── router.py
│ └── schema.py
├── recipe
│ ├── CRUD.py
│ ├── router.py
│ └── schema.py
├── README.md
├── config.py
├── create_Gustomate_Database.sql
├── main.py
└── requirements.txt
- Login & Preference: 회원가입과 동시에 사용자의 레시피 선호도 정보 받기, 로그인으로 사용자 정보 전달 가능.
- Fridge Page: 사용자의 냉장고에 어떤 식재료가 있는지 유통기한과 함께 확인 가능, 식재료를 직접 추가 / OCR로 추가하는 페이지 추가.
- OCR Page: 사진 업로드에 따라 OCR & GPT API를 돌려 식재료 종류 & 품목 확인 가능. 유통기한 입력 가능.
- Recipe Page: 사용자의 선호도 input을 버튼으로 받아 모델로 전달, 레시피 추천 목록 띄우는 페이지.
- Recipe_Detail Page: 각 레시피를 선택할 경우 레시피의 상세 정보 확인 가능 (예: 난이도, 조리시간, 알레르기, 맵기, 테마, 국가분류, 재료목록, 레시피 과정 등)
- Market Page: 판매 중인 상품 목록 확인 & 원하는 품목 검색 기능 존재.
- Product_Detail Page: 각 판매 상품의 상세 내용을 확인 가능.
- 기타 추가 기능: 유통기한 임박도에 따라 다른 색깔로 확인 가능.
npm install
npm start
a
for android,i
for ios
(평가 지표, 구현한 핵심 기능 등)
이름 | 팀 | 역할 |
---|---|---|
(팀장)이동진 | DS | 모델링 |
박수연 | DS | 백엔드 |
이우흥 | DE | 프론트/백엔드 |
류지현 | DE | 백엔드 |
김채연 | DA | 프론트 |
최정현 | DA | 모델링 |
오승옥 | DA | 모델링 |