1. 프로젝트 소개 및 시작

mangojang·2023년 6월 3일

typescript도 공부했고, state 관리 라이브러리들도 공부 했고 이를 활용한 프로젝트를 하나 하고자 생각하여 TMDB API를 사용하여 디즈니 플러스 클로닝 애플리케이션을 제작 하였다. 프로젝트는 여기로 접속 가능하다.

기술 스택

  • React
  • Typescript
  • Next.js
    • 많이 사용하는 라이브러리이기도 하고, SSR적용이 필요 할 것 같아서 사용하였다.
      (13버전을 사용하였는데 이와 관련해서도 참 할 말이 많다. 이는 다음 포스트에서 차차 언급하겠다.)
  • Redux
  • RTK(Redux Toolkit), RTK-query
    • RTK , rocoil, zustand , mobx 등 다양한 상태 관리 라이브러리 들 중 무엇을 사용할까 정말 많이 고민했다.
    • 그래도 가장 많이 사용하는 것이 redux - RTK 가 아닐 까 하여 RTK를 사용하기로 하였다.
    • 비동기 상태 관리 라이브러리는 react-query , RTK-query 중 고민 많이 하였다.
    • RTK 공식 홈페이지를 가니 가이드라인도 잘 되어 있고, RTK를 설치하면 따로 설치 필요 없이 RTK-query를 사용할 수 있다는 점이 좋은 것 같아 RTK-query를 사용하기로 하였다.
      (하….좀 후회한 부분이다. 자세한 내용은 SSR 적용 포스트에서 다루겠다. )
  • SCSS
    • style-component 와 SCSS 둘 중 고민 하였는데, 실무 적용 방식의 코드를 보여 주고 싶어 SCSS를 선택했다.
  • Vercel
    • 배포 방식도 고민 많이 하였는데 처음에는 github action과 AWS 조합으로 하려 하였으나, 생각대로 안되어 Next.js 에서 추천하는 Vercel로 배포 하였다. (배포 방식을 바꾼 이유에 대해서는 배포 포스트에서 다루겠다. )
  • firebase authentication
    • 백엔드 서버 사용 없이 간단하게 적용 할 수 있을 것 같아 선택 하였다. (SSR 적용에서 복병이었다🥲 자세한 일화는 SSR적용 포스트에서 다루겠다.)

주요 페이지 및 기능

주요 페이지와 기능은 다음과 같다.

  • 로그인 / 로그아웃

    • firebase authentication을 이용한 구글 로그인 / 로그 아웃

    • 로그인 성공 시, 메인 페이지 접근 가능

    • SSR(Server Side renderring)을 이용하여 로그인 여부 파악

  • 메인 페이지

    • RTK query를 사용하여 영화 정보를 가져옴.

    • 로딩 중일 경우, 스켈레톤 UI 적용

    • 상단 배너

      • 비디오 정보가 있을 경우, play 버튼 노출. 클릭 시, 유투브 동영상 재생
    • 장르 별 영화

      • swiper를 이용한 슬라이드 구현
      • 클릭 시, 모달 창으로 영화 정보 제공
        • useRef, useOnClickOutside 훅을 통해 모달 창 바깥을 클릭 시, 모달 창 닫기 구현.
  • 검색

    • 검색 창 입력 시, 라우터 이동을 통한 검색 결과 제공
      • useDebounce 훅을 통해 debouncing 구현
    • RTK query를 사용하여 검색 결과, 로딩 중, 결과 없는 경우를 표현
    • 검색 결과 클릭 시, 상세 정보 페이지로 이동.
  • 상세 정보 페이지
    • 영화 상세 정보를 제공.
    • getServerSideProps를 이용하여 SSR 적용
    • 상세 정보에 따른 메타 태그 변경

마무리 & 예고

약 2주 정도 하루 종일 붙잡고 한 프로젝트였는데, 고민도 정말 많이 하였고, 삽질도 많이 하였다😂 적용한 기술들과 삽질한 일화들을 중심으로 회고글을 업로드 하려고 한다. 다음 포스트는 firebase로 로그인을 구현한 방법에 대해 이야기 하겠다 👋

profile
한 걸음 한 걸음 계속 걷는 자가 일류다

0개의 댓글