[SSAFY Project] 영화 추천 커뮤니티 사이트 AMU 총정리

작성:    

업데이트:

카테고리:

태그: ,

AMU 프로젝트 게시물 목록


기록 종합

AMU Github


AMU Notion


AMU Figma

  • AMU Figma 링크
  • 와이어프레임, 컴포넌트 구조 가시화 디자인 tool
  • 댓글 기능을 활용한 쌍방향 소통


파일 구조


프로젝트 소개

image-20220527025518107


아무의 어원

영화 추천 커뮤티니 사이트인 아무는, 영화에 대한 기록들을 남긴다는 의미인 카이브 오브 비(Archive of Movie)와, 고대 그리스의 소통의 장이라는 의미로 고라 오브 비(Agora of Movie), 그리고 아무 영화나 추천해준다는 말장난을 이용하여 만들어진 이름


강조점

커뮤니티에서 자신과 비슷한 취향의 유저, 혹은 정반대의 유저들을 만나 다양한 영화 추천


가. 개발 단계

1) 개발 기간

📅2022.05.11 ~ 2022.05.26


2) 와이어 프레임

디자인 툴 Figma를 이용하여 제작(📂Figma 링크)

image-20220527023739252

  • 페이지별 UI 구성 기획
  • 댓글 기능을 활용해 팀원간의 비동기적 쌍방향 소통


3) ERD

draw.io

ERD drawio

  • Django DB 구성에 필요한 roadmap 설계


4) API 설계

ㄱ. main project

HTTP verb URL 패턴 설명 및 연결 urls/함수
  admin/ admin.site.url
  api/v1/community/ include(’community.urls’)
  api/v1/movies/ include(’movies.urls’)
  api/v1/accounts/ include(’accounts.urls’)
  api/v1/accounts/ include(’dj_rest_auth.urls’)
  api/v1/accounts/signup/ include(’dj_rest_auth.registration.urls’) 회원가입


ㄴ. accounts app

HTTP verb URL 패턴 설명
GET profile/<username>/ user의 프로필 페이지로 이동 (좋아요한 영화들 출력이 기본)
POST profile/<username>/follow/ user에 대한 follow 상태 변화 (로그인 상태가 아닐 시 로그인 필요 알림 띄우기 or 팔로우 버튼 없애기)
POST profile/<username>/update/ 본인일 때만 profile img, nickname, introduce 프로필 생성
PUT profile/<username>/update/ 본인일 때만 profile img, nickname, introduce 상태 변화
GET profile/<username>/bookmark/ 북마크한 영화들이 출력 되고 있는 user의 프로필 페이지
GET profile/<username>/article/ user가 작성한 게시물이 출력 되고 있는 user의 프로필 페이지
GET profile/<username>/comment/ user가 작성한 댓글이 출력 되고 있는 user의 프로필 페이지


ㄷ. community app

HTTP verb URL 패턴 설명
GET total/<int:page> 전체 게시판 페이지
GET hot/<int:page>/ 인기 있는 게시물 페이지
GET review/<int:page>/ 영화 리뷰 페이지
GET free/<int:page>/ 자유 게시물 페이지
POST '' 게시물 생성
GET <int:article_id>/ 게시물의 디테일 페이지
PUT <int:article_id>/ 본인인 경우 게시물 수정
DELETE <int:article_id>/ 본인인 경우 게시물 삭제
POST <int:article_id>/like/ 게시물 좋아요
POST <int:article_id>/comments/ 댓글 생성
PUT <int:article_id>/comments/<int:comment_id>/ 본인인 경우 댓글 수정
DELETE <int:article_id>/comments/<int:comment_id>/ 본인인 경우 댓글 삭제


ㄹ. movies app

HTTP verb URL 패턴 설명
GET / HOME화면 (추천 영화)
GET hot/ 최근 HOT(최근 좋아요가 많이 눌린)한 영화 리스트 데이터 전송
GET like/ 팔로우한 사람들이 좋아하는 영화 리스트 데이터 전송
GET bookmark/ 팔로우한 사람들이 북마크한 영화 리스트 데이터 전송
GET genres/ DB의 장르 데이터 전송
GET search/<int:search_page>/ 전체 영화 검색 페이지 /
GET <int:movie_id>/ 단일 영화 디테일 조회 페이지
POST <int:movie_id>/like/ 단일 영화에 대한 like 상태 변화 (로그인 상태가 아닐 시 로그인 필요 알림 띄우기 or like 버튼 없애기)
POST <int:movie_id>/bookmark/ 단일 영화 bookmark기능 상태 변화 (로그인 상태가 아닐 시 로그인 필요 알림 띄우기 or bookmark 버튼 없애기)
GET anonymous/recommend/recent/ 비로그인 유저가 받는 추천 영화 리스트(최신 순)
GET anonymous/recommend/hot/ 비로그인 유저가 받는 추천 영화 리스트(인기 순)


나. 프로젝트 소개

1) 개발 도구

image-20220527015930633

  • BE: Django
  • DB: Sqlite3
  • FE: Vue, Vuex, Vuetify, SCSS
  • UI tool: Figma


2) 주요 기능

Github에 asset으로 저장된 gif 파일이 있어 일부 gif가 보이지 않습니다.

정확한 gif는 Github README(링크)를 참고해주세요!


ㄱ. 회원가입 페이지

회원가입페이지(사진x)

  • 보기 설정 구현: 눈 모양 아이콘 클릭 시 비밀번호 확인 가능, 눈 모양 아이콘 토글 변경
  • 오타 및 비밀번호 확인과 일치 여부 확인 가능
  • 가입 시 프로필 사진 생략 가능
  • 이 경우 기본 이미지로 최초 설정


ㄴ. 로그인 페이지

로그인

  • 회원가입과 마찬가지로 비밀번호 확인 가능
  • 회원가입 페이지 이동 버튼 배치


ㄷ. 네비게이션 바

네비게이션바

  • 아무 영화 사이트의 모든 페이지로 이동 가능
  • 비로그인 유저는 마이페이지 링크 생략
  • 프로필 사진 미등록 유저: 프로필 사진 자리에 기본 이미지 배치


ㄹ. 메인 페이지

메인페이지1

  • 다양한 기준에 의한 영화 추천
    • AMU 인기 영화 : 서비스 사이트에서 최근 한 달간 가장 많이 좋아요/북마크가 기록된 영화
    • 최근 개봉 영화 : 가장 최근 개봉한 영화들
    • 인기 영화 : TMDB 영화 API의 popular(관객 수) 기준으로 높은 점수를 받은 영화


  • 로그인 사용자에게는 팔로우 기능을 기반으로 한 영화들을 추가로 추천 제공
    • 팔로워들이 좋아하는 영화
    • 팔로워들이 북마크한 영화


메인페이지2

  • 검색바 검색을 통해 영화 검색 결과 페이지로 이동
  • 검색어는 영화 제목과 배우 이름 중 선택해 검색
  • 검색하고 있는 글자가 포함된 제목의 영화들을 검색창 하단에 표시
  • 표시된 영화 제목을 클릭 시 해당 영화의 상세페이지로 이동


ㅁ. 영화 검색 페이지

상세 검색 페이지

  • 검색된 영화들의 결과 페이지
  • 배우 이름으로 검색 시, 해당 배우가 출연한 영화들을 표시
  • 정렬 기준
    • 최신순, 오래된 순
    • 평점 높은 순, 평점 낮은 순
    • 제목 오름차순, 제목 내림차순
  • 필터 기준
    • 영화 장르
    • 최소 평점


ㅂ. 영화 상세 페이지

영화상세페이지

  • UI 및 기능
    • 포스터와 영화의 트레일러를 상단에 표시
    • 로그인한 유저만 좋아요와 북마크 버튼을 클릭 가능
  • 출연진
    • 출연진 사진에 마우스를 올리면, 배우 이름과 배역 표시
    • 출연진 사진을 클릭 시 해당 배우가 출연한 영화들을 표시하는 검색페이지로 이동
  • 리뷰
    • 해당 영화에 대해 커뮤니티에 연결된 리뷰들을 확인 가능
    • 리뷰 클릭 시 커뮤니티의 해당 리뷰 게시글로 이동


ㅅ. 커뮤니티 페이지

커뮤니티페이지

  • 아래의 여러 카테고리들로 구분
    • 영화게시판 : 영화와 관련된 게시글. 게시글에 영화를 검색해 제목을 입력하면 게시글에서 영화 포스터를 확인 가능
    • 자유게시판 : 영화와 무관한 내용의 글을 작성하는 공간
    • 전체게시판 : 영화게시판의 게시물과 자유게시판의 게시물을 모두 확인 가능
    • 인기게시판 : 댓글 수, 좋아요 수를 기준으로 10개, 50개, 100개가 넘는 게시물만 필터해 확인 가능


  • 정렬기준 선택 가능
    • 최신순 : 가장 최근에 등록된 게시물부터 차례로 표시
    • 좋아요 많은 순 : 좋아요 개수가 많은 게시물부터 차례로 표시
    • 댓글 많은 순 : 댓글 개수가 많은 게시물부터 차례로 표시


  • 페이지 당 표시되는 게시물의 개수를 설정 가능
    • 5개, 10개, 20개 단위


ㅇ. 게시물 작성 페이지

게시글작성페이지

  • 영화 리뷰와 일반 게시물 중 선택해서 작성
  • 리뷰의 경우 특정 영화를 검색해서 등록해야만 작성 가능
  • 귀여운 별을 이용해 평점 등록
  • 자유게시판 선택 시, 영화 검색바와 평점 선택 별 미표시


ㅈ. 게시물 수정 페이지

게시글수정페이지

  • 본인이 작성한 게시물을 수정
  • 기존 작성 내용이 자동으로 폼에 표시
  • 이전 버튼 클릭 시 수정 중이던 내용 취소 가능


ㅊ. 게시물 상세 페이지

게시글상세페이지

  • 게시물 작성 유저만 수정/삭제 버튼을 확인 가능
  • 유저들은 좋아요 및 댓글 작성 가능
  • 커뮤니티로서의 정체성으로 소통 기능 확보
  • 영화 리뷰 게시물일 경우 해당 영화의 포스터까지 확인 가능
  • 영화 포스터를 클릭 시 해당 영화의 상세 페이지로 이동


ㅋ. 프로필 페이지

프로필페이지

좋아요한 영화

  • 유저의 프로필 페이지 진입 시 기본적으로 유저가 좋아요를 누른 영화 표시
  • 대상 유저를 팔로우/언팔로우 가능
  • 본인 프로필 페이지인 경우, 사이트 내의 활동명과 자기소개, 프로필 사진을 수정 가능


북마크한 영화

  • 프로필 페이지의 유저가 북마크한 영화 표시


작성한 게시글

  • 프로필 페이지의 유저가 작성한 게시글 표시
  • 가장 최근 작성한 게시글부터 상단에 배치해 나열
  • 게시글 제목 클릭 시 해당 게시물로 이동


작성한 댓글

  • 유저가 작성한 댓글 표시
  • 댓글을 달은 원글의 제목을 하단에 표시하여 확인 가능
  • 해당 댓글 영역 클릭 시 해당 댓글이 달린 게시물로 이동


ㅌ. 반응형 구현

| 프로필반응형 | 검색페이지반응형 | 영화상세페이지반응형 | 커뮤니티페이지반응형 | | ———————————————————— | ———————————————————— | ———————————————————— | ———————————————————— |


다. 협업 과정

1. 팀원 및 업무 분담

  공통 ezgif com-gif-maker (1)
박승훈
ezgif com-gif-maker
이윤경
BACK ERD설계
API 설계
데이터 소스 구축
Pagination 로직 구현
게시글 정렬 및 필터 기능 구현
추천 알고리즘 구현
영화 검색 기능 구현
영화 정렬, 필터 구현
데이터 모델링
FRONT 와이어 프레임 제작 컴포넌트 설계 및 시각화
SCSS 모듈화
Community 컴포넌트
Profile 컴포넌트
Django-Vue 연동
Movie 컴포넌트
로고 및 캐릭터 디자인

댓글남기기