/Outsourcing-project

โœ๐Ÿป ๊ต์œก ๋ชฉ์ ์œผ๋กœ ์ œ์ž‘ํ•œ ํ”„๋กœ์ ํŠธ์—์š”, ์ €์ž‘๊ถŒ์€ 1943CLASSIC์— ์žˆ์–ด์š”.

Primary LanguageJavaScriptMIT LicenseMIT

๐Ÿ€ 1943 ํด๋ž˜์‹ ๋ฆฌ๋‰ด์–ผ ํ”„๋กœ์ ํŠธ

๋ฆฌ์•กํŠธ ์‹ฌํ™”์ฃผ์ฐจ ์•„์›ƒ์†Œ์‹ฑ ํ”„๋กœ์ ํŠธ๋กœ 1943 ์ฃผ์ ์˜ ์‚ฌ์ดํŠธ๋ฅผ ๋ฆฌ๋‰ด์–ผ ํ–ˆ์–ด์š”
๋ฐฑ์—”๋“œ๋Š” supabase๋ฅผ ์ด์šฉํ–ˆ์–ด์š”

0. ํŒ€์› ์†Œ๊ฐœ

์†ก๋ณ„ํšŒ

๋‚จํ˜„์žฌ ์ด์˜ˆ๋ฆฐ ์ž„๋‹ค์€ ๊ฐ•๋™์„ ๊น€์šด์„ฑ ์ „์ธํ™”
ํ”„๋กœ์ ํŠธ ์„ธํŒ…,
๋ฉ”๋‰ด์†Œ๊ฐœ ํŽ˜์ด์ง€,
๋ฐ˜์‘ํ˜•
๋””์ž์ธ,
๊ณ ๊ฐ์˜์†Œ๋ฆฌ(cud),
์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ
๋ฉ”์ธ ํŽ˜์ด์ง€ ๊ณ ๊ฐ์˜ ์†Œ๋ฆฌ(r) ์ง€๋„ ํŽ˜์ด์ง€ ์ง€๋„ ํŽ˜์ด์ง€
์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ
  • ๊ฐ์ž ๋งก์€ ์—ญํ• ์„ ๋‹คํ•œ ๋’ค์—๋„, ๋‹ค๋ฅธ ํŒ€์›์˜ ์ž‘์—…์„ ๋„์™€์ฃผ๋ฉด์„œ ์™„์„ฑํ–ˆ์–ด์š” ๐ŸŒŸ

0-1. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๊ธฐ๊ฐ„

  • 2024.06.17 ~ 2024.06.21

0-2. ํ”„๋กœ์ ํŠธ ์ค‘์—๋Š”..

image
  • ๐Ÿ’ฌ ํ™œ๋ฐœํ•˜๊ฒŒ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด zep๊ณผ slack์„ ์‚ฌ์šฉํ–ˆ์–ด์š”
  • ๐Ÿ’ฌ ์ฝ”๋“œ๋ฆฌ๋ทฐํ•˜๋Š” ๋ฌธํ™”๋ฅผ ์ง€ํ–ฅํ•ด์š”
  • ๐Ÿ’ฌ pr์— 1๋ช… ์ด์ƒ์˜ approve๊ฐ€ ์žˆ์–ด์•ผ develop์— merge๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ–ˆ์–ด์š”

1. ์‚ฌ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

tanstack-query

์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ด€๋ฆฌ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉฐ, ๋น„๋™๊ธฐ ๋กœ์ง์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์–ด์š”

supabase

Supabase๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์–ด์š”

react-router-dom

React Router๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SPA์˜ ๋ผ์šฐํŒ…์„ ๊ด€๋ฆฌํ–ˆ์–ด์š”

styled-components

CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Styled Components๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ๋ง์„ ํ–ˆ์–ด์š”

swiper

๋ชจ๋ฐ”์ผ ๋ฐ ์›น์—์„œ ์บ๋Ÿฌ์…€ UI๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์–ด์š”

react-intersection-observer

์Šคํฌ๋กค ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , ๋ทฐํฌํŠธ์— ๋“ค์–ด์˜ค๋Š” ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ์–ด์š”, ์ด๋ฅผ ํ†ตํ•ด ์ง€์—ฐ ๋กœ๋”ฉ(lazy loading)๊ณผ ๊ฐ™์€ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ ์šฉํ–ˆ์–ด์š”

lodash

Lodash๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด, ๊ฐ์ฒด ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์˜€์–ด์š”


2. ๋Œ€ํ‘œ๊ธฐ๋Šฅ

  • 1943์˜ ๋Œ€ํ‘œ ๋ฉ”๋‰ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”
  • ๋ฉ”๋‰ด๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž๊ฒŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”
  • 1943 ๋งค์žฅ์˜ ์œ„์น˜๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”
  • ๊ณ ๊ฐ์˜ ์†Œ๋ฆฌ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์–ด์š”

3. ์ƒ์„ธ์„ค๋ช…

1. Swiper๋ฅผ ์ด์šฉํ•œ ๋ฉ”์ธํŽ˜์ด์ง€ ๊ตฌํ˜„


  • 1943์˜ ๋Œ€ํ‘œ์ ์ธ ๋‚ด์šฉ์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์–ด์š”
  • Swiper์™€ ๋‚ด์žฅ ๋ชจ๋“ˆ์ธ Mousewheel๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ fullpage UI๋ฅผ ๊ตฌํ˜„ํ–ˆ์–ด์š”

2. ์นด์นด์˜ค๋งต API๋ฅผ ์ด์šฉํ•œ ๋งค์žฅ์ฐพ๊ธฐ ๊ตฌํ˜„


  • 1943์˜ ๋งค์žฅ ์œ„์น˜๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”
  • ์›ํ•˜๋Š” ๋งค์žฅ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์–ด์š”
  • lodash์˜ debounce ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์„ฑ์„ ๋†’์˜€์–ด์š”

3. ๋ฉ”๋‰ด์†Œ๊ฐœ ํŽ˜์ด์ง€ ๊ตฌํ˜„





  • 1943์˜ ๋Œ€ํ‘œ ๋ฉ”๋‰ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”
  • ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”
  • react-intersection-observer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”

4. ๊ณ ๊ฐ์˜ ์†Œ๋ฆฌ CRUD ๊ตฌํ˜„


  • ๊ณ ๊ฐ์ด ์˜ฌ๋ฆฐ ๊ฒŒ์‹œ๊ธ€์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”


  • ๋น„ํšŒ์›๋„ ์ž์œ ๋กญ๊ฒŒ ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”


  • ์ž‘์„ฑํ• ๋•Œ ์ž…๋ ฅํ–ˆ๋˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”
  • ์ˆ˜์ •๊ณผ ์‚ญ์ œ๋Š” ๋ณธ์ธ๋งŒ ํ•  ์ˆ˜ ์žˆ์–ด์š”


  • ์ˆ˜์ • ํŽ˜์ด์ง€์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๊ฑฐ๋‚˜, ์ž˜๋ชป๋œ ๊ฒฝ๋กœ๋กœ ์ ‘๊ทผํ•œ ๊ฒฝ์šฐ ์—๋Ÿฌ UI๋ฅผ ๋ณด์—ฌ์คฌ์–ด์š”

5. ๋ฐ˜์‘ํ˜• UI ์ง€์›





  • ๋ฐ˜์‘ํ˜• UI๋ฅผ ์ง€์›ํ•ด์š”
  • ์–ด๋””์—์„œ๋“  ์ตœ์ ํ™” ๋œ ํ™”๋ฉด์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”