Skip to content

chaeminseok/so2zy_FE

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ ๋ชฉ์ฐจ

  1. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ
  2. ๊ธฐ์ˆ  ์Šคํƒ
  3. ์ฃผ์š” ๊ธฐ๋Šฅ
  4. ํ™”๋ฉด ๊ตฌ์„ฑ
  5. ํŒ€ ์†Œ๊ฐœ
  6. ํด๋” ๊ตฌ์กฐ
  7. ํšŒ๊ณ  ๋ฐ ๋ฆฌํŒฉํ† ๋ง

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๋กœ๊ณ  ์„ค๋ช…
AROOM์€ ํ˜ธํ…”, ํŽœ์…˜, ๋ชจํ…”์„ ๋น„๋กฏํ•œ ์ „๊ตญ์˜ ์ˆ™์†Œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž์˜ ์ˆ™์†Œ ์กฐํšŒ/์žฅ๋ฐ”๊ตฌ๋‹ˆ/์˜ˆ์•ฝ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ”— ์„œ๋น„์Šค ๋ฐ”๋กœ๊ฐ€๊ธฐ Click ! ๐Ÿ‘ˆ

๐Ÿ“Œ ๊ธฐ์ˆ  ์Šคํƒ

Environment

FrontEnd

BackEnd

Others


๐Ÿ“Œ ์ฃผ์š” ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ ๋‚ด์šฉ
๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธํ•œ ์œ ์ €์˜ ์ •๋ณด๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ํŽ˜์ด์ง€ ๋ฐ ๊ธฐ๋Šฅ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋ฉ”์ธ ํŽ˜์ด์ง€ ์ง€์—ญ/๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ํŒ๋งค๋Ÿ‰/์ฐœ ๋งŽ์€ ์ˆœ ์ˆ™์†Œ๋ฅผ ์บ๋Ÿฌ์…€ ํ˜•ํƒœ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์ˆ™์†Œ๋ฅผ ๋ฌดํ•œ์Šคํฌ๋กค๋กœ ์กฐํšŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ง€์—ญ ํŽ˜์ด์ง€ ๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง(๋‚ ์งœ/์ธ์›์ˆ˜/๊ฐ€๊ฒฉ)๊ณผ ๋”๋ถˆ์–ด ์ง€์—ญ ํ•„ํ„ฐ๋ง๊ณผ ์ •๋ ฌ(๊ฐ€๊ฒฉ/ํŒ๋งค๋Ÿ‰)์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฌดํ•œ์Šคํฌ๋กค๋กœ ํ•ด๋‹น ์ˆ™์†Œ ์กฐํšŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ง€์—ญ์˜ ํ˜ธํ…” ์œ„์น˜/์ •๋ณด๋ฅผ ์ง€๋„์—์„œ ์กฐํšŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง(๋‚ ์งœ/์ธ์›์ˆ˜/๊ฐ€๊ฒฉ)๊ณผ ๋”๋ถˆ์–ด ๊ฒ€์ƒ‰ ํ•„ํ„ฐ๋ง๊ณผ ์ •๋ ฌ(๊ฐ€๊ฒฉ/ํŒ๋งค๋Ÿ‰)์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฌดํ•œ์Šคํฌ๋กค๋กœ ํ•ด๋‹น ์ˆ™์†Œ ์กฐํšŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ƒ์„ธ ํŽ˜์ด์ง€ ๋กœ๊ทธ์ธํ•œ ์œ ์ €๊ฐ€ ์ˆ™์†Œ์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ˆ™์†Œ์˜ ์œ„์น˜๋ฅผ ์ง€๋„์—์„œ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ•ด๋‹น ์ˆ™์†Œ์˜ ๊ฐ์‹ค ์ •๋ณด ์กฐํšŒ/์ฐœ/์˜ˆ์•ฝ/์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ธ์›์ˆ˜์™€ ๋‚ ์งœ๋กœ ํ•„ํ„ฐ๋ง๋˜์–ด ํ•ด๋‹น๋˜๋Š” ๊ฐ์‹ค ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋กœ๊ทธ์ธํ•œ ์œ ์ €๊ฐ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ๊ฐ์‹ค๋“ค์˜ ์ •๋ณด ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์‚ญ์ œ ๋ฐ ์˜ˆ์•ฝ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์•ฝ ๋กœ๊ทธ์ธํ•œ ์œ ์ €๊ฐ€ ์˜ˆ์•ฝํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ์‹ค๋“ค์˜ ์˜ˆ์•ฝ(๊ฒฐ์ œ)๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์•ฝํ™•์ธ ๊ฒฐ์ œ๊นŒ์ง€ ์™„๋ฃŒํ•˜๊ฒŒ ๋˜๋ฉด ์ฃผ๋ฌธ ๋ฒˆํ˜ธ์™€ ์˜ˆ์•ฝ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ํ™”๋ฉด ๊ตฌ์„ฑ

ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ๋ฉ”์ธ ํŽ˜์ด์ง€ ๊ฒ€์ƒ‰/์ง€์—ญ ํŽ˜์ด์ง€
login ๋ฉ”์ธ KakaoTalk_20231201_035838151
์ƒ์„ธ/์žฅ๋ฐ”๊ตฌ๋‹ˆ/์˜ˆ์•ฝ ํŽ˜์ด์ง€ ์ƒ์„ธ/์ฐœ/์žฅ๋ฐ”๊ตฌ๋‹ˆ/์˜ˆ์•ฝ ํŽ˜์ด์ง€
KakaoTalk_20231201_034241583 zzim

๐Ÿ“Œ ํŒ€ ์†Œ๊ฐœ

์–ด์Šน์ค€ ํ”„๋กœํ•„ ๊น€๋ฏผ์„œ ํ”„๋กœํ•„ ์ง„์ข…์ˆ˜ ํ”„๋กœํ•„ ์ฑ„๋ฏผ์„ ํ”„๋กœํ•„
์–ด์Šน์ค€
ํŒ€์žฅ (FE)
๊น€๋ฏผ์„œ
ํŒ€์› (FE)
์ง„์ข…์ˆ˜
ํŒ€์› (FE)
์ฑ„๋ฏผ์„
ํŒ€์› (FE)
์ด๋ฆ„ ์—ญํ• 
๊ฐœ๋ฐœ ๋‚ด์šฉ
- ๊ณตํ†ต - ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ
- ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„
- msw๋กœ mock ๋ฐ์ดํ„ฐ ํ…Œ์ŠคํŠธ
์–ด์Šน์ค€ FE
ํŒ€์žฅ
- ๊ฒ€์ƒ‰/์ง€์—ญ ํŽ˜์ด์ง€
ย ย ย ย - ํ•„ํ„ฐ๋ง (๊ฒ€์ƒ‰/์ง€์—ญ/๋‚ ์งœ/์ธ์›์ˆ˜/๊ฐ€๊ฒฉ)
ย ย ย ย - ์ •๋ ฌ (๊ฐ€๊ฒฉ/ํŒ๋งค๋Ÿ‰)
ย ย ย ย - ์ง€๋„ (์ง€์—ญ๋ณ„ ์ค‘์‹ฌ์ขŒํ‘œ ์ ์šฉ + ์ˆ™์†Œ ๋งˆ์ปค/์˜ค๋ฒ„๋ ˆ์ด ํ‘œ์‹œ)
ย ย ย ย - ๋ฌดํ•œ์Šคํฌ๋กค
ย ย ย ย - ์ง€์—ญ ๋’ค๋กœ๊ฐ€๊ธฐ (์„ ํƒ์ง€์—ญ ๊ธฐ๋ก ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€ ๋ฐฐ์—ด)
- ๊ธฐํƒ€
ย ย ย ย - craco๋กœ path alias ์„ค์ •
ย ย ย ย - ํ”„๋กœ์ ํŠธ ํด๋” ๊ตฌ์กฐ ์„ธํŒ…
ย ย ย ย - ๋กœ๋”ฉ lottie
ย ย ย ย - README ์ž‘์„ฑ
๊น€๋ฏผ์„œ FE
ํŒ€์›
- ์ƒ์„ธ ํŽ˜์ด์ง€
ย ย ย ย - ์ˆ™์†Œ, ๊ฐ์‹ค ์ •๋ณด ์กฐํšŒ/ ํ•„ํ„ฐ๋ง (์ธ์›์ˆ˜/๋‚ ์งœ/์žฌ๊ณ ), ์ง€๋„(์ˆ™์†Œ ์œ„์น˜ ์ค‘์‹ฌ์ขŒํ‘œ/ ๋งˆ์ปค)
ย ย ย ย - ์˜ˆ์•ฝ/์žฅ๋ฐ”๊ตฌ๋‹ˆ/์ฐœ ์š”์ฒญ
- ์˜ˆ์•ฝ/์˜ˆ์•ฝํ™•์ธ ํŽ˜์ด์ง€
ย ย ย ย - ์˜ˆ์•ฝ/๊ฒฐ์ œ/์˜ˆ์•ฝํ™•์ธ ๊ธฐ๋Šฅ
- ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€
ย ย ย ย - ๋งˆํฌ์—…
- ๊ธฐํƒ€
ย ย ย ย - ๋กœ๋”ฉ/404/needLogin/์นด๋“œ ์ปดํฌ๋„ŒํŠธ
ย ย ย ย - theme/globalStyle ์„ค์ •
ย ย ย ย - README
์ง„์ข…์ˆ˜ FE
ํŒ€์›
- ๋ฉ”์ธ ํŽ˜์ด์ง€
ย ย ย ย - ์บ๋Ÿฌ์…€
ย ย ย ย - ๋ฌดํ•œ์Šคํฌ๋กค
ย ย ย ย - ํŒ๋งค๋Ÿ‰/์ฐœ ๋งŽ์€ ์ˆœ/๋ชจ๋“  ์ˆ™์†Œ
ย ย ย ย - ๊ฒ€์ƒ‰/์ง€์—ญ ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ
- ์˜ˆ์•ฝ ํŽ˜์ด์ง€
ย ย ย ย - ๋งˆํฌ์—…
- ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€
ย ย ย ย - ์กฐํšŒ, ๋ฐ์ดํ„ฐ ์˜ˆ์•ฝํŽ˜์ด์ง€๋กœ ์ „๋‹ฌ
ย ย ย ย  - ์‚ญ์ œ
์ฑ„๋ฏผ์„ FE
ํŒ€์›
- ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ
ย ย ย ย - JWT (AccessToken/RefreshToken)
ย ย ย ย - ์œ ์ € ์ •๋ณด ์œ ํšจ์„ฑ๊ฒ€์‚ฌ
ย ย ย ย - ์œ ์ € ์ •๋ณด ๋ฐ ํ† ํฐ ์ „์—ญ ๊ด€๋ฆฌ
- ํ—ค๋”/ํ‘ธํ„ฐ
ย ย ย ย - ๋กœ๊ณ , ๊ธฐ๋Šฅ๊ตฌํ˜„

๐Ÿ“Œ ํด๋” ๊ตฌ์กฐ

ํด๋” ๊ตฌ์กฐ ๋ณด๊ธฐ
๐Ÿ“ฆSO2ZY_FE
โ”ฃโ”€ src
โ”ƒ  โ”ฃโ”€ App.css
โ”ƒ  โ”ฃโ”€ App.tsx
โ”ƒ  โ”ฃโ”€ assets
โ”ƒ  โ”ƒ  โ”ฃโ”€ fonts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ GmarketSansTTFLight.ttf
โ”ƒ  โ”ƒ  โ”—โ”€ images
โ”ƒ  โ”ƒ     โ”ฃโ”€ check.svg
โ”ƒ  โ”ƒ     โ”ฃโ”€ chevron-down.svg
โ”ƒ  โ”ƒ     โ”ฃโ”€ footer_github_black_icon.png
โ”ƒ  โ”ƒ     โ”ฃโ”€ home.png
โ”ƒ  โ”ƒ     โ”ฃโ”€ hotelDefaultImg.png
โ”ƒ  โ”ƒ     โ”ฃโ”€ hotelDefaultImg2.png
โ”ƒ  โ”ƒ     โ”ฃโ”€ house.svg
โ”ƒ  โ”ƒ     โ”ฃโ”€ mainLogo.svg
โ”ƒ  โ”ƒ     โ”ฃโ”€ mainLogoThree.png
โ”ƒ  โ”ƒ     โ”ฃโ”€ mainLogoTwo.svg
โ”ƒ  โ”ƒ     โ”ฃโ”€ map.svg
โ”ƒ  โ”ƒ     โ”ฃโ”€ shoppingBag.png
โ”ƒ  โ”ƒ     โ”ฃโ”€ sort-down.svg
โ”ƒ  โ”ƒ     โ”—โ”€ sort-up.svg
โ”ƒ  โ”ฃโ”€ components
โ”ƒ  โ”ƒ  โ”ฃโ”€ Calendar
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Calendar.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ index.ts
โ”ƒ  โ”ƒ  โ”ฃโ”€ common
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Card
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Card.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Footer
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Footer.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Header
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Header.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Item
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ Item.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Loading
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ Loading.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ NotFound
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ NotFound.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ ScrollToTop
โ”ƒ  โ”ƒ  โ”ƒ     โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ     โ”—โ”€ ScrollToTop.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ Modal
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ Modal.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ PriceSlider
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ PriceSlider.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ SelectPeople
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ SelectPeople.tsx
โ”ƒ  โ”ƒ  โ”—โ”€ SelectRegion
โ”ƒ  โ”ƒ     โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ     โ”—โ”€ SelectRegion.tsx
โ”ƒ  โ”ฃโ”€ hooks
โ”ƒ  โ”ƒ  โ”—โ”€ a.ts
โ”ƒ  โ”ฃโ”€ index.css
โ”ƒ  โ”ฃโ”€ index.tsx
โ”ƒ  โ”ฃโ”€ jsonwebtoken-promisified.d.ts
โ”ƒ  โ”ฃโ”€ pages
โ”ƒ  โ”ƒ  โ”ฃโ”€ cart
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Cart.page.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ components
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ getCart.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ index.ts
โ”ƒ  โ”ƒ  โ”ฃโ”€ confirm
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ Confirm.page.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ index.ts
โ”ƒ  โ”ƒ  โ”ฃโ”€ main
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ components
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ getPlaces.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ mainAllListContainer.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ mainAllListItem.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ mainListContainer.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ mainListItem.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ modalData.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ regionModal.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ regionSelectBtn.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ Main.page.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ placeDetail
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ components
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ MapModal.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ PlaceDetail.page.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ regionList
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ components
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ Map.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ RegionList.page.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ reservation
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ Reservation.page.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ searchList
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ index.ts
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ SearchList.page.tsx
โ”ƒ  โ”ƒ  โ”ฃโ”€ signIn
โ”ƒ  โ”ƒ  โ”ƒ  โ”ฃโ”€ components
โ”ƒ  โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ SignIn.tsx
โ”ƒ  โ”ƒ  โ”ƒ  โ”—โ”€ index.ts
โ”ƒ  โ”ƒ  โ”—โ”€ signUp
โ”ƒ  โ”ƒ     โ”ฃโ”€ components
โ”ƒ  โ”ƒ     โ”ƒ  โ”—โ”€ SignUp.tsx
โ”ƒ  โ”ƒ     โ”—โ”€ index.ts
โ”ƒ  โ”ฃโ”€ react-app-env.d.ts
โ”ƒ  โ”ฃโ”€ recoil
โ”ƒ  โ”ƒ  โ”ฃโ”€ atom.ts
โ”ƒ  โ”ƒ  โ”ฃโ”€ regionList.ts
โ”ƒ  โ”ƒ  โ”ฃโ”€ regionModal.ts
โ”ƒ  โ”ƒ  โ”—โ”€ searchList.ts
โ”ƒ  โ”ฃโ”€ reportWebVitals.ts
โ”ƒ  โ”ฃโ”€ styles
โ”ƒ  โ”ƒ  โ”ฃโ”€ globalStyles.ts
โ”ƒ  โ”ƒ  โ”—โ”€ theme.ts
โ”ƒ  โ”—โ”€ utils
โ”ƒ     โ”ฃโ”€ getData.ts
โ”ƒ     โ”ฃโ”€ registerFunction.ts
โ”ƒ     โ”ฃโ”€ textLength.ts
โ”ƒ     โ”ฃโ”€ useFormatDate.ts
โ”ƒ     โ”—โ”€ useIntersectionObserver.ts
โ”ฃโ”€ tsconfig.json
โ”—โ”€ tsconfig.paths.json


๐Ÿ“Œ ํšŒ๊ณ  ๋ฐ ๋ฆฌํŒฉํ† ๋ง

โœ… ๊ฐœ์ธ ์—ญ๋Ÿ‰ ํšŒ๊ณ 

์ด๋ฆ„ ๋‚ด์šฉ
์–ด์Šน์ค€ ํ’€์Šคํƒ ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํž˜๋“ค์—ˆ๋˜ ๊ฒƒ์„ ๋‹ค์Œ 3๊ฐ€์ง€์˜€๋‹ค. 1. API ๋ช…์„ธ ์†Œํ†ต ๋ฐฉ์‹, 2. ๊ณ„์† ๋ฐ”๋€Œ๋Š” BE ๋ฐ์ดํ„ฐ ๋ฐ ๋กœ์ง ๊ตฌ์กฐ, 3. BE ์ธ์›๋“ค์˜ ์•„์‰ฌ์šด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜.

์šฐ์„ , ๋…ธ์…˜์— API ๋ช…์„ธ๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ, ์˜คํƒˆ์ž ๋ฐ ๋ˆ„๋ฝ์ด ์กด์žฌํ–ˆ์—ˆ๊ณ , ์ตœ์‹  ์—…๋ฐ์ดํŠธ๊ฐ€ ๋Š๋ ธ๊ณ , BE ์ž‘์—…์‹œ๊ฐ„์ด ์ถ”๊ฐ€์ ์œผ๋กœ ์†Œ์š”๋˜๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ Swagger ๋˜๋Š” REST Docs๋ฅผ ๊ถŒ์žฅํ–ˆ๊ณ , ์ด๋ฅผ BE ์ธก์—์„œ ๋ฐ›์•„๋“ค์˜€์œผ๋‚˜, ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฌ์› ๋‹ค.

๋‹ค์Œ์œผ๋กœ, MSW๋ฅผ ๋„์ž…ํ•˜์—ฌ BE๊ฐ€ ์„œ๋ฒ„ ๋ฐฐํฌํ•˜์ง€ ์•Š์•„๋„ ๋ชฉ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด API ๋กœ์ง์„ ๋ฏธ๋ฆฌ ์งค ์ˆ˜ ์žˆ์—ˆ์œผ๋‚˜, ๊ณ„์† BE ๋ฐ์ดํ„ฐ ๋ฐ ๋กœ์ง ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์–ด์„œ response๊ฐ€ ์–ด๋–ค์‹์œผ๋กœ ์˜ฌ ์ง€ ์žฅ๋‹ดํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ FE ์ธก์—์„œ ์ž์˜์ ์œผ๋กœ ์ถ”์ธกํ•˜์—ฌ MSW ํ‹€์„ ๊ณ ๋ คํ–ˆ์–ด์•ผ๊ณ , ๋‚˜์ค‘์— ์‹ค์ œ๋กœ ๋ฐ›์€ response์™€ ์ฐจ์ด๊ฐ€ ์žˆ์–ด์„œ ์ˆ˜์ •์„ ๊ฑฐ๋“ญํ•ด์•ผ ํ–ˆ์—ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ๋Š” BE ์ธ์›๋“ค์˜ ์•„์‰ฌ์šด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด๋‹ค. BE ์ธ์›๋“ค ์ค‘ ์„œ๋กœ ๊ฒน์น˜๋Š” DB ๋ฐ ๋กœ์ง์„ ๋‹ด๋‹นํ•œ ์ธ์›๋ผ๋ฆฌ ์ƒ์ดํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ์ž‘์—…ํ–ˆ์—ˆ๊ณ , ์ด๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•˜๋Š๋ผ ์ „์ฒด์ ์ธ ์ž‘์—…์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ–ˆ๋‹ค. ๋˜ํ•œ, BE ์ธก์—์„œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ๋กœ์ง์„ ๋ฏธ๋ฆฌ FE์— ๊ณต์œ ํ•˜์ง€ ์•Š์•˜๋‹ค. ๋ฏธ๋ฆฌ ์†Œํ†ตํ–ˆ๋‹ค๋ฉด ์ด์— ๋งž์ถฐ MSW๋ฅผ ๋” ๋””ํ…Œ์ผํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์„ ํ…๋ฐ ๊ทธ๋Ÿฌ์ง€ ๋ชปํ•ด, ์ถ”ํ›„ ๋Œ€์ฒ˜๊ฐ€ ์–ด๋ ค์›Œ์กŒ๋‹ค๋Š” ์ ์—์„œ๋„ ์•„์‰ฌ์› ๋‹ค.

ํ•œํŽธ, ์ด๋ฒˆ ํ’€์Šคํƒ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด MSW, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜, ์ด์ŠˆํŠธ๋ž˜ํ‚น, react-query ๋“ฑ์˜ ๊ธฐ์ˆ ์Šคํƒ ๋ฐ ๋Šฅ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ„์— ์–ธ๊ธ‰ํ•œ ์•„์‰ฌ์› ๋˜ ์ ๋“ค์„ ํ†ตํ•ด, ์•ž์œผ๋กœ์˜ ํ˜‘์—…์—์„œ๋Š” ๋ฏธ๋ฆฌ ์ž˜ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฆฌ๋ผ๋Š” ์ ์—์„œ๋„ ๋งŒ์กฑํ•œ๋‹ค.
๊น€๋ฏผ์„œ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋กœ ์„ธ ๊ฐ€์ง€์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1) ์—ญํ•  ๋ถ„๋ฐฐ
์—ญํ•  ๋ถ„๋ฐฐ ๋‹น์‹œ์— ์ธ์›์ด ์ ๋‹ค๋Š” ์ด์œ ๋กœ ๊ฒฝ์ค‘์„ ๋”ฐ์ ธ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋Š๋‚€ ๋ถ€๋ถ„์€ ์ž์œจ๋กœ ๋‘์—ˆ๋Š”๋ฐ, ํ›„๋ฐ˜์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ๊ฐ์ž ์ด์Šˆ์— ๋ชฐ์ž…ํ•˜๋‹ค๋ณด๋‹ˆ ์ž์œจ๋กœ ๋‘์—ˆ๋˜ ๋ถ€๋ถ„๋“ค์— ์ƒ๋Œ€์ ์œผ๋กœ ์†Œํ™€ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฝ์Šต๋‹ˆ๋‹ค. ์ƒ์„ธํ•œ ๋…ผ์˜๊ฐ€ ์žฅ๊ธฐ์ ์œผ๋กœ ๋ณด๋ฉด ๋””ํ…Œ์ผ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค๋Š” ๊ฒƒ์„ ๋” ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2) ์†Œํ†ต์˜ ์ค‘์š”์„ฑ
๋ฐฑ์—”๋“œ ๋‚ด์—์„œ ๊ฐ™์€ ๋กœ์ง์„ ๋งก๋Š” ๋ถ€๋ถ„๋“ค์—์„œ๋„ ๊ฐ์ž ๋‹ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ์ฃผ์—ˆ๊ณ , ์ด๋กœ ์ธํ•ด ๋Š์ž„์—†์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์–ด ๋งˆ๊ฐ๋‚ ๊นŒ์ง€๋„ api๊ฐ€ ๊ณ„์† ์ˆ˜์ •๋˜์–ด์„œ ์•„์‰ฌ์› ์Šต๋‹ˆ๋‹ค. ๋˜, ๋ฐฑ์—”๋“œ์™€ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์ด๋ฅผ ๊ณ ๋ ค ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ฃผ์–ด์„œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๊ณ„์† ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ์†Œํ†ต์˜ ์ค‘์š”์„ฑ์„ ๋”์šฑ๋” ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

3) ๋ฆฌ๋ Œ๋”๋ง๊ณผ ์ตœ์ ํ™”์— ๋Œ€ํ•œ ์ค‘์š”์„ฑ
๋น„๋™๊ธฐ์™€ ๋ฆฌ๋ Œ๋”๋ง์œผ๋กœ ์ธํ•ด ๋ฐฑ์—”๋“œ์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ตœ์ ํ™”์— ๋Œ€ํ•ด ๋” ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์œ„ ์„ธ ๊ฐ€์ง€์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๊ณ , msw๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค. react-query์™€ jest๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•œ๊ฑฐ ๊ฐ™์•„์„œ, ๊ณต๋ถ€ํ•˜์—ฌ ๋‹ค์Œ์— ์ข€ ๋” ํ™œ์šฉํ•˜๋ฉด ์ข‹์„๊ฑฐ ๊ฐ™๋‹จ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
์ง„์ข…์ˆ˜ ์ด๋ฒˆ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํž˜๋“ค์—ˆ๋˜ ์ ์€ ์ฒซ ๋ฒˆ์งธ๋กœ 4๋ช…์ด ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚˜๋ˆ„์–ด ๋ช‡ ๊ฐ€์ง€ ํŽ˜์ด์ง€๋ฅผ ํ›„์ˆœ์œ„๋กœ ๋นผ๊ณ  ๊ทธ ๋’ค ๋จผ์ € ๋๋‚˜๋Š” ์‚ฌ๋žŒ์ด ๊ฐ€์ ธ๊ฐ€๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ง€์ฒด๋˜์–ด ๊ธ‰ํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋‹ค๋ณด๋‹ˆ ์กฐ๊ธ‰ํ•จ์— ๊ธฐ๋Šฅ์„ ์ข€ ๋” ์งœ์ž„์ƒˆ์žˆ๊ฒŒ ๊ตฌ์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฒฐ๊ตญ ๋ฆฌํŒฉํ† ๋ง๋•Œ ๊ฑฐ์˜ ๊ฐˆ์•„ ์—Ž์—ˆ๋Š”๋ฐ ์ดˆ๋ฐ˜์— ์กฐ๊ธˆ ๋” ์—ญํ•  ๋ถ„๋ฐฐ๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ํ–ˆ๋”๋ผ๋ฉด ์ข€ ๋” ์งœ์ž„์ƒˆ ์žˆ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹จ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๋˜ํ•œ ๋ฐฑ์—”๋“œ์™€์˜ ํ˜‘์—…์ด ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์šด ์ผ์ด ์•„๋‹˜์„ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ฐ์ž ์ƒ๊ฐํ–ˆ๋˜ ๋ฐ”๊ฐ€ ๋‹ฌ๋ž๊ณ  ์ด๋ฅผ ์†Œํ†ต์„ ํ†ตํ•ด ์กฐ์œจํ•ด ๋‚˜๊ฐ”์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์„œ๋กœ ์ต์ˆ™์น˜ ์•Š๋‹ค๋ณด๋‹ˆ ๋ฏธํกํ•œ ์ ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ฐฑ์—”๋“œ์—์„œ ์ƒ์ดํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋ชฉ์—… ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•  ์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฒฐ๊ตญ ์ด๋ฅผ ๋‹ค์‹œ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ์ž‘์—… ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚ฌ๊ณ  ๋งˆ๊ฐ ์ „ ๋‚ ์— api๋ฅผ ๋ฐ›์•„์„œ ์ž‘์—… ํ•˜๋‹ค ๋ณด๋‹ˆ ๋””ํ…Œ์ผํ•œ ์ธก๋ฉด์—์„œ ์•„์‰ฌ์›€์„ ๋‚จ๊ฒผ๋‹ค. ์ด ๋ถ€๋ถ„ ๋˜ํ•œ ์†Œํ†ต์ด ์›ํ™œํ–ˆ๋”๋ผ๋ฉด ์ข€ ๋” ์ˆ˜์›”ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๋ถ€๋ถ„์ด๋ž€ ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ  ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์†Œํ†ต์„ ๋” ์ž์ฃผ ํ•˜๊ณ  ์ด๋ฅผ ๋ฌธ์„œํ™”๋ฅผ ํ†ตํ•ด ์„œ๋กœ์˜ ์ดํ•ด๊ฐ€ ์ผ์น˜ํ•จ์„ ๊ณ„์† ํ™•์ธํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋‹ค.

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์†Œํ†ต์˜ ์ค‘์š”์„ฑ๊ณผ ๊ทธ๋ฆฌ๊ณ  ๋ฌดํ•œ ์Šคํฌ๋กค ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ข€ ๋” ์ดํ•ดํ•˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์–ด์„œ ์ข‹์•˜์œผ๋ฉฐ ํŒ€์›๋ถ„์˜ ๋„์›€์„ ๋ฐ›์•„ MSW๋„ ๋งŽ์ด ๋ฐฐ์›Œ๊ฐˆ ์ˆ˜ ์žˆ๋˜ ์ข‹์€ ํ”„๋กœ์ ํŠธ์˜€๋‹ค. ํ•œ ํŽธ์œผ๋กœ ์Šค์Šค๋กœ๊ฐ€ ์•„์ง ๋” ๊ณต๋ถ€ํ•ด์•ผํ•จ์„ ๋Š๊ผˆ๊ณ  ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์™€ ๋””ํ…Œ์ผํ•œ ๋ถ€๋ถ„์„ ๋†“์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๋‚จ์€ ๊ธฐ๊ฐ„๋™์•ˆ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด์•ผํ•จ์„ ๋Š๊ผˆ๋‹ค.
์ฑ„๋ฏผ์„ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํž˜๋“ค์—ˆ๋˜ ์ ์€ ์šฐ์„  ๋ฐฑ์—”๋“œ์™€์˜ ์†Œํ†ต์ด์˜€๋‹ค. ์ฒ˜์Œ API ๋ช…์„ธ๋ฅผ ๋…ธ์…˜์— ์ ์–ด์„œ ์ง„ํ–‰ํ–ˆ์—ˆ๋Š”๋ฐ ์ตœ์‹  ์—…๋ฐ์ดํŠธ๊ฐ€ ๋Š๋ ธ๊ณ , ๊ทธ๋™์•ˆ์˜ ์‹œ๊ฐ„๋™์•ˆ ๊ธฐ๋‹ค๋ ค์•ผ๋งŒํ•˜๋Š” ์ƒํ™ฉ๋“ค์ด ์ƒ๊ฒผ๋‹ค. ๋”ฐ๋ผ์„œ SWAGGER๋ฅผ ํ™œ์šฉํ•˜์—ฌ API์˜ ๋ช…์„ธ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋Š”๋ฐ ๋‚ด ํŒŒํŠธ์— API ์ผ๋ถ€๋ถ„์€ ์ˆ˜์ •๋  ๋ถ€๋ถ„์ด ์žˆ์–ด SWAGGER์— ์˜ฌ๋ฆฌ์ง€ ์•Š๊ณ  ๋…ธ์…˜์„ ํ†ตํ•ด์„œ๋งŒ API ๋ช…์„ธ๋ฅผ ํ™•์ธํ•˜๋‹ˆ ๋ฐฑ์—”๋“œ ๋ถ„์ด๋ž‘ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ๋งŽ์ด ํ•„์š”ํ–ˆ๋‹ค. response.status ๋“ฑ์ด ๋…ธ์…˜ ๋ช…์„ธ์— ๋ˆ„๋ฝ๋˜์žˆ์—ˆ๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์•ฝ๊ฐ„ ๊ฐœ๋ฐœ์‹œ๊ฐ„์ด ์ง€์—ฐ๋˜๋Š” ์ผ์ด ์ƒ๊ฒผ๋‹ค. ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” API ๋ช…์„ธ์— ๋ˆ„๋ฝ๋˜์žˆ๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๋ฐฑ์—”๋“œ์™€ ๋ฏธ๋ฆฌ ์†Œํ†ต์„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

์ด๋ฒˆํ”„๋กœ์ ํŠธ์—์„œ jwt๋กœ๊ทธ์ธ, MSW ๋“ฑ์„ ์ฒ˜์Œ์œผ๋กœ ํ•ด๋ดค๋Š”๋ฐ ์ด๊ฒƒ๋“ค์˜ ์žฅ์ ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ฒฝํ—˜์ด์˜€๋‹ค. ์›๋ž˜๋Š” Jest๋ฅผ ํ™œ์šฉํ•œ test๊นŒ์ง€ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ•ด ์•„์‰ฌ์› ๊ณ  ๋” ๊ณต๋ถ€ํ•ด์„œ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋ถ€ํ„ฐ๋Š” jest๋„ ํ™œ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.

โœ… ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์ด๋ฆ„ ๋‚ด์šฉ
์–ด์Šน์ค€ 1) ๋ฌดํ•œ ์Šคํฌ๋กค ์ฒซ ๋ Œ๋”๋ง ์‹œ ์Šคํฌ๋กค์ด ์ž๋™์œผ๋กœ ๊ฐ€์žฅ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ์œผ๋กœ์„œ 1ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ 2ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜„์ƒ
react-infinite-scroller ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ initialLoad ํ”„๋กœํผํ‹ฐ๋ฅผ false๋กœ ์„ค์ •ํ•จ์œผ๋กœ์„œ, ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ loadMore ํ•จ์ˆ˜๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ํ•ด๊ฒฐ
2) ๋’ค๋กœ๊ฐ€๊ธฐ ์‹œ, ํ•ด๋‹น ์ง€์—ญ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ refetching ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ
์„ ํƒ ์ง€์—ญ์„ ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€๋กœ ๋ฐฐ์—ด ๋ฐ ์ŠคํŠธ๋ง ํ˜•ํƒœ๋กœ ์ €์žฅ ํ›„ react-query์˜ queryKey์— ๊ฐฑ์‹ 
ํ•˜์ง€๋งŒ, useLocation์„ ํ†ตํ•ด ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋”์šฑ ๊ฐ„ํŽธํ•˜๊ณ  ํšจ์œจ์ !
๊น€๋ฏผ์„œ 1) ๋น„๋™๊ธฐ ์ฝ”๋“œ๋กœ ์ธํ•ด ๋ฆฌ๋ Œ๋”๋ง์ด ๋˜์—ˆ๊ณ , ์ด ๋ฆฌ๋ Œ๋”๋ง์œผ๋กœ ์ธํ•ด์„œ ์š”์ฒญ ์Šค๋ ˆ๋“œ๊ฐ€ db์— ์ €์žฅ๋˜๊ธฐ ์ „์— ๋‘๋ฒˆ์งธ ์š”์ฒญ์—์„œ ์œ ์ผ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ๋กœ์ง์„ ํ†ต๊ณผํ•ด๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ์™€, db์— ๋ฝ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹จ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ
post๊ฐ€ ๋œ ์ดํ›„์— ํด๋ฆญ๋œ ๊ฐ’์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ฒŒ async/await๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์˜€๋”๋‹ˆ, ๋ฆฌ๋ Œ๋”๋ง ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ
2) ๋ฆฌํŒฉํ† ๋ง๋•Œ ์ƒ์„ธํŽ˜์ด์ง€์—์„œ ๋‚ ์งœ/์ธ์›์ˆ˜ ์„ ํƒ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ๊ณ ๋ฏผ
๊ธฐ์กด์— ๋ฉ”์ธ์—์„œ ๋„˜์–ด์˜ฌ๋•Œ location.state๋กœ ๋ฐ›์•„์™”๊ณ , ์ƒ์„ธ์—์„œ๋Š” recoil๊ฐ’์œผ๋กœ ๊ด€๋ฆฌํ–ˆ์Œ.
location.state์€ ๋’ค๋กœ๊ฐ€๊ฑฐ๋‚˜ ์•ž์œผ๋กœ ๊ฐ€๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ๋ผ๊ฐ€๋ฏ€๋กœ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผํ•จ
์ง„์ข…์ˆ˜ 1) ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ฒดํฌ๋ฐ•์Šค๋กœ ํ•„ํ„ฐ๋ง์„ ํ•ด์ค„ ๋•Œ ๊ฐ๊ฐ์˜ ์•„์ดํ…œ๋“ค์ด ๊ฑธ๋Ÿฌ์ง€๊ฒŒ ํ•ด์•ผ ํ–ˆ๋Š”๋ฐ ๊ฐ™์€ ์ˆ™์†Œ์—์„œ ๋™์ผํ•œ ๋ฃธ์„ ๋‘ ๋ฒˆ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ ํ–ˆ์„ ๋•Œ ํ•„ํ„ฐ๋ง์ด ์•ˆ๋˜๋Š” ํ˜„์ƒ
roomCartId๋ผ๋Š” ๊ณ ์œ ์˜ ๊ฐ’์„ ๋ฐฑ์—”๋“œ์—๊ฒŒ ๋ฐ›์•„์™€์„œ ์ด๋ฅผ ํ•„ํ„ฐ๋ง ํ•ด์ฃผ์—ˆ๋‹ค.
2) ์ฒดํฌ๋ฐ•์Šค ์„ ํƒ/ํ•ด์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ณผ ์ด๋ฅผ ์˜ˆ์•ฝ ํŽ˜์ด์ง€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ํ•˜๋Š” ๋ถ€๋ถ„
์ฒดํฌ๋ฐ•์Šค ์„ ํƒ/ํ•ด์ œ๋ฅผ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋ง‰์ƒ ๋ฐฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ์ด๋ฅผ ์ฒดํฌํ•ด์„œ ๋ฐ์ดํ„ฐ๋กœ ๋„˜๊ฒจ์ค˜์•ผ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ •๋ง ๋งŽ์ด ํž˜๋“ค์—ˆ๋‹ค.
์ด ๊ณผ์ •์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•๋“ค์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ฌ์•˜๊ณ  map ํ•จ์ˆ˜๋ถ€ํ„ฐ .find, .reduce, .forEach ๋“ฑ ๊ธฐ๋ณธ๊ธฐ์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ฌ์•˜๋‹ค.
์ฑ„๋ฏผ์„ 1) ํ† ํฐ์„ decode ํ•˜๊ธฐ์œ„ํ•ด jsonwebtoken-promisified library๋ฅผ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋Š”๋ฐ error๊ฐ€ ๋– ์„œ reference๋“ค์„ ์ฐธ์กฐํ•˜์—ฌ craco.config.js๋ฅผ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ๋„ error๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. config.js ๊ทธ๋ƒฅ ๋ณ€์ˆ˜๊ฐ’์„ ์ ์–ด์•ผํ•˜๋Š”๋ฐ ๊ฐ์ฒด์•ˆ์— ๋ณ€์ˆ˜ ๋„ฃ์–ด์„œ ์ƒ๊ธด ๊ฐ„๋‹จํ•œ ์ด์Šˆ์˜€์ง€๋งŒ ํ‰์†Œ์— webpack ์„ธํŒ…์— ๋Œ€ํ•ด ๋ฌด์ง€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ–ˆ๋‹ค. ์ด๋ฒˆ ์ด์Šˆ๋ฅผ ํ†ตํ•ด webpack ์„ธํŒ…์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๊ณต๋ถ€ํ•ด์„œ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

โœ… ๋ฆฌํŒฉํ† ๋ง ์ถ”๊ฐ€/๊ฐœ์„ 

์ด๋ฆ„ ๋‚ด์šฉ
์–ด์Šน์ค€ ๋ฌดํ•œ ์Šคํฌ๋กค ์ฒซ ๋ Œ๋”๋ง ์‹œ ์Šคํฌ๋กค ๊ฐ€์žฅ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ
ํ•จ์ˆ˜ ๋ชจ๋“ˆํ™”, ์ปดํฌ๋„ŒํŠธํ™”, ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‚ญ์ œ๋ฅผ ํ†ตํ•ด ๊ฐ€๋…์„ฑ, ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด
๊น€๋ฏผ์„œ ์ƒ์„ธํŽ˜์ด์ง€์—์„œ ๋‹ฌ๋ ฅ ๋ชจ๋‹ฌ๊ณผ ์ธ์›์ˆ˜ ๋ชจ๋‹ฌ ์ถ”๊ฐ€ํ•ด์„œ, ๋‚ ์งœ/์ธ์›์ˆ˜ ์„ ํƒ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ถ”๊ฐ€
๋ฆฌ๋ Œ๋”๋ง ์ตœ์†Œํ™”๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ ์ตœ์ ํ™”(useCallback), ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ค‘๋ณต์€ ๋ฌถ์–ด์ฃผ๊ธฐ
์ง„์ข…์ˆ˜ post , delete ๊ด€๋ จ api ํ˜ธ์ถœ useMutation์œผ๋กœ ์ฝ”๋“œ ๊ฐœ์„ 
์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์•„์ดํ…œ ํด๋ฆญ ์‹œ ์‚ญ์ œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
์ฑ„๋ฏผ์„ ๋ฆฌํ”„๋ ˆ์‰ฌํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์—๋Ÿฌ ํ•ธ๋“ค๋ง
์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ,์ผ๋ถ€ ์Šคํƒ€์ผ์ˆ˜์ •

โœ… ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ : 2์ฃผ - 23.11.20 ~ 23.12.01

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.9%
  • HTML 1.1%
  • Other 1.0%