Skip to content

SSAFY 1학기 project 영화 추천 및 검색 사이트

Notifications You must be signed in to change notification settings

yewon830/YeMin_Studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YeMin Studio


  • 영화 추천 프로젝트

  • SSAFY 9th 관통 프로젝트

  • 프로젝트 기간 : 2023.05.17 ~ 2023.05.26

1️⃣ 팀원 정보


이름 담당 영역
권민재 - 프론트엔드(10%) / 백엔드(90%)
- DB 모델링, 데이터 생성, 데이터 로직 작성, 프론트엔드 일부 디자인
정예원 - 프론트엔드(90%) / 백엔드(10%)
 - 백엔드 데이터 받아 프론트엔드 기능 구현 및 디버깅, 테스트, 대부분의 디자인 구현

2️⃣ 목표 서비스 구현 및 실제 구현 정도


목표 서비스

  1. 홈페이지

    • 배경으로 사진이 5초마다 자동으로 넘어가게 만들기
  2. 영화 홈

    • 필터 기능 (장르, 평점, 개봉년도)

    • 정렬 기능 (가나다 순, 인기 순, 평점 순)

    • 페이지 설정

    • 항목 마우스 오버시 제목과 평점 제공

  3. 영화 상세 창

    • 모달 창으로 구현

    • youtube 예고편 영상 출력

    • 찜, 좋아요

    • 줄거리 (더보기, 닫기) 내용 보기

    • 리뷰 보기, 리뷰 작성

    • 해당 영화와 비슷한 작품 보기

4- 영화 추천

  • 유저 기반 추천

5- 검색 결과

  • 줄임말

  • 띄어쓰기

  • 붙여쓰기

6- 프로필

  • 프로필 이미지

  • 리뷰 리스트

7- 내 컨텐츠

  • 찜한 콘텐츠

  • 좋아요 한 콘텐츠

실제 구현 정도

  1. 홈페이지

    • 배경으로 사진이 5초마다 자동으로 넘어가게 만들기

    • 홈에서 영화 홈으로 넘어가는 버튼   

2- 영화 홈

  • 정렬 기능 (가나다 순, 인기 순, 평점 순)

  • 한 페이지 당 30개씩 나눠서 페이지 설정

  • 정렬 상태에서 페이지 이동 해도 정렬 유지

  • 항목 마우스 오버시 제목과 평점 제공

3- 영화 상세 창

  • 모달 창으로 구현

  • youtube 예고편 영상 출력

  • 찜, 좋아요(아이콘으로 설정)

  • 줄거리 (더보기, 닫기) 내용 보기

  • 리뷰 보기, 리뷰 작성

4- 영화 추천

  • 유저 기반 추천(유저가 좋아요 눌렀던 영화들의 장르 데이터를 기반으로 5개씩 랜덤으로 추천하기)

5- 검색 결과

  • 줄임말 (ex. 가오갤 ⇒ 가디언즈 오브 갤럭시)

  • 띄어쓰기 (ex. 가 디 언 즈 오 브 갤 럭 시 ⇒ 가디언즈 오브 갤럭시)

  • 붙여쓰기 (ex. 가디언즈오브갤럭시 ⇒ 가디언즈 오브 갤럭시)

6- 프로필

  • 리뷰 리스트 출력

7- 내 컨텐츠

  • 찜한 콘텐츠 (5개씩 정렬해서 넘기기 버튼으로 출력)

  • 좋아요 한 콘텐츠 (5개씩 정렬해서 넘기기 버튼으로 출력)

3️⃣ 데이터베이스 모델링


Model ERD

최종프로젝트erd.png

Component 구조

Movie Component.drawio.png

4️⃣ 영화 추천 알고리즘에 대한 기술적 설명


영화 추천은 유저가 웹 사이트를 이용하면서 좋아요를 눌렀던 영화들의 장르를 기반으로 영화를 추천해주는 방식이다

  • 좋아요 누른 영화들에 대해 장르 데이터를 뽑아낸다

  • 이렇게 뽑아낸 장르들을 하나의 리스트에 다 담는다

  • 이렇게 모은 장르 데이터 들을 내림차순으로 정렬하고 카운트 하여 가장 인기있는 장르를 뽑아낸다

  • 영화 전체 데이터에서 가장 인기있는 장르 정보를 가진 영화를 모두 저장한다

  • 저장된 영화 데이터에서 내가 좋아요 누른 영화가 포함되어있다면 제외 시킨다

  • 위의 데이터에서 영화 항목의 개수를 확인하여 5개가 안되면 그다음으로 인기있는 장르 정보를 가진 영화를 추가로 저장한다

  • 이제 이 영화리스트에서 5개만 랜덤으로 뽑아내서 보여준다

5️⃣ 서비스 대표 기능에 대한 설명


로그인, 로그아웃, 회원가입, 회원 정보 수정

회원가입시 닉네임을 추가하여 회원 정보를 수정할때 닉네임은 변경할 수 있게 하여 username 이라는 고유 필드는 남고 변경 가능한 닉네임을 가질 수 있다

마이페이지

유저 정보 조회, 유저가 남긴 리뷰 목록 조회

마이 컨텐츠

유저가 좋아요한 영화 목록 조회

유저가 찜한 영화 목록 조회

개인 맞춤 영화 추천

추천 받은 5개의 영화를 그냥 화면에 보이게 한것이 아니다

화면에서 돌아가게 표현

새로 추천받기 누르면 새로 5개를 받아 화면에 출력

영화 홈

정렬 기능을 통해 3가지의 정렬 기준으로 영화 목록 조회

페이지 네이션 기능 (1~34 page)

영화 마우스오버 : 카드 크기 증가 영화 제목, 평점 정보 제공

검색 기능

영화를 검색할 때 일반적이 웹사이트에서는 줄임말로 적어도 결과가 나오는것을 볼 수 있었다

그래서 줄임말, 띄어쓰기, 붙여쓰기 이렇게 3개의 기능이 가능하고 영화의 제목 전체가 기억이 안나고 한글자만 기억해도 검색하면 그 글자를 포함한 영화들을 보여줍니다

리뷰

리뷰는 각 영화에 대해서 리뷰가 달리고 해당 유저만 수정 삭제 할수 있다

6️⃣ 느낀점


권민재

이번 최종 프로젝트를 시작할때 처음부터 백엔드를 중점으로 맡아서 하고 싶었다. 데이터 생성부터 데이터베이스 모델 제작 등 프로젝트에 필요한 토대를 만드는 일을 하게 되었다 하지만 내가 의도한 것과는 내가 만든 4개의 json데이터가 django에서 load 단계에서 외래키 문제로 에러가 계속 발생하여 DB만드는 단계에서 계속 막혔었다 하지만 에러 해결을 위해 데이터의 참조되는 필드들의 값들을 비교해본결과 누락된 값이 존재했고 데이터를 수정하는것 보다 데이터를 다시 만드는방법이 더 나은 선택이라 느껴서 최종적으로 데이터 제작만 5번정도 했던것 같다 다만 이 프로젝트를 진행하면서 django에서 프론트의 요청에 맞춰서 데이터를 응답하는 것에 대해 내가 진짜로 함수를 못나게 짜는것이 아닌이상 화면에서 원하는 것을 띄우는건 프론트의 역량이 중요하다고 뼈져리게 느끼게 되었다 그래서 페어 혼자 프론트에서의 모든것을 맡기는 것이 페어에게 부담이 크다보니 중간중간에 코드도 수정하고 css 스타일도 손보고 등 결국 프론트에서 완전 기본만 손댄 수준이었다 이번 프로젝트의 결과가 처음에 원했던 대로 되지는 않았지만 끝나고 나서 다시 이 프로젝트를 수정해서 처음에 원했었던 수준까지 끌어올리고 싶어진다

정예원

처음으로 개발 프로젝트를 진행했는데, 배울 점이 많다고 느꼈습니다. 아직 비동기 통신, axios, await에 대한 이해가 부족하고, css나 동적인 홈페이지 구현(modal 띄우기 등)에 대해서도 모르는 것이 많았습니다. 구현에 완성했다고 해도 실제로 원하는 방식으로 동작하지 않는 경우도 많았습니다. 앞으로 배운 교재, 강의 내용을 꾸준히 복습하면서 배운 것을 체화하고, 2학기의 프로젝트를 통해 심화적인 탐구를 이어나가야겠다고 생각했습니다.     그리고 오류나 문제가 발생했을 때 오래 고민하는 것이 매우 의미 깊었던 시간이었습니다. modal을 띄우기 위해서 약 3일간 고생했었을 때 무모하다고 느꼈지만, 어째서 동작하지 않는지 고민하는 과정에서 얻는 것이 많았습니다.

About

SSAFY 1학기 project 영화 추천 및 검색 사이트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •