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주차] azito 조유담 & 이나현 미션 제출합니다. #12

Open
wants to merge 106 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
01a0ede
Chore : 프로젝트 초기 설정
youdame May 6, 2024
9264b69
Chore : PR 템플릿 적용 및 필요한 패키지 설치
youdame May 6, 2024
26d4858
Chore : svgr 설치 및 라우팅 설정
youdame May 7, 2024
d999f1a
Feat : 폴더 구조 잡기 및 axios 초기 설정
youdame May 7, 2024
101e16a
Style : 글로벌 css 및 색상 등록 #1
youdame May 7, 2024
56b596e
Merge pull request #2 from team-azito/Chore/issue#1
youdame May 7, 2024
c811a92
Feat : 랜딩페이지 구현 #3
youdame May 7, 2024
faa168e
Style : 파비콘 추가 및 global css에 전역 스타일 클래스 추가 #3
youdame May 7, 2024
cd7edca
Feat : 타이틀 변경 #3
youdame May 7, 2024
5b5ffda
Merge pull request #4 from team-azito/Feat/issue#3
youdame May 7, 2024
a120e16
Chore: Github 자동 배포 Action 작성
CSE-pebble May 8, 2024
51408c6
Test: 배포 적용 테스트
CSE-pebble May 8, 2024
ed5ff9e
Feat : movieSection 컴포넌트 구현 중
youdame May 8, 2024
c948c42
Feat : MovieSection 컴포넌트 완성
youdame May 8, 2024
9ee9963
Feat : not-found, error 페이지 추가
youdame May 8, 2024
f90880c
Style : 조건부 스타일링 추가
youdame May 8, 2024
48f8dc8
Test: 환경 변수 관련 배포 오류 테스트
CSE-pebble May 8, 2024
d5cc2ca
Refactor : .env 환경변수 이름 변경 및 자잘한 css 스타일링 수정
youdame May 8, 2024
08e977c
Refactor : 중복 코드 최적화
youdame May 8, 2024
db7d19b
Refactor : type 위치 변경 #5
youdame May 9, 2024
4293553
Feat : 슬라이더 구현 #5
youdame May 9, 2024
54f9042
Fix : CI 에러 고치는 중 #5
youdame May 9, 2024
8c04f2e
Fix : 에러 고치는 중
youdame May 9, 2024
38b77e5
Fix : CI 에러 해결 중 #5
youdame May 9, 2024
014989c
Chore: Vercel 환경 변수명 수정
CSE-pebble May 9, 2024
4d9bb0a
Merge branch 'main' of https://github.com/team-azito/next-netflix-19t…
youdame May 9, 2024
12000cc
Merge branch 'main' of https://github.com/team-azito/next-netflix-19t…
youdame May 9, 2024
f601508
Fix : 빌드 에러 해결 중 #5
youdame May 9, 2024
b04d60b
Fix : 빌드 에러 해결 중 #5
youdame May 9, 2024
ebd3833
빌드 에러 해결 중
youdame May 9, 2024
0691457
Merge pull request #6 from team-azito/Feat/issue#5
youdame May 9, 2024
d7f5de8
Fix : 액세스 토큰 이름 변경
youdame May 9, 2024
74d18d9
Fix : CI 파일 에러 해결
youdame May 9, 2024
cb95f43
Feat : CI 파일 삭제 및 홈페이지 수정
youdame May 9, 2024
eccaed0
Chore: 환경 변수 세팅 및 필요한 패키지 설치
CSE-pebble May 10, 2024
bf47f0f
Test: 브랜치 테스트
CSE-pebble May 10, 2024
2fcf21c
Test: 이슈 브랜치 연결 테스트
CSE-pebble May 10, 2024
7481f14
Feat: 상단바 구현 완료
CSE-pebble May 10, 2024
1ce21e9
Chore: 환경 업데이트
CSE-pebble May 10, 2024
1c09b5e
Feat: 하단바 구현 (고정 기능 미완료)
CSE-pebble May 10, 2024
80281e5
Chore : clsx 설치
youdame May 10, 2024
45713bf
Merge pull request #8 from team-azito/Feat/issue#7
CSE-pebble May 10, 2024
39d4299
Style : 폰트 적용
youdame May 10, 2024
6298646
Feat: MoviePlay 기능 구현 (스타일 미적용)
CSE-pebble May 10, 2024
c68dee6
Style: 이미지 사이즈 수정
CSE-pebble May 10, 2024
959cbcb
Style: 아이콘 추가 및 CSS 적용
CSE-pebble May 10, 2024
662003d
Style: 하단바 fixed
CSE-pebble May 10, 2024
b960bee
Fix : Footer 문제 해결 #9
youdame May 10, 2024
812b302
Merge pull request #10 from team-azito/fix/issue#9
youdame May 10, 2024
79a8c52
Merge pull request #11 from team-azito/Feat/issue#7
CSE-pebble May 10, 2024
1fa6aea
Refactor : 푸터 타입 추가
youdame May 10, 2024
d2b94f4
Fix : 배포 테스트
youdame May 10, 2024
db0dc60
Fix : 빌드 에러 해결
youdame May 11, 2024
4325eeb
Chore : 엄격한 타입 적용
youdame May 11, 2024
ca5a510
Fix: 인덱스 범위 문제 해결
CSE-pebble May 12, 2024
67fb25d
Refactor: 순위 1부터 시작하도록 수정
CSE-pebble May 12, 2024
7d22bd6
Refactor: Footer 이름 BottomNavbar로 변경
CSE-pebble May 12, 2024
9aa757f
Refactor: svgr을 이용한 동적 색상 변경
CSE-pebble May 12, 2024
10ec12d
Chore: 수정 안된 Footer명 변경
CSE-pebble May 12, 2024
cae5277
Refactor: 헤더 네비게이션 아이템 위치 정렬
CSE-pebble May 12, 2024
ffbea02
[Ing] Refactor: 하단바 고정 CSS 개선
CSE-pebble May 12, 2024
89f28ad
Refactor: 하단바 아이콘 정렬 수정
CSE-pebble May 12, 2024
ade9ab9
Refactor: 하단 네비게이션바 고정 및 컨텐츠 가리는 문제 해결
CSE-pebble May 13, 2024
f852ea6
Refactor: 폰트 사이즈 조정
CSE-pebble May 13, 2024
53083b6
Refactor: 미리보기 이미지 그라데이션 추가
CSE-pebble May 13, 2024
6e2054e
Merge pull request #14 from team-azito/Refactor/issue#13
CSE-pebble May 13, 2024
a7dbdbc
Feat: 하단바에 해당되는 라우팅 페이지 생성 #15
CSE-pebble May 13, 2024
25742a6
Merge pull request #16 from team-azito/Fix/issue#15
CSE-pebble May 13, 2024
0c2670a
Fix: 그라데이션용 태그 잘못된 CSS 수정 #18
CSE-pebble May 13, 2024
59c3a49
Merge pull request #19 from team-azito/Fix/issue#18
CSE-pebble May 13, 2024
089185f
Feat : global-error 페이지 구현
youdame May 14, 2024
8c2359c
Feat : 레이아웃 잡는 중
youdame May 14, 2024
3260de1
Test: 배포 환경에서 randomIndex 출력 확인 테스트
CSE-pebble May 15, 2024
85f5185
Test: 콘솔 로그 확인용
CSE-pebble May 15, 2024
d3de1e0
Feat : search 페이지 퍼블리싱 완료
youdame May 15, 2024
d188089
Chore : 리액트 쿼리 설치 #20
youdame May 15, 2024
577977b
Refactor : 클라이언트, 서버 컴포넌트 분리 및 무한스크롤 커스텀 훅 추가 #20
youdame May 15, 2024
3df451f
Chore: 리액트 쿼리 설치 및 초기 설정 #20
youdame May 15, 2024
895ed11
Refactor : 리액트 쿼리로 데이터 패칭 성공 #20
youdame May 15, 2024
5f9192d
Feat : 검색 기능 구현 #20
youdame May 15, 2024
f7b6737
Refactor : 중복되는 컴포넌트 분리
youdame May 15, 2024
5fe62f5
Feat : 과한 api 콜을 막기 위한 debounce 도입 #20
youdame May 15, 2024
fcd5741
Feat : 스켈레톤 UI 및 무한스크롤 구현 완료 #20
youdame May 15, 2024
8caee1f
Feat : 스켈레톤 이미지 및 없는 이미지 구현 #20
youdame May 16, 2024
7c05dea
Fix : 무한 스크롤 시 스켈레톤 UI가 계속해서 보이는 문제 해결 #20
youdame May 16, 2024
63f8dec
Fix : 무한스크롤 이상 동작 문제 해결 #20
youdame May 16, 2024
ab24d29
Fix : 애니메이션 위치 문제 해결 및 검색 결과 없다는 표시 오류 해결 #20
youdame May 16, 2024
d31fb4f
Merge pull request #21 from team-azito/Feat/issue#20
youdame May 16, 2024
bcf9122
Chore: 쓸데없는 use client 삭제
CSE-pebble May 16, 2024
d36eeb9
Merge branch 'main' of https://github.com/team-azito/next-netflix-19th
CSE-pebble May 16, 2024
40b058b
Fix: 미리보기 이미지 렌더링 오류 #22
CSE-pebble May 16, 2024
21cfcf2
Merge pull request #23 from team-azito/Fix/issue#22
CSE-pebble May 16, 2024
7b00683
Refactor: 미리보기 영화 순위 글자 깜빡거리는 현상 수정
CSE-pebble May 16, 2024
c536c84
Feat: 상세 페이지 기능 구현 완료 #24
CSE-pebble May 16, 2024
11049ce
Merge pull request #25 from team-azito/Feat/issue#24
CSE-pebble May 16, 2024
2547bfa
Refactor : 잘못된 네이밍 변경
youdame May 17, 2024
c1db134
Refactor : 테스트용 페이지 수정
youdame May 17, 2024
cf865eb
Feat : 이미지 코드 변경
youdame May 17, 2024
bdf9642
Style : 안쓰는 애니메이션 제거 및 gap 추가
youdame May 17, 2024
9b478e9
Refactor: 상세 페이지에서 영화 제목 나오게 수정 #26
CSE-pebble May 17, 2024
a17ad61
Refactor: 타입 네이밍 개선
CSE-pebble May 17, 2024
c6bccf9
Refactor: 검색 페이지에서도 상세 페이지로 넘어가게 설정
CSE-pebble May 17, 2024
5be295d
Refactor: 하단바 아이콘에 마우스 커서 스타일 적용
CSE-pebble May 17, 2024
095b537
Refactor: 미리보기 이미지 클릭해도 상세 페이지로 넘어가게 수정
CSE-pebble May 17, 2024
fb32a7c
Refactor: 미디어 데이터 타입 지정
CSE-pebble May 17, 2024
932455d
Merge pull request #27 from team-azito/Refactor/issue#26
CSE-pebble May 17, 2024
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
36 changes: 36 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
// 어떤 규칙들과 설정으로 eslint를 사용할지 명시
"extends": [
"next",
"prettier",
"eslint:recommended",
"plugin:react/recommended", //ESLint의 내장되어있는 추천 설정을 사용
"plugin:react/jsx-runtime",
"plugin:@typescript-eslint/recommended" // 타입스크립트 전용 규칙을 추가적으로 사용할 수 있음
],
"parser": "@typescript-eslint/parser", // 타입스크립트용 eslint parser
"overrides": [],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": ["react", "@typescript-eslint"],
"rules": {
"react/react-in-jsx-scope": "off", // JSX를 사용할 때 React가 일일이 import되지 않으면 에러(리액트 17 이후부터는 안해줘도 됨)-> off
"no-unused-vars": "off", // 사용하지 않는 변수가 있을 때 에러 -> off
"@typescript-eslint/no-unused-vars": "warn"
// "react/prop-types": "warn" // prop의 타입을 정의해주지 않으면 에러 -> warn
// "@typescript-eslint/no-explicit-any": "warn"
},
"settings": {
"react": {
"version": "detect"
}
}
}
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: '💡 Feat'
description: '새로운 기능 추가 템플릿'
title: '[Feat] '
labels: 'feat'
body:
- type: textarea
attributes:
label: 📝 설명
description: 새로운 기능에 대해 설명해주세요.
placeholder: 기능에 대해서 적어주세요.
validations:
required: true
- type: textarea
attributes:
label: ✅ 체크사항
description: 주어진 기능에 대해서 체크박스를 만들어주세요.
placeholder: 기능에 대해서 나열해주세요.
validations:
required: true
18 changes: 18 additions & 0 deletions .github/ISSUE_TEMPLATE/fix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: "🛠️ Fix"
description: "Fix 템플릿"
title: "[Fix] "
labels: "fix"
body:
- type: textarea
attributes:
label: 🐞 버그 설명
description: 버그에 대한 설명을 작성해 주세요.
validations:
required: true
- type: textarea
attributes:
label: 🧾 로그
description: 로그가 있으면 복붙해 주세요.
render: shell
validations:
required: false
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/refactor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: "♻️ Refactor"
description: "리팩토링 템플릿"
title: "[Refactor] "
labels: "refactor"
body:
- type: textarea
attributes:
label: ❓ 이유
description: 리팩토링을 진행한 이유를 설명해주세요.
validations:
required: true
- type: textarea
attributes:
label: ✅ 수정
description: 수정한 부분을 적어주세요.
validations:
required: true
14 changes: 14 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## 🕹️ 작업 내용

- [ ]
- [ ]

## 📋 리뷰 포인트

-
-

## 🔮 기타 사항

-
-
2 changes: 2 additions & 0 deletions .github/auto_assign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
addReviewers: false
addAssignees: author
34 changes: 34 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Deploy
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vercel 이 팀 레포를 서빙할 때는 요금이 부과되어서 개인 레포로 옮기는 과정을 Github Actions로 자동화 하신 것 같은데 멋지네요~!!!


on:
push:
branches: ['main']

jobs:
build:
runs-on: ubuntu-latest
container: pandoc/latex
steps:
- uses: actions/checkout@v2

- name: Install mustache (to update the date)
run: apk add ruby && gem install mustache

- name: creates output
run: sh ./build.sh

- name: Pushes to another repository
id: push_directory
uses: cpina/github-action-push-to-another-repository@main
env:
API_TOKEN_GITHUB: ${{ secrets.AUTO_ACTIONS }}
with:
source-directory: 'output'
destination-github-username: CSE-pebble
destination-repository-name: next-netflix-19th
user-email: ${{ secrets.EMAIL }}
commit-message: ${{ github.event.commits[0].message }}
target-branch: main

- name: Test get variable exported by push-to-another-repository
run: echo $DESTINATION_CLONED_DIRECTORY
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
.yarn/install-state.gz

# 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

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
5 changes: 5 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged
echo "Azito FrontEnd 화이팅! (*ૂ❛ᴗ❛*ૂ)"
Comment on lines +1 to +5

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

husky 라이브러리를 활용해서 commit convention을 통일 하시는 것 매우 바람직한 것 같아요 👍

8 changes: 8 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"printWidth": 120,
"tabWidth": 2,
"singleQuote": false,
"trailingComma": "all",
"semi": true,
"plugins": ["prettier-plugin-tailwindcss"]
}
60 changes: 23 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,36 @@
# 5주차 미션: Next-Netflix
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).

## 서론
## Getting Started

안녕하세요, 프론트 운영진 **노이진**입니다 🐶🍮
First, run the development server:

이번주부터는 새 프로젝트인 **Netflix 클론코딩**을 진행합니다. 이번 미션은 Next.js를 사용해 보며 SSR을 학습하고 Figma로 주어지는 디자인을 활용해 스타일링 하는 방법을 이해하는 것을 목표로 합니다.
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

또한 이번주부터는 프론트 페어와 함께하는 과제인 만큼 각 팀별로 미리 호흡을 맞춰 보는 좋은 기회가 될 것 같습니다. 모두 화이팅입니다🔥
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

## 미션
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

### 미션 목표
This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.

- Next.js 사용법을 공부해봅니다.
- Figma로 주어지는 디자인으로 스타일링 하는 방식에 익숙해집니다.
- Git을 이용한 협업 방식에 익숙해집니다.
## Learn More

### 기한
To learn more about Next.js, take a look at the following resources:

- 2024년 5월 10일 (기한 엄수)
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

### 필수 요건
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!

- [결과화면](https://next-netflix-18th-2.vercel.app/home)의 랜딩 페이지와 메인 페이지를 구현합니다.
- [Figma](https://www.figma.com/file/UqdXDovIczt1Gl0IjknHQf/Netflix?node-id=0%3A1)의 디자인을 그대로 구현합니다.
- Open api를 사용해서 데이터 패칭을 진행합니다. (ex. [themoviedb API](https://developers.themoviedb.org/3/getting-started/introduction))
- `yarn`, `yarn berry`, `npm`, `pnpm`등 패키지 매니저를 직접 선택해 Next.js를 세팅해 봅니다.
## Deploy on Vercel

### 선택 사항
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

- SSR(Server Side Rendering)을 적용해서 구현합니다.
- 웹 폰트를 사용합니다.
- 반응형을 고려합니다.

## **Key Question**

- Server Side Rendering과 Client Side Rendering의 차이
- SEO란
- 전반적인 협업 과정

## 링크 및 참고자료

- [랜딩페이지 영상](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)
- [React에서 무한 스크롤 구현하기](https://tech.kakaoenterprise.com/149)
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
5 changes: 5 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/sh
cd ../
mkdir output
cp -R ./next-netflix-19th/* ./output
cp -R ./output ./next-netflix-19th/
25 changes: 25 additions & 0 deletions next.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
webpack(config) {
config.module.rules.push({
test: /\.svg$/,
use: ["@svgr/webpack"],
});

return config;
},
images: {
formats: ["image/avif", "image/webp"],
remotePatterns: [
{
protocol: "https",
hostname: "image.tmdb.org",
port: "",
pathname: "/t/p/**/*",
},
],
},
};

export default nextConfig;
Loading