📜 서비스 내용
- 평소 아침에는 무엇을 입을지, 점심에는 무엇을 먹을지, 저녁에는 무엇을 볼지 고민하게 되는데, 이러한 고민을 해결해주는 웹 플랫폼을 개발했습니다.
- 사용자는 이메일로 회원가입할 수 있으며, 구글과 네이버 로그인을 통해 간편하게 가입 후 이용할 수 있습니다.
🛠️ 기술 스택
- HTML5, CSS3, JavaScript, JSP
- JAVA 17, Spring Boot 3.3.2, Python 3.9.13, Flask 3.0.3, MySQL, MongDB, Github
🖥️ 개발 내용
추천 로직 개발 (내가 담당한 부분)
- 🍣 뭐먹지
- 메뉴 추천: 메뉴 카테고리와 메뉴 정보가 CSV 파일로 저장되어 있으며, 사용자가 카테고리를 선택하면 해당 카테고리의 메뉴를 랜덤으로 추천합니다.
- 위치 기반 음식점 추천: 추천된 메뉴와 사용자의 현재 위치(위도, 경도)를 활용하여, 카카오맵 API를 통해 주소를 추출하고, 키워드 검색 기능으로 주변 음식점을 추천합니다.
- 음식점 리스트 확인 및 관리: 추천된 음식점 목록을 확인할 수 있으며, 마음에 드는 음식점에 좋아요를 누르면 해당 정보가 DB에 저장됩니다. 이를 통해 사용자는 다른 음식점도 계속해서 추천받을 수 있습니다.
- 👚 뭐입지
- 카테고리 설정: 성별, 의류 카테고리, 세부 카테고리를 29CM 쇼핑몰의 XPath와 CSS Selector 정보와 함께 CSV 파일에 정리되어 있습니다.
- 실시간 상품 추천: 사용자가 카테고리를 순차적으로 선택하면, 해당 세부 카테고리의 상품을 29CM 쇼핑몰에서 실시간으로 크롤링하여 인기 상품 중 하나를 랜덤으로 추천합니다.
- 상품 정보 제공 및 구매 연동: 추천된 상품의 이름, 제조사, 가격 정보를 제공하며, 버튼 클릭 시 해당 쇼핑몰 페이지로 이동해 바로 구매할 수 있습니다. 다른 제품도 추천 받을 수 있으며, 마음에 드는 상품은 좋아요를 눌러 DB에 저장할 수 있습니다.
웹 애플리케이션 구조 설계 및 유지보수성 향상 방안
- Spring Boot 프레임워크를 기반으로 설계되었으며, 데이터베이스로는 MySQL을 사용하고 있습니다. Gradle을 빌드 도구로 선택하여 프로젝트의 의존성 관리 및 빌드 과정을 자동화하였습니다.
- 각 엔티티 클래스는
@Entity
어노테이션을 사용하여 데이터베이스 테이블과의 관계를 명시합니다.
- 비즈니스 로직을 처리하는 계층으로, Repository 계층을 통해 데이터를 조작하며, 데이터 처리 규칙을 정의합니다. 이 계층은
@Service
어노테이션을 사용하여 Spring의 서비스 컴포넌트로 등록됩니다.
추천 로직 개발
- 📺 뭐볼까
- 카테고리 선택: 영화 또는 TV 프로그램 중 선택할 수 있으며, 선택 후 장르, 출연진 등 조건을 설정할 수 있습니다.
- 컨텐츠 추천: 설정된 조건에 따라 TMDB API를 활용하여 MongoDB에 저장된 영화 및 TV 콘텐츠 중에서 가장 인기 있는 콘텐츠를 추천하고, 나머지는 랜덤으로 선택하여 추천합니다.
- 세부 정보 및 트레일러 제공: 추천된 콘텐츠의 포스터를 클릭하면 세부 정보를 확인할 수 있으며, API를 통해 트레일러 정보를 요청합니다. 트레일러가 있을 경우, 재생 버튼이 활성화되어 바로 감상할 수 있습니다.
Github flow
- 프로젝트의 공통 기능 개발을 위해 GitHub을 사용했습니다. 먼저, main 저장소를 포크(fork)한 후, Issues를 생성하여 작업할 내용을 정의하고, 각 작업에 대해 별도의 브랜치를 만들어 개발했습니다. 작업이 완료되면 commit과 push를 통해 코드를 업데이트하고, 팀장과 함께 코드 리뷰를 거쳐 merge하였습니다.