inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 스터디 클럽 3기 풀스택] 3주차 발자국

codestudy
0

Netflix 클론코딩 - 영화 검색 서비스

1. 프로젝트 기본 설정 및 구조

2. 데이터베이스 구축

3. UI 컴포넌트 개발

4. 데이터 관리 및 API 연동

5. 고급 기능 구현

6. SEO 최적화

7. 학습 회고

이 Netflix 클론 프로젝트를 통해 Next.js의 App Router와 TypeScript, Supabase를 결합한 풀스택 개발을 경험했습니다.

복습을 꾸준히 하고 supabase의 다양한 기능을 습득하도록 해야겠습니다.

 

 

🛠 미션 해결 과정

image

image

찜 기능 구현 과정 및 회고

구현 과정

  1. Supabase 테이블 설계:

    • favorites 테이블 생성: id, movie_id, device_id, created_at 필드 포함

    • Foreign key는 설정하지 않고 간단한 구조로 진행

  2. 클라이언트-사이드 식별자 구현:

    • deviceId.ts 유틸리티 생성: 사용자 브라우저를 식별하기 위한 고유 ID 생성 및 로컬 스토리지에 저장

    • 로그인 없이도 각 사용자의 즐겨찾기를 식별할 수 있는 방법 제공

  3. 서버 액션 구현:

    • favoriteActions.ts: 즐겨찾기 추가/제거 및 목록 조회 기능 구현

    • searchMovies 함수 수정: 즐겨찾기 정보 포함 및 즐겨찾기 항목 상단 정렬 로직 추가

  4. UI 컴포넌트 수정:

    • MovieCard 컴포넌트에 하트 아이콘 추가: Font Awesome과 Material Tailwind 사용

    • 찜 상태에 따라 아이콘 스타일 변경 (빨간색/회색)

    • 클릭 이벤트 처리 및 비동기 동작 구현

  5. 타입 관리:

    • 기본 Movie 타입 확장하여 MovieWithFavorite 인터페이스 정의

    • TypeScript 타입 오류 해결을 위한 전략 수립

미션 해결 회고

로그인 없이 사용자별 데이터를 관리하기 위해 기기 식별자를 활용한 접근법을 알게되어 활용해보았습니다. Supabase로 찜한 정보를 저장하고 관리하는 과정에서 서버리스 데이터베이스의 강력함을 경험했습니다.

타입스크립트의 인터페이스 확장을 통해 is_favorite 속성을 추가하며 타입 시스템의 중요성에 대해 또 느꼈습니다.

원하는 기능이 있을때마다 supabase에 테이블을 추가하여 활용하는 것이 신기했습니다.

풀스택 인프런워밍업 풀스택 supabase

답변 0