Skip to content

BongSangKim/Mijung

Repository files navigation

미정(味定)

백치미 (구미 1반 7조 D107)

미정(味定)

프로젝트 기간 : 2024.08.19~ 2024.10.11 (8주)


노션 | 피그마


👇 미정(味定) 소개 및 시연 영상 👇

미정(味定) 시나리오는 👉여기👈에서 더 자세히 보실 수 있습니다.



🍙 미정(味定) 서비스 설명

📌 개요

사용자가 현재 식재료 가격 변동을 확인하고, 연관된 식재료와 레시피를 추천받아 합리적이고 맛있는 요리를 준비할 수 있도록 도와주는 통합 플랫폼입니다. 분산처리를 활용하여 대용량 데이터를 효율적으로 분석하고, 사용자에게 맞춤형 추천을 제공합니다.

💡 미정(味定) 목적

  • 물가 변동을 확인하여 저렴한 식재료를 한눈에 확인할 수 있습니다.
  • 사용자가 원하는 식재료에 맞는 레시피를 추천 받을 수 있습니다.
  • 사용자가 원하는 식재료와 많이 쓰이는 식재료를 추천 받을 수 있습니다.

🍀 사용자에게 식재료 시세와 레시피 제공

🙋🏻‍♂️ 사용자 목표

요리를 좋아하는 사람들이 온라인으로 식재료에 가격 정보와 레시피에 대한 정보를 얻을 수 있는 플랫폼

🖥️ 미정(味定) 서비스 화면

랜딩 페이지

랜딩 페이지

메인화면 - 식재료 가격

메인

식재료 - 목록, 검색

식재료 목록 조회

식재료 상세보기 - 식재료 정보, 식재료 가격추이 그래프, 네트워크 그래프, 레시피 추천

식재료 상세보기

레시피 - 목록, 검색

레시피 목록 조회

레시피 상세보기 - 레시피 재료, 조리 방법, QR코드

레시피 상세보기

나만의 요리 도우미 - 식재료 추가, 삭제, 검색

나만의 요리 도우미 - 식재료 추가, 삭제, 검색

나만의 요리 도우미 - 식재료 추천

나만의 요리 도우미 - 식재료 추천

나만의 요리 도우미 - 추천 레시피

나만의 요리 도우미 - 추천 레시피

찜한 레시피

찜한 레시피



🔎 주요 기능

  • 식재료 가격 제공
  • 식재료 목록 검색
    • 검색어 자동완성
  • 식재료 가격 추이 그래프
    • 시계열 분석
  • 식재료 네트워크 그래프
    • 코사인 유사도
  • 레시피 목록 검색
    • 검색어 자동완성
  • 선택한 식재료 기반 식재료/레시피 추천
    • 식재료 추천 : 연관성 분석(장바구니 분석)
    • 레시피 추천 : 코사인 유사도

기술 관점

  • CI/CD 파이프라인 구축 및 배포 자동화

  • FrntEnd, BackEnd, DB를 각 docker 컨테이너로 관리하여 빌드 및 배포를 통해 안정적인 CI / CD 구축

  • 임베딩과 코사인 유사도

    • 단어 임베딩과 방법론 : 단어를 컴퓨터로 계산하기 위해서는 이를 계산 가능한 실수로 표현해야 합니다. 즉, 단어를 공간에 매핑하는 것으로 이는 '임베딩'이라고 합니다. 임베딩에는 두 가지 주요 방법론이 있습니다: CBOW(Continuous Bag of Words)와 Skip-gram입니다.
    • CBOW 방법론 : CBOW는 특정 단어의 주변 단어들을 활용해 그 단어를 예측하는 방법입니다. 예를 들어, "the quick brown fox"라는 문장에서는 "quick"이라는 단어를 예측하기 위해 "the", "brown", "fox"라는 단어들을 입력으로 사용합니다. 이를 통해 "quick"을 공간 상에 잘 매핑합니다.
    • Skip-gram 방법론 : Skip-gram은 반대로, "quick"이라는 단어를 사용해 "the", "brown", "fox"를 예측할 수 있도록 "quick"을 공간에 매핑하도록 하는 방법입니다. 일반적으로 Skip-gram 방법론이 많이 사용되지만, 본 프로젝트에서는 여러 재료 중 하나를 예측하는 가정에 따라 CBOW 방법론을 활용해 임베딩을 진행했습니다,
    • 코사인 유사도 : 코사인 유사도는 두 벡터가 이루는 각도를 통해 벡터가 얼마나 유사한지를 측정합니다. 유사도가 1에 가까울수록 두 벡터가 유사하다고 정의합니다.
  • 장바구니 분석 : 장바구니 연관 규칙 기반 추천 시스템을 사용하여 레시피에 사용된 식재료와 관련된 패턴을 분석하여, 사용자가 선택한 식재료와 레시피에서 많이 사용된 식재료를 추천합니다. Apache Spark의 FPGrowth 알고리즘을 활용하여 대규모 데이터를 빠르게 분석합니다.

  • 시계열 분석 :

  • 사용자 맞춤형 시각화 도구 : 네트워크 그래프, 시세 차트 등 다양한 시각화 도구를 사용하여 데이터를 직관적으로 표현하고, 사용자 경험을 개선합니다.

기능 관점

  • 가격 변동 분석 : 사용자가 식재료에 대한 가격 추이를 확인하고, 예측하여 식재료에 대한 정보를 확인할 수 있습니다.
  • 맞춤형 추천 기능: 사용자의 식재료 선택에 따라 적합한 레시피와 식재료를 추천하여, 요리 준비 과정을 단순화합니다.
  • 종합적인 식재료 정보 제공: 가격 변동 분석, 네트워크 그래프 등을 통해 사용자가 필요한 모든 정보를 종합적으로 제공합니다.

🔨 개발 환경

🛠️Backend

  • IntelliJ
  • Spring boot
  • Spring-boot-jpa
  • Java 17
  • MySQL
  • Visual Studio Code
  • Hadoop/Spark
  • Gradle
  • Python
  • FastAPI

🛠️Frontend

  • Visual Studio Code
  • React
  • Tanstack React Query
  • Tailwind
  • Zustand
  • TypeScript
  • D3.js
  • Sigma.js
  • vis.js

🛠️CI/CD

  • AWS EC2
  • Docker
  • Nginx
  • Jenkins

🔨 기술 스택

1. 🛠️ 아키텍처 설계

  • 프론트엔드

    • React.js : UI/UX 설계
    • Zustand : 상태 관리
    • Chart.js/D3.js : 데이터 시각화
  • 백엔드

    • Java + Spring Boot : API 서버 구축
    • Python : 데이터 수집, 분석, 크롤링 로직 구현
  • 데이터베이스

    • MySQL : 식재료 및 레시피 데이터 관리
  • 분산 처리 및 데이터 분석

    • Hadoop을 사용해 대규모 데이터를 분산 처리
    • Apache Spark를 활용한 데이터 분석

    2. ☁️ 클라우드 인프라 및 배포

  • 클라우드 인프라

    • AWS EC2 : 웹 서버와 데이터베이스 서버 호스팅
  • CI/CD

    • Jenkins 또는 Gitlab webhook으로 지속적 통합/배포(CI/CD) 파이프라인 구축
    • 모니터링 및 로깅 : AWS CloudWatch로 서버 및 애플리케이션 모니터링

📚 파이썬 라이브러리 요약

  • pandas: 데이터 처리
  • numpy: 벡터 연산
  • mlxtend: 카테고리별 연관 규칙 학습
  • collections: 빈도 분석
  • scikit-learn: 코사인 유사도 계산
  • APScheduler: 작업 스케쥴러
  • fastapi: 서버
  • PyMySQL: DB
  • pytest: 테스트

📋 미정(味定) 관련 문서

기능 명세서

기능 명세서

와이어프레임

와이어프레임

서비스 아키텍처

서비스 아키텍처 이미지

ERDiagram

ERD 이미지

API 명세서

API 명세서

👩‍💻👨‍💻 Member

정지원 김소연 박태우
팀장 / BE BE BE
@Jiwon96 @so-oyeon twey163@gmail.com
권대호 김봉상 신건우
FE FE 데이터 시각화
@vaaast-lake @BongSangKim twey163@gmail.com

About

빅데이터 분산처리를 통한 식재료/레시피 추천서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors