3. 디렉터리 구조
BACKEND
1. 주제 선정 이유
•
왓챠 플레이 유저로서, 평소 사용하던 서비스를 직접 개발
•
SPA 라우팅과 상태 관리의 동작 원리 이해 및 구현
•
회원가입, 로그인, 로그아웃의 유저 관리
•
외부 API 사용 (The Movie Database)
2. 프로젝트 인원
•
4명 (서대원, 이승연, 이본행, 조나현)
3. 일정
프로젝트 기간 2021-12-10 ~ 2021-12-22 (13일)
4. 기술 스택
BACKEND
•
express
•
jwt
•
bcrypt
FRONTEND
•
webpack (babel)
•
d3.js
3. 디렉터리 구조
BACKEND
•
bin/www : express 환경 설정
•
config : 외부 모듈/라이브러리 환경 config
•
controllers : 데이터 유효성 체크 및 dao 호출, 요청 / 응답
•
dao : models에 직접적으로 접근하여 데이터 변경
•
models : 데이터
•
middleware : 미들웨어
•
routes : 라우터
•
utils : 공통적으로 사용하는 유틸리티 함수 및 외부 라이브러리
•
MVC 구조
FRONTEND
•
index.html: 기본 마크업 및 외부 소스 (아이콘) 연결
•
index.js: SPA App 생성 (entry)
•
router.js: 라우팅 구현
•
App.js: path 별 페이지 생성 및 history state 관리
•
pages: 각 페이지 별 상태 관리 및 이벤트 핸들러 바인딩
◦
pages/initialState: 초기 상태 값
•
eventListeners.js: 모든 페이지에서 발생하는 공통 이벤트 핸들러 바인딩
•
components: 레이아웃 및 라우팅 이벤트 핸들러 바인딩
•
services: 서버 API 호출 (GET, POST, PATCH, DELETE)
•
utils: 공통적으로 사용하는 유틸리티 함수
•
flux 구조
•
props를 통한 단방향 데이터 흐름
•
MVC 단점(양방향 데이터 흐름의 경우 상태 관리 복잡도 ↑)을 보완
4. 구현
공통
•
로고 클릭 시 홈 이동
•
영화 검색
•
로그인 / 회원가입
◦
잘못된 이메일/비밀번호로 로그인 시도 시 로그인 불가
◦
이미 존재하는 닉네임 및 이메일로 회원가입 시도 시 회원가입 불가
◦
로그인 시 헤더가 마이페이지 / 로그아웃 변경
•
포스터 클릭 시 디테일 페이지 이동
•
캐러셀 UI
◦
캐서셀 양 끝에 마우스 커서 호버 시 좌우 이동 버튼이 나타남
Home
Movie Detail
•
평점 및 코멘트 CRUD
◦
비로그인 시 로그인 모달 창 팝업
◦
로그인 시 이미 해당 영화에 등록한 평점이 있을 경우 그 평점을 화면에 렌더링 (GET)
◦
평점 최초 클릭 시 해당 평점을 등록 (POST)
◦
다른 평점 클릭 시 평점 수정 (PATCH)
◦
이미 평가한 점수와 같은 평점을 클릭한 경우 평점 삭제 (DELETE)
•
평점 그래프 및 코멘트
◦
평점 그래프: 본인을 포함한 해당 영화의 모든 별점 시각화, 가장 높은 평점에 하이라이트
◦
코멘트: 본인을 포함한 해당 영화의 모든 코멘트를 캐러셀로 표현
•
영화 상세 정보
◦
영화 제목, 개봉 연도, 장르, 제작 국가, 상영 시간, 상영 등급, 줄거리 및 출연진
•
같은 장르 영화 추천
Movie Search
•
영화 검색 결과를 캐러셀로 표현
My Page
•
사용자가 평점을 남긴 영화 리스트를 캐러셀로 표현