Skip to content
@GustoMate

GustoMate

Hi there 👋

자취생들을 위한 식재료 교환 플랫폼 생성

24-1 YBIGTA 컨퍼런스

자취생들을 위한 식재료 교환 플랫폼 GustoMate입니다. Gusto는 스페인어로 "맛있는 음식을 먹는 즐거움"을 Mate는 "친구"를 의미합니다. 저희 팀명은 "음식의 즐거움을 나누는 친구"를 의미합니다.

FastAPI MySQL Python chatGPT AWS
Python OpenAI
React Native

목차

문제 정의

  • 자취생이 요리를 하기 위해 식재료를 구매하면 필요보다 많은 양을 구입하게 되어 버리게 되는 경우가 빈번하게 발생합니다. 이를 해결하기 위해 나에게는 불필요하지만 누군가에게는 필요한 식재료를 소량으로 구매할 수 있는 자취생들간의 식재료 교환 플랫폼을 기획하게 되었습니다. 내가 가진 식재료에 한두가지만 추가되었을 때 만들 수 있는 레시피가 확연하게 증가한다는 것을 유저가 인식하게 하여 마켓플레이스를 탐색하게 하고 이 과정을 거듭하여 자취생들간의 상생 커뮤니티를 형성하는 것을 목표로 하였습니다.*

데이터셋

데이터셋 (사용한 데이터셋, 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: 각 판매 상품의 상세 내용을 확인 가능.
  • 기타 추가 기능: 유통기한 임박도에 따라 다른 색깔로 확인 가능.

예시 페이지

사용자 선호도 조사

사용자 냉장고 & OCR 재료추가

레시피 추천

마켓

결과 및 주요 기능

(평가 지표, 구현한 핵심 기능 등)

팀 구성

이름 역할
(팀장)이xx DS 모델링
박xx DS 백엔드
이xx DE 프론트/백엔드
류xx DE 백엔드
김xx DA 프론트
최xx DA 모델링
오xx DA 모델링

Popular repositories Loading

  1. Crawling Crawling Public

    Data Collection

  2. Modeling Modeling Public

    Jupyter Notebook

  3. frontend frontend Public

  4. backend backend Public

    Java

  5. backend_fastAPI backend_fastAPI Public

    Python

  6. .github .github Public

    1

Repositories

Showing 6 of 6 repositories

Top languages

Loading…

Most used topics

Loading…