- λͺ©ν : μν APIνμ©ν νΈλ μΌλ¬ μ¬μ΄νΈ λ§λ€κΈ°
- μμ κΈ°κ° : 2022.09.06 ~ 2022.09.08
https://hotsix-imlab.netlify.app/
λ©€λ² | λ΄λΉ | ν¬λΆ |
---|---|---|
κΉμΉλͺ¨(νμ₯) | νλ‘ νΈμλ | ν리μ¨λ³΄λ© μ½μ€ μλ£ν κ΄λ ¨κΈ°μ μ·¨μ μ±κ³΅! |
μμ°μ | νλ‘ νΈμλ | ν리μ¨λ³΄λ© κΈ°λ°μΌλ‘ ν루빨리 μ΄μ§ |
μ΄μ’ νΈ | νλ‘ νΈμλ | μνΌμ€ μκ²° μ μ μ€νμμ€ μ»¨νΈλ¦¬λ·°ν° λ¬κΈ° |
λ―Όμ κ²½ | νλ‘ νΈμλ | 10μ μμ μ·¨μ§! |
κ°λ€ν | νλ‘ νΈμλ | μ€λ¬΄λ₯Ό μλ μ μ κ°λ°μ λκΈ° |
μμ±ν | νλ‘ νΈμλ | μ’μνμ¬λ‘ μ΄μ§ μ±κ³΅νκΈ° |
1. dev (κ°λ°) λΈλμΉλ₯Ό μμ±νλ€.
2. κ°μ μ£Όμ΄μ§ μμ
μ λν issueλ₯Ό μμ±νλ€.
3. μμ±λ issue λ²νΈλ‘ κ°λ³ branch μ΄λ¦μ κ°λλ€
4. κ°λ³ branchμμ μμ
ν Git 컨벀μ
μ λ°λΌ μ»€λ° λ° PRμ νλ€.
5. μ΄λ, PRμ dev(κ°λ°)λ‘ νλ€.
6. λͺ¨λ issue close λ° μμ
μ¬ν μμμ mainμΌλ‘ dev(κ°λ°) λΈλμΉλ₯Ό PRνλ€.
7. μ΄ν μμ
λ°μμ 1~6μ λ°λ³΅νλ€.
λ ν¬μ§ν 리λ₯Ό clone
ν©λλ€
$ git clone https://github.com/Pre-HotSix/wanted-pre-onboarding-imlab.git
dependenciesλ₯Ό μ€μΉν©λλ€
$ npm install
νλ‘μ νΈλ₯Ό μ€νν©λλ€
$ npm start
root
βββ .babelrc
βββ .eslintrc
βββ .vscode
βββ .prettierrc
βββ package-lock.json
βββ package.json
βββ tsconfig.json
βββ public
| βββ favicon.ico
| βββ index.html
βββ config
| βββ webpack.common.js
| βββ webpack.dev.js
| βββ webpack.prod.js
βββ src
βββ apis
βββ assets
βββ components
βββ hooks
βββ pages
βββ routes
βββ styles
βββ App.jsx
βββ types.d.ts
βββ index.js
ν΄λ | κ΅¬λΆ |
---|---|
apis | apiν¨μλ€μ λͺ¨μλ ν΄λ |
assets | λλ―Έ λ° μ΄λ―Έμ§ λ± λ‘컬 νμΌ |
components | μ½λ μ¬μ¬μ©μ μν μ»΄ν¬λνΈ κ΄λ¦¬ν ν΄λ |
hooks | reactμ 컀μ€ν hookμ κ΄λ¦¬νλ ν΄λ |
pages | urlμ£Όμμ λ°λ₯Έ νμ΄μ§ κ΅¬μ± ν΄λ |
routes | λΌμ°ν κ΄λ ¨ μ²λ¦¬ ν΄λ |
styles | μ μμΌλ‘ μ¬μ©νλ style κ΄λ¦¬ ν΄λ |
-
곡ν΅
- Loading μν νκΈ°
- Infinite scroll
- μ€ν¬λ‘€ κ°μ§νμ¬ ScrollUp button νμλλλ‘, λλ₯Ό μ μ΅μλ¨μΌλ‘ μ€ν¬λ‘€ μ΄λ
- API Response λ°μ΄ν° μΊμ¬ (λΌμ΄λΈλ¬λ¦¬ μ¬μ©)
- μΊμ±μ λν κ°λ¨ν κ°λ μ κΈλ‘ μμ±ν΄μ READMEμ ν¬ν¨ or λ§ν¬ννλ‘ μ°κ²°ν΄μ£ΌμΈμ
-
movies / 리μ€νΈ νμ΄μ§
- νλ²μ κ°μ Έμ¬ λ°μ΄ν° μ΅λ 20
- μ λͺ©, ν¬μ€ν°, λ³μ νμ
- ν¬μ€ν° μλ κ²½μ°, λ체 μ΄λ―Έμ§ μ¬μ©
-
movie / μμΈ νμ΄μ§
- λΉλμ€ μλ κ²½μ°, νμ΄μ§ μ§μ μ μλμΌλ‘ λΉλμ€ νλ μ΄
- μ λͺ©, ν¬μ€ν°, λ³μ , μ μ μ°λ, μ₯λ₯΄ λ°μ΄ν° νμ©ν΄μ UI νκΈ°
- κ·Έ μΈμ λ°μ΄ν° μΆκ° νμ© μ¬λΆλ μμ
-
search
- μ λͺ©, ν¬μ€ν°, λ³μ
- ν¬μ€ν° μλ κ²½μ°, λ체 μ΄λ―Έμ§ μ¬μ©
π‘ μ΄μ : styled-componet νμΌμ΄ κΈΈμ΄μ§λ©΄μ ν νμΌ λ΄μμ JSX μ½λμ CSS μ½λλ₯Ό λμμ λ³΄κΈ°κ° μ΄λ €μμ Έ, κ°λ μ±μ μν΄ λΆλ¦¬νμμ΅λλ€. μΆκ°μ μΌλ‘ style μ»΄ν¬λνΈμλ μμ S.μ ν¬ν¨ν΄ λ€μ΄λ°μ νμ¬, μΌλ° μ»΄ν¬λνΈμ ꡬλΆνμμ΅λλ€.
2. 곡ν΅μ μΌλ‘ μ°λ μ»΄ν¬λνΈλ₯Ό Layout(/src/components/common/layout) μμμ ꡬμ±νκ³ Routes νμΌμ μ μ©νμ΅λλ€. (Navigation, Footer, Header).
π‘ μ΄μ : μ΅λν μ½λ μμ μ€μ΄κΈ° μν΄μ μ΄λ©°, μ½λκ° λ§μμ§λ©΄ λΉλ μλ λ° λ λλ§ μλκ° μ νλκΈ° λλ¬Έμ λλ€. λν, importμ λΉλλ μ€μΌμ μμ΅λλ€.
3. λ§μ μ»΄ν¬λνΈ, μ½λλ₯Ό export ν΄μ κ΄λ¦¬ν΄μΌ νλ κ²½μ° index.ts νμΌμ λ§λ€μ΄ import κ²½λ‘λ₯Ό μ€μμ΅λλ€.
π‘ μ΄μ : import κ²½λ‘κ° κΈΈμ΄μ§λ©΄ κ°λ μ±μ΄ λ¨μ΄μ§κ³ , νμΌ μΆμ μ΄ λΆνΈνλ€λ λ¨μ μ΄ μκΈ°λλ¬Έμ λλ€. μ΄λ₯Ό μ€μ΄κΈ° μν΄ κ° root ν΄λμ index.js νμΌμ λ§λ€μ΄ export default νΈλ€λ§μ νμ΅λλ€.
4. 무νμ€ν¬λ‘€ μ»΄ν¬λνΈ, useInfiQry ν λΆλ¦¬λ‘ μ¬μ¬μ© κ°λ₯νλλ‘ μΆμν νμμ΅λλ€.
π‘ μ΄μ : 무νμ€ν¬λ‘€μ΄ λ€μ΄κ°λ νμ΄μ§λ€μμ μ¬μ¬μ©μ μν΄ μ»΄ν¬λνΈν νκ³ , cacheκ°λ μ΄ μ°μ΄λ λΆλΆμ 컀μ€ν ν μΌλ‘ λ§λ€μ΄μ μ¬μ¬μ©νμ΅λλ€.
5. κ° λΌμ°ν°μμ 곡ν΅μ μΌλ‘ μ°μΌ μ»΄ν¬λνΈλ€μ /src/components νμ νμΌλ‘ μ 리νμ΅λλ€.
π‘ μ΄μ : HomePage, TopRatedPage, NowPlayingPage, UpComingPage, SearchPageμμ, κ°μ ꡬ쑰μ μΉ΄λ μ»΄ν¬λνΈ νμμΌλ‘ μνμ 보λ₯Ό ꡬμ±νμ¬ λ³΄μ¬μ£Όλ €κ³ νκΈ° λλ¬Έμ λΆλ¦¬νμ¬ κ΅¬μ±νμ΅λλ€.
- Card(μΉ΄λ)
- CardContainer(Cardλ₯Ό ꡬμ±νλ 컨νμ΄λ)
- Container(CardContainerλ₯Ό ꡬμ±νλ 컨νμ΄λ)
- μΊμ±μ μ½μμμ λ³Όλλ λ°μ΄ν°κ° μ λ°μ΄νΈ λκ³ μμΌλ, μ€μ λ‘ μλ²μ μμ²μ λ λ¦¬μ§ μλ κ² μ λλ€.
- μ μ κ°μ Έμ¨ λ°μ΄ν°λ κ³μ°λ κ²°κ³Όκ°μ 볡μ¬λ³Έμ μ μ₯νμ¬, μ²λ¦¬μλλ₯Ό ν₯μμν€κ³ μ΄λ₯Ό ν΅ν΄ μ΄ν μμ²μ λ λΉ λ₯΄κ² μ²λ¦¬ν μ μμ΅λλ€.
- μΊμ± κΈ°λ₯μ μ¬μ©νκΈ° μν΄, React Query λΌμ΄λΈλ¬λ¦¬μ useInfiniteQuery ν μ μ¬μ©νμ΅λλ€.
- React Queryλ, μ λν¬ν ν€κ°μΌλ‘ ꡬλΆνμ¬ λ°μ΄ν° μΊμ±μ΄ κ°λ₯ν©λλ€. λ¬Έμμ΄κ³Ό λ°°μ΄μ΄ μ¬μ©κ°λ₯νμ§λ§, 컨벀μ μ λ§μΆκΈ° μν΄ λ³΄ν΅ λ°°μ΄μ μ¬μ©ν©λλ€.
- useQueryμ useInfiniteQueryλ μ λν¬ν ν€κ°, Promiseλ₯Ό 리ν΄νλ ν¨μ, μ΅μ μ μ¬μ©ν μ μμ΅λλ€.
- staletimeμ μΊμ λ°μ΄ν°μ μ μ ν μνμ λν μ΅μ μ λλ€. λ°λ‘ μ€μ ν΄μ£Όμ§ μμΌλ©΄, μΊμ± λ°μ΄ν°λ νμ stale νλ€κ³ μ¬κ²¨μ Έ μλ²μ κ³μμ μΈ μμ²μ νκ²λ©λλ€.
- cachetimeμ λ©λͺ¨λ¦¬μ μ μ₯λμ΄ μλ μΊμ λ°μ΄ν°κ° μΈμ κΉμ§ μ μ§λλμ§μ λν μ΅μ μ λλ€.
- μΊμ±λ λ°μ΄ν°λ QueryClient()λ₯Ό ν΅ν΄ μ‘°νν μ μμ΅λλ€. (+ queriesMap)