Skip to content

Ryuuhj/Rafe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

201 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rafe

📜 서비스 내용

❓문제 정의 사용자가 자신이 보유한 재료를 사용하기 위해서는 레시피들을 일일이 확인해 봐야 하는 번거로움이 존재함. 커피를 직접 내려마시는 경우, 다양한 추출 조건들을 비교하기 어려움.

❗프로젝트의 목표 : 사용자 친화적인 홈카페 레시피 검색 서비스 제공

사용자의 보유 재료, 알레르기 정보 등을 고려한 레시피 검색, 상황에 맞는 레시피 추천 기능을 제공하며 재료 관리를 돕습니다. 커피를 내릴 때 물 온도, 원두 분쇄 정도 등을 기록하고 비교할 수 있는 커핑 노트 작성을 돕습니다.

📌 해당 서비스의 주요 기능

  1. 재료 관리 및 구매

    • 사용자 보유 재료 추가 및 삭제 가능
    • 우선 소진 재료 설정 : 사용 기한이 임박한 재료 별도로 체크
    • 특정 재료의 최저가 조회 및 구매 사이트 연결
  2. 레시피 맞춤 검색

    • 사용자가 지정한 검색 옵션 기반으로 조건에 맞는 레시피 검색
      • 검색 옵션 : 키워드, 카테고리, 제외 재료, 포함 재료
      • 알레르기 재료를 포함하고 있는 레시피는 검색에서 자동 제외됨
    • 레시피 상세 화면
      • 필요한 재료와 현재 보유한 재료의 일치 여부를 가시적으로 표현
      • 해당 레시피를 좋아요(북마크)할 수 있음
  3. 레시피 제안 및 보관

    • 특정 레시피를 북마크(좋아요) 할 수 있음

    • 인기순 레시피

      좋아요 수를 기반으로 인기순 레시피 추천

    • 우선 소비 재료 기반 추천

      사용자가 빠르게 사용하고 싶은 재료로 체크한 재료 중, 해당 재료들을 위주의 레시피 추천

  4. 커핑 노트 기록

    커핑 노트 : 커피 테이스팅 노트로, 특정 원두에 대한 추출 컨디션(추출 시간, 분쇄도, 추출 온도, 맛 평가 등)의 기록물

    • 추출한 에스프레소의 맛과 향을 결정짓는 주요한 요소들을 기록해 자체적인 피드백, 다양한 도전을 도움
    • 추출 방식, 원두명, 별점, 기록 날자 별 기록 미리 보기 제공
    • 최신순, 별점순으로 정렬 가능

🛠 시스템 구성도 및 기술 스택

  • Spring Boot, JPA, Querydsl
  • AWS EC2, AWS RDS, MySQL
  • Beautiful Soup

🖥 사용한 기술/지식/프로그램, 기여한 역할

  • 서버의 메인 프레임워크는 SpringBoot를 사용했습니다. MVC 기반 계층형 구조로 프로그램을 설계했습니다. 서비스 특성 상 쿼리 작성 빈도가 높을 것이라 예상했고 JPA를 활용해 객체 지향적으로 데이터를 관리하고, 재사용성을 높이고자 했습니다. 그리고 RESTful 원칙에 따라 API를 설계하고자 했습니다.
  • MySQL을 사용해 관리했으며 관계형 데이터베이스 방식으로 DB를 설계했고, 테이블을 분리하며 일대일, 일대 다 매핑을 수행함으로써 데이터의 중복 최소화를 보장하고자 했습니다.
  • 배포 시, 서버 호스팅을 위해 AWS EC2를 사용했고 데이터베이스 연동을 위해 RDS 서비스를 사용했습니다.
  • 파이썬에서 Beautiful Soup 라이브러리를 이용해 레시피의 정보를 추출하는 크롤러 함수를 작성했습니다.

  • 네이버 쇼핑 API를 활용해 사용자가 구매하기 위해 담아둔 제품에 대한 최저가 정보를 제공했습니다.
  • 사용자의 편의성 개선을 위해, 현재 사용자가 소유한 재료 정보와 레시피의 재료 정보 간 일치율을 계산해 제공했습니다.
  • 키워드, 카테고리, 포함 재료, 제외 재료, 알러지 유발 재료 처럼 다양한 검색 조건을 사용해 유연한 검색 기능이 주요 기능 중 하나였습니다. 따라서 검색 조건에 따른 동적 쿼리를 구성하기 위해 Querydsl 프레임워크를 활용했으며, 이때 Null값을 핸들링 하기 위해 BoolExpression을 사용했습니다.

💡 결과 및 성과

  • 서버를 구성해보며 스터디를 통해 배웠던 SpringBoot를 활용하고 익힐 수 있었습니다.
    • 시스템을 계층 구조로 나타내는 방법과 전반적인 흐름을 익혔고, MVC 구조의 개괄적인 이해가 가능했습니다.
  • 클라이언트-서버를 분리해 진행하는 첫 팀프로젝트 경험을 통해, Slack과 Git을 사용해 협업하는 방법에 대해 배웠습니다.
    • 요구사항을 분석하고 노션으로 API 명세서를 작성해 공유하며, 그것을 바탕으로 프론트와 소통하는 방법에 대해 배웠습니다.
  • 정의된 요구사항을 바탕으로 관계형 데이터 베이스를 설계하는 방법을 익혔으며, 데이터베이스를 좀 더 효율적으로 다룰 수 있게 돕는 JPA와 Querydsl을 활용했습니다.
    • 효율을 결정짓는 가장 큰 요소는 데이터베이스 설계 구조라는 것을 알게 되었습니다.
  • 기존에 기획했던 기능을 모두 구현할 수 있었고, 동적 검색 기능을 추가해 사용성을 개선할 수 있었습니다.

About

홈카페 레시피 추천 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors