Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[6주차] 셰어마인드 과제 제출합니다. #15

Open
wants to merge 63 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
ccdfceb
Initial commit from Create Next App
kyuhho Nov 8, 2023
f44cb77
init: 기초 세팅
kyuhho Nov 8, 2023
8ec264b
init: 프로젝트 기초 세팅 시도
rmdnps10 Nov 8, 2023
bb1d6b5
feat: landing 페이지 구현
kyuhho Nov 8, 2023
6caaa45
Feat: SFPRODISPLAY 폰트 추가
rmdnps10 Nov 9, 2023
1ccdb55
Feat: 필요한 아이콘들 icon 폴더에 추가
rmdnps10 Nov 9, 2023
6abed2e
Feat: 컴포넌트 기분 구조 설계
rmdnps10 Nov 9, 2023
57e2d24
chore: svg 컴포넌트 방식으로 import하기 위한 svgr/webpack 설치
rmdnps10 Nov 9, 2023
c76140a
Feat: 고정된 하단 내비게이션 메뉴 UI 구현
rmdnps10 Nov 9, 2023
0912c46
Feat: svg 컴포넌트에 props 내려주는 형식으로 색상 변경
rmdnps10 Nov 9, 2023
34d195d
Feat: global.css html 태그 display:flex; 두는 것에서 body에 margin: 0 auto 두는…
rmdnps10 Nov 9, 2023
815e2f6
Feat: MainContent 스타일링
rmdnps10 Nov 9, 2023
43c3e58
Feat: 스크롤 컨테이너에 따라 세로형으로 스크롤 되게 구현
rmdnps10 Nov 9, 2023
e0f0bbc
Feat: 스크롤바 숨기기 css 추가
rmdnps10 Nov 9, 2023
cbb0d56
Feat: PreviewSection, RecommendSection까지 스타일링 완료
rmdnps10 Nov 9, 2023
59d92e0
Feat: Play버튼 호버 시 색상 어둡게 변경
rmdnps10 Nov 9, 2023
2883c05
Chore: 환경 변수 관리를 위한 dotenv, 서버 연결을 위한 axios 설치
rmdnps10 Nov 9, 2023
42528b9
Fix: Unknown Props 에러 prop에 $붙여서 없애기
rmdnps10 Nov 9, 2023
bd08c2b
Feat: 서버와의 연결을 위한 api 폴더 생성하여 axios 인스턴스 생성 및 request.js 생성
rmdnps10 Nov 9, 2023
b1a80c1
Feat: 메인 이미지 서버와 연결하여 가져오는 것 구현
rmdnps10 Nov 9, 2023
ad64750
Fix: next.config.js에서 React.StrictMode false로 수정
rmdnps10 Nov 9, 2023
9e68f75
Style: background-image -> img 태그 쓰는 걸로 변경
rmdnps10 Nov 9, 2023
274c9a8
chore: preview request 변경
kyuhho Nov 9, 2023
d2c3947
feat: preview 기능 구현
kyuhho Nov 9, 2023
bb71dc4
fix: console.log 삭제
kyuhho Nov 9, 2023
043cc48
refactor: fetchData 리팩토링
kyuhho Nov 9, 2023
546be79
refactor: fetch home page에 몰기
kyuhho Nov 9, 2023
f54115f
refactor: recommend section 컴포넌트로 통일
kyuhho Nov 9, 2023
8b44c17
feat: top rated 추천 추가
kyuhho Nov 9, 2023
3fa2e5d
fix: comming soon 겹침 문제 해결
kyuhho Nov 9, 2023
71fcc95
style: index.js 추가, import 한번에
kyuhho Nov 9, 2023
5253bc3
Refactor: hook폴더 안에 서버에서 이미지 데이터 가져오는 로직을 useFetchData.js 훅으로 분리
rmdnps10 Nov 10, 2023
0b8bfad
Chore: request파일 key값 변경
rmdnps10 Nov 10, 2023
b7b80cf
Feat: .gitignore에 .env 파일 추가
rmdnps10 Nov 10, 2023
13f9663
Feat: 이미지 호버 시 커서 설정과 opacity를 transition 속성 이용하여 조정
rmdnps10 Nov 10, 2023
5b121a6
Chore: 커스텀 훅 변수 명 수정
rmdnps10 Nov 10, 2023
095ab2c
Feat: MainContent에 Top10 Logo 추가
rmdnps10 Nov 10, 2023
8209ba5
chore: env 파일 삭제
kyuhho Nov 10, 2023
c060972
fix: bottom navigation 공백 삭제
kyuhho Nov 10, 2023
452e944
fix: netflix lottie 중앙 정렬
kyuhho Nov 10, 2023
48747ef
fix: botton nav 위치 조정
kyuhho Nov 10, 2023
64a2890
Chore: 주석 추가 및 필요 없는 import 문 삭제
rmdnps10 Nov 10, 2023
2db93f7
Merge branch 'CEOS-Developers:master' into master
rmdnps10 Nov 10, 2023
4c297b2
Refactor: useFecthData SSR 방식으로 수정, 스타일드컴포넌트 SSR 구현 중
rmdnps10 Nov 15, 2023
a808e8b
스타일드 컴포넌트로 SSR 구현 불가능하다 판단, BottomNavigation Navigation 구현
rmdnps10 Nov 15, 2023
4e9c411
Dynamic Routing trial
rmdnps10 Nov 15, 2023
365023c
Refactor: dynamic routing을 위한 useFetchData 반환값 변경
rmdnps10 Nov 16, 2023
9227631
Refactor: BottomNav 코드 module.css 리팩토링 및 layout.js에서 바로 import
rmdnps10 Nov 16, 2023
312ee26
Feat: 영화상세페이지 스타일링 완료
rmdnps10 Nov 16, 2023
5a9cc18
Feat: RecommendSection, PreviewSection에서 영화 아이템 눌렀을 떄 라우팅 구현
rmdnps10 Nov 16, 2023
edbdcdc
Fix: 첫 로딩화면에서 Nav보이지 않게
rmdnps10 Nov 16, 2023
6dcdfcd
Feat: 영화상세페이지 사진 배경 그라디언트 추가
rmdnps10 Nov 16, 2023
e8d7280
Fix: 페이지 컴포넌트명 대문자로 수정
rmdnps10 Nov 16, 2023
14670e6
Merge pull request #1 from sharemindteam/inyoung
kyuhho Nov 16, 2023
d8d62a6
docs: readme 수정
kyuhho Nov 16, 2023
18adf0d
fix: mainImage 못 가져오는 경우 예외처리
kyuhho Nov 16, 2023
f6ec107
fix: 예외처리 수정
kyuhho Nov 17, 2023
9d39d03
fix: lottie oncomplete 수정
kyuhho Nov 17, 2023
047d61e
Merge pull request #2 from leekyuho114/leekyuho114
kyuhho Nov 17, 2023
ac3fb9d
build: styled-component 관련 빌드 추가
kyuhho Nov 17, 2023
5fc25f5
feat: search input style
kyuhho Nov 17, 2023
8e6da08
feat: search 구현 완료
kyuhho Nov 17, 2023
e107865
Merge pull request #3 from leekyuho114/leekyuho114
kyuhho Nov 17, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": ["next/babel", "next/core-web-vitals"]
}
36 changes: 36 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local
.env

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
34 changes: 16 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# 5주차 미션: Next-Netflix
# 6주차 미션: Next-Netflix

## 서론

안녕하세요, 프론트 운영진 **노수진**입니다 😸

이번주부터는 새 프로젝트인 **Netflix 클론코딩**을 진행합니다. 이번 미션은 Next.js를 사용해 보며 SSR을 학습하고 Figma로 주어지는 디자인을 활용해 스타일링 하는 방법을 이해하는 것을 목표로 합니다.
이번주는 저번주 과제를 이어 Netflix를 완성해봅시다. 이번주 과제의 목표는 지난주에 이어 figma로 주어지는 디자인을 사용해 스타일링을 하는 방법과 SSR에 익숙해지는 것입니다. 추가적으로 성능 최적화 방법에 대해서도 생각해보는 것도 좋을 것 같습니다.

또한 이번주부터는 프론트 페어와 함께하는 과제인 만큼 각 팀별로 미리 호흡을 맞춰 보는 좋은 기회가 될 것 같습니다. 모두 화이팅입니다🔥
이번주도 화이팅입니다💪

## 미션

Expand All @@ -18,33 +18,31 @@

### 기한

- 2023년 11월 10일 (기한 엄수)
- 2023년 11월 17일 (기한 엄수)

### 필수 요건

- [결과화면](https://next-netflix-17th-sepia.vercel.app/)의 랜딩 페이지와 메인 페이지를 구현합니다.
- [결과화면](https://next-netflix-17th-sepia.vercel.app/)의 상세 페이지와 검색 페이지를 구현합니다.
- 상세 페이지는 동적 라우팅을 이용해 구현합니다.
- 검색 페이지는 실시간 키워드 검색으로 구현합니다.
- [Figma](https://www.figma.com/file/UqdXDovIczt1Gl0IjknHQf/Netflix?node-id=0%3A1)의 디자인을 그대로 구현합니다.
- **SSR**을 적용해서 구현합니다.
- Open api를 사용해서 데이터 패칭을 진행합니다. (ex. [themoviedb API](https://developers.themoviedb.org/3/getting-started/introduction))
- `yarn`, `yarn berry`, `npm`, `pnpm`등 패키지 매니저를 직접 선택해 Next.js를 세팅해 봅니다.

### 선택 사항

- SSR(Server Side Rendering)을 적용해서 구현합니다.
- 웹 폰트를 사용합니다.
- 반응형을 고려합니다.
- 검색 페이지 무한스크롤을 구현합니다.
- 검색 페이지 스켈레톤 컴포넌트를 구현합니다.
- 성능 최적화를 위한 방법을 적용해봅니다.

## **Key Question**

- Server Side Rendering과 Client Side Rendering의 차이
- SEO란
- 전반적인 협업 과정
- 정적 라우팅(Static Routing)/동적 라우팅(Dynamic Routing)이란?
- 성능 최적화를 위해 사용한 방법

## 링크 및 참고자료

- [랜딩페이지 영상](https://lottiefiles.com/kr/)
- [Next.js Docs](https://beta.nextjs.org/docs)
- [Next.js 13에서 변한 것들](https://velog.io/@hang_kem_0531/Next.js-13%EC%9D%B4-%EB%82%98%EC%99%80%EB%B2%84%EB%A0%B8%EB%8B%A4)
- [Next.js 14에서 변한 것들](https://velog.io/@lee_1124/Next.js-14-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8)
- [Git 협업 가이드](https://velog.io/@jinuku/Git-%ED%98%91%EC%97%85-%EA%B0%80%EC%9D%B4%EB%93%9C)
- [디자이너와 개발자가 협업하기 위한 피그마 기본 기능](https://chingguhl.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EA%BC%AD-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-%ED%94%BC%EA%B7%B8%EB%A7%88-10%EA%B0%80%EC%A7%80-%EA%B8%B0%EB%8A%A5-%EB%94%94%EC%9E%90%EC%9D%B4%EB%84%88%EC%99%80-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%ED%98%91%EC%97%85%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%ED%94%BC%EA%B7%B8%EB%A7%88-%EA%B8%B0%EB%B3%B8-%EA%B8%B0%EB%8A%A5)
- [useCallback과 React.Memo를 이용한 렌더링 최적화](https://velog.io/@yejinh/useCallback%EA%B3%BC-React.Memo%EC%9D%84-%ED%86%B5%ED%95%9C-%EB%A0%8C%EB%8D%94%EB%A7%81-%EC%B5%9C%EC%A0%81%ED%99%94)
- [성능 최적화](https://ui.toast.com/fe-guide/ko_PERFORMANCE)
- [더 나은 UX를 위한 스켈레톤 UI 만들기](https://ui.toast.com/weekly-pick/ko_20201110)
- [React에서 무한 스크롤 구현하기](https://tech.kakaoenterprise.com/149)
7 changes: 7 additions & 0 deletions jsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
}
}
17 changes: 17 additions & 0 deletions next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
webpack: (config) => {
config.module.rules.push({
test: /\.svg$/,
use: ["@svgr/webpack"],
});
return config;
},
compiler: { styledComponents: true },
reactStrictMode: false,
images: {
domains: ["image.tmdb.org"],
},
};

module.exports = nextConfig;
Loading