Skip to content

jisung-in/frontend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

แ„Œแ…ตแ„‰แ…ฅแ†ผแ„‹แ…ตแ†ซแ„‡แ…ขแ„‚แ…ฅ02


last commit most language

Discord SLACK

Next.js Typescript Redux Tailwind Css Vercel


๐Ÿ“–ย ์ง€์„ฑ์ธ


์ฑ…๊ณผ ๊ด€๋ จ๋œ ์ฃผ์ œ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ณณ, ์ง€์„ฑ์ธ์„ ์„œ๋น„์Šค ์ค‘์ž…๋‹ˆ๋‹ค.

โ—์ง€์†์ ์œผ๋กœ ์œ ์ง€ ๋ณด์ˆ˜ ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

https://jisungin.co.kr

๐Ÿ“‘ ๋ชฉ์ฐจ


๐Ÿ‘€ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ฑ…๊ณผ ๊ด€๋ จ๋œ ์ฃผ์ œ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ณณ์„ ์ฃผ์ œ๋กœ ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

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

2024๋…„ 3์›” ~ 2024๋…„ 6์›” 17์ผ

โญ์œ ์ง€ ๋ณด์ˆ˜ ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„  : 2024๋…„ 6์›” 17์ผ ~ ์ง„ํ–‰ ์ค‘

โ—์ง€์†์ ์œผ๋กœ ์œ ์ง€ ๋ณด์ˆ˜ ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ง„ํ–‰์ค‘์ž…๋‹ˆ๋‹ค.


โœจ ์„œ๋น„์Šค ์†Œ๊ฐœ

์ง€์„ฑ์ธ ์„œ๋น„์Šค์—์„œ๋Š” ์ฑ…๊ณผ ๊ด€๋ จ๋œ ์ฃผ์ œ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ๊ฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

1.๋ฉ”์ธ ํ™”๋ฉด


image


์ง€์„ฑ์ธ ๋ฉ”์ธ ํ™”๋ฉด์—์„œ๋Š” ์‹ค์‹œ๊ฐ„, ์ธ๊ธฐ์žˆ๋Š” ํ† ํฌ๋ฐฉ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜†์˜ ์ „์ฒด๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ฐ ์ œ๋ชฉ์— ๋งž๋Š”(์ตœ๊ทผ์ˆœ, ์ธ๊ธฐ์ˆœ) ํ•„ํ„ฐ๋กœ ์ ์šฉ๋˜์–ด ๊ด€๋ จ๋œ ํ† ํฌ๋ฐฉ ๋ชฉ๋ก์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‹ค์‹œ๊ฐ„ ๋ฒ ์ŠคํŠธ ์…€๋Ÿฌ์™€ ํ† ํฌ๋ฐฉ์ด ๋งŽ์€ ์ฑ… ๋ชฉ๋ก์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2.ํ† ํฌ๋ฐฉ


ํ† ํฌ๋ฐฉ


ํ† ํฌ๋ฐฉ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๋ฌผ ์ž…๋‹ˆ๋‹ค.

์ €ํฌ๋Š” ์ด๊ฒƒ์„ ํ† ํฌ๋ฐฉ ์นด๋“œ ๋˜๋Š” ์นด๋“œ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ฑ…๊ณผ ๊ด€๋ จ๋œ ์ฃผ์ œ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ˆ˜๋‹จ์ด๋ฉฐ, ๋น„ ๋กœ๊ทธ์ธ ์‹œ์—๋„ ํ•ด๋‹น ํ† ํฌ๋ฐฉ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ์นด๋“œ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฑ…์— ๋Œ€ํ•œ ์ •๋ณด์™€ ์ž‘์„ฑ์ž์™€ ๊ธ€์˜ ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๋Š” ํ† ํฌ๋ฐฉ์— ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๊ณ , ๋ช‡ ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ์ข‹์•„์š”๋ฅผ ๋ˆŒ๋ €๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.ํ† ํฌ๋ฐฉ ์ƒ์„ธ๋ณด๊ธฐ


screencapture-jisungin-co-kr-talkroom-detail-36-2024-06-12-22_18_14


์ง€์„ฑ์ธ์˜ ํ•ต์‹ฌ์ธ ํ† ํฌ๋ฐฉ์„ ๋“ค์–ด๊ฐ”์„ ๋•Œ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

ํ† ํฌ๋ฐฉ ์นด๋“œ์™€ ๋‹ค๋ฅด๊ฒŒ ์–ธ์ œ ์ž‘์„ฑํ–ˆ๋Š”์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ค‘ ํ•˜๋‚˜ ์ธ ์ฐธ๊ฐ€ ์กฐ๊ฑด์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ฐ€ ์กฐ๊ฑด์€ ์ฝ๊ณ  ์‹ถ์€, ์ฝ์Œ, ์ฝ๋Š” ์ค‘, ์ค‘๋‹จ, ์ž ์‹œ ๋ฉˆ์ถค ์ด 5๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ ๋˜๋ฉฐ ์ฐธ๊ฐ€ ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒฝ์šฐ ์˜๊ฒฌ์„ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ฐธ๊ฐ€ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๊ฑฐ๋‚˜, ๋กœ๊ทธ์ธ์„ ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์‹ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜๊ฒฌ์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์•„๋ž˜์— ๋งํ’์„  ํ˜•ํƒœ๋กœ ๋“ฑ๋ก์ด ๋ฉ๋‹ˆ๋‹ค.

4.ํ† ํฌํ•ด์š”


image


์ง€์„ฑ์ธ์˜ ํ•ต์‹ฌ์ธ ๋ชจ๋“  ํ† ํฌ๋ฐฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

ํ† ํฌ๋ฐฉ ์นด๋“œ๋Š” ์œ„์˜ ํ•„ํ„ฐ์— ๋งž๊ฒŒ ์กฐํšŒ๋ฅผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ํ•„ํ„ฐ์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ๋ดค๋˜ ์ตœ์‹ ์ˆœ, ์ธ๊ธฐ์ˆœ์ด ์žˆ์œผ๋ฉฐ ์ธ๊ธฐ์ˆœ์„ ๋ˆŒ๋ €์„ ๋•Œ๋Š” ๋‚ ์งœ๋ณ„ ํ•„ํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๋‚ ์งœ๋ณ„ ํ•„ํ„ฐ๋ฅผ ์ด์šฉํ•ด 1์ผ ์ „, 7์ผ ์ „, ํ•œ๋‹ฌ ์ „์— ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๋ฌผ๋“ค์„ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰์ฐฝ์„ ์ด์šฉํ•˜์—ฌ ์ฐพ๊ณ ์ž ํ•˜๋Š” ํ† ํฌ๋ฐฉ ์ œ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ† ํฌ๋ฐฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌดํ•œ ์Šคํฌ๋กค๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ํŠน์ • ์‹œ์ ์—์„œ ์ƒˆ๋กœ์šด ํ‰๊ฐ€๋“ค์ด ๋ถˆ๋Ÿฌ์™€์ง‘๋‹ˆ๋‹ค.

5.์ฑ… ์ƒ์„ธ๋ณด๊ธฐ


image


์ฑ…์— ๋Œ€ํ•œ ์ •๋ณด ๋ฐ ์ฑ…์— ๋Œ€ํ•œ ํ‰๊ฐ€, ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.

๋กœ๊ทธ์ธ ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ ์ด์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์œ ์ €๋“ค์˜ ํ‰๊ฐ€๋Š” ํ•œ์ค„ ํ‰์„ ์ž‘์„ฑํ•œ ์œ ์ €๋“ค์˜ ๊ธฐ๋ก์ด ๋ชจ์ธ ๊ณณ ์ž…๋‹ˆ๋‹ค. ๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ์ฑ…์— ๊ด€ํ•œ ๋ชจ๋“  ์œ ์ €๋“ค์˜ ํ‰๊ฐ€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ์€ ์ฑ…๊ณผ ๊ด€๋ จ๋œ ํ† ํฌ๋ฐฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ ํŽ˜์ด์ง€๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.


6.์œ ์ €๋“ค์˜ ํ‰๊ฐ€


image


์ฑ… ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€์—์„œ ์œ ์ €๋“ค์˜ ํ‰๊ฐ€ ๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.

์ฑ…๊ณผ ๊ด€๋ จ๋œ ํ‰๊ฐ€๋งŒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ฌดํ•œ ์Šคํฌ๋กค๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ํŠน์ • ์‹œ์ ์—์„œ ์ƒˆ๋กœ์šด ํ‰๊ฐ€๋“ค์ด ๋ถˆ๋Ÿฌ์™€์ง‘๋‹ˆ๋‹ค.

ํ•„ํ„ฐ๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ์–ด ํ•„ํ„ฐ์— ๋”ฐ๋ผ ํ‰๊ฐ€๋ฅผ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ข‹์•„์š” ์ˆœ
  • ๋†’์€ ํ‰๊ฐ€ ์ˆœ
  • ๋‚ฎ์€ ํ‰๊ฐ€ ์ˆœ
  • ์ž‘์„ฑ ์ˆœ

7.์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ


image


์ฑ… ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€์—์„œ ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ ๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.

์ฑ…๊ณผ ๊ด€๋ จ๋œ ํ† ํฌ๋ฐฉ๋งŒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


๐Ÿ‘จโ€๐Ÿ’ป ๊ธฐ์ˆ  ์Šคํƒ

ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ  ์Šคํƒ

  • ํ”„๋ ˆ์ž„์›Œํฌ : Next.js 14
  • ์–ธ์–ด : Typescript
  • ์ƒํƒœ ๊ด€๋ฆฌ : React-query, Redux
  • API : axios
  • CSS : Tailwind CSS
  • ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : Story book, MSW, Faker.js, Swiper
  • ๋ฐฐํฌ : Vercel (๋„๋ฉ”์ธ๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๋ฐฐํฌ)

๊ธฐํƒ€ ํˆด

  • ์ด์Šˆ ๊ด€๋ฆฌ : Github Issue
  • ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ : Slack, Discord

๐Ÿ’ป ์—…๋ฌด ๋ถ„๋ฐฐ

๋ณ€์Šนํ›ˆ ์ •์ค€ํ˜•
@SeungHun6450 @jungjunhyung99
1. ๋ฉ”์ธ ํŽ˜์ด์ง€
์ธ๊ธฐ์žˆ๋Š” ํ† ํฌ๋ฐฉ, ๋ฒ ์ŠคํŠธ ์…€๋Ÿฌ,
์ตœ๊ทผ ์ƒ์„ฑ๋œ ํ† ํฌ๋ฐฉ, ํ† ํฌ ๋งŽ์€ ์ฑ… ์นดํ…Œ๊ณ ๋ฆฌ ๊ตฌํ˜„
1. ๊ฐ ํ† ํฌ๋ฐฉ ์˜†์˜ ์ „์ฒด๋ณด๊ธฐ ํด๋ฆญ ์‹œ,
์กฐ๊ฑด์— ๋งž๊ฒŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ ํ† ํฌํ•ด์š” ํŽ˜์ด์ง€๋กœ ์ด๋™
2. ์ฑ… ํ‘œ์ง€ ํด๋ฆญ ์‹œ, ์ฑ… ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™
3. ํ† ํฌ๋ฐฉ ํด๋ฆญ ์‹œ, ํ† ํฌ๋ฐฉ ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™

2. ํ† ํฌ๋ฐฉ
๋ฉ”์ธ ํŽ˜์ด์ง€, ํ† ํฌํ•ด์š” ํŽ˜์ด์ง€, ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ ํŽ˜์ด์ง€์—์„œ ๋ณด์ด๋Š” ํ† ํฌ๋ฐฉ(ํ† ํฌ๋ฐฉ ์นด๋“œ)์ œ์ž‘

3. ํ† ํฌ๋ฐฉ ์ƒ์„ธ๋ณด๊ธฐ
ํ† ํฌ๋ฐฉ์„ ๋ˆŒ๋ €์„ ๋•Œ, ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™
์ฐธ๊ฐ€์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋ฉด ์˜๊ฒฌ์„ ์ž‘์„ฑ ๊ฐ€๋Šฅ

4. ํ† ํฌํ•ด์š”
1. ์ตœ์‹ ์ˆœ, ์ธ๊ธฐ์ˆœ, ๋‚ ์งœ๋ณ„ ์ด 3๊ฐœ์˜ ํ•„ํ„ฐ๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋“ค์ด ์ž‘์„ฑํ•œ ํ† ํฌ๋ฐฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€
2. ์ œ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์›ํ•˜๋Š” ํ† ํฌ๋ฐฉ์„ ์ฐพ๊ธฐ

5. ์ฑ… ์ƒ์„ธ ๋ณด๊ธฐ
1. ์ฑ…์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ™•์ธ
2. ์ฑ…์— ๋Œ€ํ•œ ๋ณ„์ ์„ ๋‚จ๊ธฐ๊ธฐ
3. ๋…์„œ ์ƒํƒœ ๊ธฐ๋ก, ์ด๋Š” ํ† ํฌ๋ฐฉ์˜ ์ฐธ๊ฐ€์กฐ๊ฑด์— ํ•ด๋‹น
4. ์ฑ…์— ๋Œ€ํ•œ ํ•œ์ค„ ํ‰ ์ž‘์„ฑ
5. ์œ ์ €๋“ค์˜ ํ‰๊ฐ€๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅ
6. ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ ํ™•์ธ ๊ฐ€๋Šฅ

6. ์œ ์ €๋“ค์˜ ํ‰๊ฐ€
1. ์„ ํƒํ•œ ์ฑ…์˜ ์œ ์ €๋“ค์˜ ํ•œ์ค„ ํ‰์„ ํ™•์ธ
2. ์ข‹์•„์š”, ํ‰์ , ์ตœ์‹ ์ˆœ์œผ๋กœ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅ

7. ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ
์„ ํƒํ•œ ์ฑ…์„ ์ฃผ์ œ๋กœ ํ•œ ํ† ํฌ๋ฐฉ๋“ค์„ ํ™•์ธ ๊ฐ€๋Šฅ
1. ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
OAuth๋ฅผ ํ†ตํ•ด Kakao ๊ณ„์ •์„ ํ†ตํ•œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„

2. ๋„์„œ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€
Kakao REST API๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋„์„œ ์กฐํšŒ ํŽ˜์ด์ง€ ์ œ์ž‘

3. ์œ ์ € ๊ถŒํ•œ ๊ด€๋ฆฌ
middleware๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์œ ์ €๋ณ„ ๊ถŒํ•œ๊ด€๋ฆฌ (ํ† ํฐ์ด ์—†์„ ์‹œ์— ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ redirect)

4. ๋งˆ์ดํŽ˜์ด์ง€ ๊ตฌํ˜„
์œ ์ €๋ณ„ ๊ด€๋ จ ํ† ํฌ๋ฐฉ, ๋„์„œ ๋“ฑ์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ œ์ž‘

5. ํ† ํฌ๋ฃธ/์˜๊ฒฌ ์ƒ์„ฑ ํŽ˜์ด์ง€ ์ œ์ž‘
๊ธ€๊ณผ ์‚ฌ์ง„์„ ์ฒจ๋ถ€ํ•˜์—ฌ ํ† ํฌ๋ฃธ ๋ฐ ์˜๊ฒฌ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ œ์ž‘

6. ํ•ต์‹ฌ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ๋ฐ ์Šคํ† ๋ฆฌ ์ƒ์„ฑ
(1) variants๋ฅผ ์ด์šฉํ•œ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ(๋ฒ„ํŠผ, input, textarea ๋“ฑ)
(2) ์Šคํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ํ…Œ์ŠคํŠธ ์ž‘์—…


โš™๏ธ ์ฃผ์š” ๊ธฐ๋Šฅ & ๊ธฐ์ˆ  & ๋กœ์ง

์ฃผ์š” ๊ธฐ๋Šฅ

  1. ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
    • ํ† ํฌํ•ด์š” ํŽ˜์ด์ง€์—์„œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ด์šฉ ์‹œ, ๊ฒ€์ƒ‰ํ•œ ๋‚ด์šฉ๊ณผ ํ† ํฌ๋ฐฉ์˜ ์ œ๋ชฉ์„ ๋น„๊ตํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  2. ํ•„ํ„ฐ ๊ธฐ๋Šฅ
    • ์ตœ์‹ ์ˆœ, ์ธ๊ธฐ์ˆœ ๋“ฑ์˜ ํ•„ํ„ฐ ์ ์šฉ ์‹œ, router.push๋ฅผ ์ด์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋ณ€๊ฒฝ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. ์ข‹์•„์š” ๊ธฐ๋Šฅ
    • ํ† ํฌ๋ฐฉ, ํ† ํฌ๋ฐฉ์˜ ์˜๊ฒฌ, ํ•œ์ค„ ํ‰ ์ด ์„ธ ๊ณณ์— ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํ† ํฌ๋ฐฉ, ์˜๊ฒฌ, ํ•œ์ค„ ํ‰์—๋Š” ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  4. ์ฑ…๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ
    • ๋ณ„์  ๋ถ€์—ฌ ๊ธฐ๋Šฅ : ์ฑ…์— ๋Œ€ํ•œ ๋ณ„์ ์„ ๋ถ€์—ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 0.5์  ๋‹จ์œ„๋กœ ๋ณ„์ด ๋ฐ˜ ๊ฐœ์”ฉ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.
    • ๋…์„œ ์ƒํƒœ ์„ค์ • ๊ธฐ๋Šฅ : ์ฑ…์— ๋Œ€ํ•œ ๋…์„œ ์ƒํƒœ๋ฅผ ์„ค์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ํฌ๋ฐฉ์˜ ์˜๊ฒฌ ์ž‘์„ฑ์— ํ•„์š”ํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    • ํ•œ ์ค„ํ‰ ์ž‘์„ฑ ๊ธฐ๋Šฅ : ์ฑ…์— ๋Œ€ํ•œ ํ•œ ์ค„ํ‰์„ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ €๋“ค์˜ ํ‰๊ฐ€์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
  5. ๋น„ ๋กœ๊ทธ์ธ ์‹œ ๊ธฐ๋Šฅ ์ฐจ๋‹จ
    • ๋กœ๊ทธ์ธ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•˜์—ฌ ๋น„ ๋กœ๊ทธ์ธ ์‹œ์—๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ Modal ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ง‰์•˜์Šต๋‹ˆ๋‹ค.
    • ์ข‹์•„์š” ๊ธฐ๋Šฅ, ํ•œ์ค„ ํ‰ ์ž‘์„ฑ, ๋ณ„์  ๋ถ€์—ฌ, ๋…์„œ ์ƒํƒœ ๋“ฑ์˜ ๊ธฐ๋Šฅ๋“ค์ด ์ด์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
    • ํ•ด๋‹น ๊ธฐ๋Šฅ๋“ค์— ๋งž๋Š” ๋ฌธ๊ตฌ๋ฅผ ๋„์›๋‹ˆ๋‹ค.
    • ๋น„ ๋กœ๊ทธ์ธ ์ƒํƒœ์—์„œ ํ† ํฌ๋ฐฉ ์ƒ์„ฑ ๋ฐ ์˜๊ฒฌ ์ž‘์„ฑ url๋กœ ์ง„์ž… ์‹œ, Modal ์ฐฝ์—์„œ '๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค' ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด์„œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
  6. Skeleton UI
    • Skeleton UI๋ฅผ ๋„์ž…ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋กœ๋”ฉ ์ค‘ ๋นˆ ํ™”๋ฉด์„ ํ•ด๋‹น UI์™€ ๋น„์Šทํ•œ ๋ชจ์–‘์˜ Skeleton UI๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ฝ˜ํ…์ธ ๊ฐ€ ๋กœ๋“œ๋˜๊ธฐ ์ „๊นŒ์ง€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ 

  1. ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ
    • ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์Šทํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค์–ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ์ฆ๊ฐ€์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.
  2. ๋™์  ๋ผ์šฐํŒ…
    • Next.js์˜ ๋™์  ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ํŠน์ • ํŽ˜์ด์ง€์— ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
      • ํ† ํฌ๋ฐฉ ์ƒ์„ธ ๋ณด๊ธฐ
      • ์ฑ… ์ƒ์„ธ ๋ณด๊ธฐ
      • ํ† ํฌํ•ด์š” ๊ฒ€์ƒ‰
      • ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ
      • ์œ ์ €๋“ค์˜ ํ‰๊ฐ€
  3. ํŽ˜์ด์ง€๋„ค์ด์…˜๊ณผ ๋ฌดํ•œ์Šคํฌ๋กค
    • ํ† ํฌํ•ด์š” ํŽ˜์ด์ง€, ์—ฐ๊ด€๋œ ํ† ํฌ๋ฐฉ ํŽ˜์ด์ง€์— ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์œ ์ €๋“ค์˜ ํ‰๊ฐ€ ํŽ˜์ด์ง€์—์„œ๋Š” useInfiniteQuery, IntersectionObserver๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌดํ•œ์Šคํฌ๋กค์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  4. ์บ๋Ÿฌ์…€ ๊ตฌํ˜„
    • Swiper๋ฅผ ์ด์šฉํ•˜์—ฌ ์บ๋Ÿฌ์…€์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  5. ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์ ์šฉ
    • Tailwind CSS๋ฅผ ์ด์šฉํ•œ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ํ˜„์žฌ pivot์ด ์ง„ํ–‰๋จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋œ UI์— ๋งž์ถฐ ์žฌ ์ž‘์—…์ด ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  6. axios
    • ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ axios๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.
  7. React-query hook ์‚ฌ์šฉ
    • custom hook์„ ์ œ์ž‘ํ•˜์—ฌ refetch, useInfiniteQuery๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  8. Story Book
    • Story Book์„ ์ด์šฉํ•˜์—ฌ ๊ณตํ†ต๋œ ๋ฒ„ํŠผ์ด๋‚˜ textarea๋ฅผ ๊ด€๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  9. MSW
    • ๋ฐฑ์—”๋“œ API ๊ฐœ๋ฐœ์— ์˜์กด์ ์ธ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์˜ ์˜์กด์„ฑ์„ ํƒ€ํŒŒํ•˜๊ธฐ ์œ„ํ•ด MSW๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • MSW๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ API ๊ฐœ๋ฐœ ์ดํ›„์—๋„ ์ฝ”๋“œ์˜ ์ˆ˜์ • ์—†์ด, ์„œ๋น„์Šค ๋กœ์ง์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  10. Faker.js
    • Faker.js๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž„์‹œ ์ด๋ฏธ์ง€๋ฅผ ๋ถ€์—ฌํ•ด MSW์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  11. Lazy Loading (Dynamic Import)
    • ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด next/dynamic์„ ์ด์šฉํ•˜์—ฌ Dynamic Import ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ Œ๋”๋ง์ด ์ฆ‰๊ฐ ํ•„์š”ํ•˜์ง€ ์•Š์€ Modal๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ ๋ณด์—ฌ์ฃผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  12. Local font๋ฅผ CDN์œผ๋กœ ๋ณ€๊ฒฝ
    • ๊ธฐ์กด์˜ Local font๊ฐ€ ์ ์ง€ ์•Š์€ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜์—ฌ Lighthouse์˜ ์ˆ˜์น˜์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ์•…์˜ํ–ฅ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๊ธฐ์กด์˜ local์— ์ €์žฅ๋˜์—ˆ๋˜ font ํŒŒ์ผ์„ ์‚ญ์ œํ•œ ๋’ค CDN์„ ์ง€์›ํ•˜๋Š” font์— ๋Œ€ํ•ด์„œ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ํ•ด๋‹น ์ž‘์—…์œผ๋กœ 72%์˜ ์šฉ๋Ÿ‰์ด ๊ฐ์†Œํ•˜์—ฌ ์„ฑ๋Šฅ์ด ๊ฐœ์„  ๋์Šต๋‹ˆ๋‹ค.
  13. ์ด๋ฏธ์ง€ ํฌ๋งท์„ WebP์—์„œ AVIF๋กœ ๋ณ€๊ฒฝ
    • ๊ธฐ์กด์˜ WebP์—์„œ AVIF ํฌ๋งท์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฝ 10%์˜ ์šฉ๋Ÿ‰ ๊ฐ์†Œ๋กœ ์„ฑ๋Šฅ์ด ๊ฐœ์„  ๋์Šต๋‹ˆ๋‹ค.
  14. Pre-load์™€ Lazy-load
    • ํŠน์ • ์ด๋ฏธ์ง€๋ฅผ Pre-loadํ•˜๊ณ  ๋‚˜์ค‘์— ๋ณด์—ฌ์ง€๋Š” ์ด๋ฏธ์ง€๋ฅผ lazy-load๋ฅผ ์ ์šฉ์‹œ์ผœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„  ๋ฐ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋์Šต๋‹ˆ๋‹ค.

๋กœ์ง

  1. ๊ณตํ†ต util ํ•จ์ˆ˜
    • ํ† ํฌํ•ด์š” ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ํ•„ํ„ฐ ์กฐ๊ฑด์˜ ์ฝ”๋“œ๊ฐ€ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ util ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌ์‹œ์ผœ ๊ฐ€๋…์„ฑ์„ ์ฆ๊ฐ€์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.
    • ํ† ํฌ๋ฐฉ ์ƒ์„ธ๋ณด๊ธฐ์—์„œ ๊ฒŒ์‹œ๊ธ€๊ณผ ์˜๊ฒฌ์— ์–ธ์ œ ์ƒ์„ฑํ–ˆ๋Š”์ง€์— ๊ด€ํ•œ timelaps(์ดˆ, ๋ถ„, ์‹œ, ์ผ, ์›”, ๋…„)๋ฅผ util ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌ์‹œ์ผœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ์ข‹์•„์š” ๋กœ์ง
    • ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ์ž๊ธฐ๊ฐ€ ์ข‹์•„์š”ํ•œ id๋“ค์„ ๊ฐ๊ฐ์˜ ๋ฐฐ์—ด๋กœ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ํ•ด๋‹น ๋Œ“๊ธ€์— ์ข‹์•„์š”๋ฅผ ๋ˆŒ๋ €๋Š”์ง€์— ๋Œ€ํ•ด includes()๋กœ boolean๊ฐ’์„ ํŒ๋ณ„ํ•œ ํ›„ ์ ์šฉ์ด ๋˜๊ฒŒ ๋กœ์ง์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. ์ฐธ์—ฌ ์กฐ๊ฑด ๊ตฌ๋ถ„ ๋กœ์ง
    • ํ† ํฌ๋ฐฉ์—์„œ ์˜๊ฒฌ ์ž‘์„ฑ ์‹œ ์ฐธ์—ฌ ์กฐ๊ฑด์— ๋งž๋Š”์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ฑ…์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐฐ์—ด์•ˆ์— ๊ฐ์ฒด๋กœ, ์„ธ ๊ฐ€์ง€ ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. ex) [{id, isbn, status}]
    • ๊ฐ™์€ ์ฑ…์ด๋ฉด์„œ, ์ฑ… ์ƒํƒœ๊ฐ€ ํ† ํฌ๋ฐฉ์˜ ์ฐธ์—ฌ ์กฐ๊ฑด์— ๋งž๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด some()๊ณผ, includes()๋ฅผ ์ด์šฉํ•˜์—ฌ return๊ฐ’์„ booleanํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ณ„์  ๋ถ€์—ฌ ๋กœ์ง ๋ณ€๊ฒฝ
    • ์ฑ… ์ƒ์„ธ ๋ณด๊ธฐ์—์„œ ๋ณ„์  ๋ถ€์—ฌ ์‹œ 0.5์  ๋‹จ์œ„๋กœ ๋ณ„ ๋ฐ˜๊ฐœ ์”ฉ ์ฑ„์šฐ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค
    • ๋ณ„ ์ด๋ฏธ์ง€ ๊ฐ€๋กœ ๊ธธ์ด 55๋ฅผ ๊ธฐ์ค€์œผ๋กœ offsetX์„ ์‚ฌ์šฉํ•˜์—ฌ 27.5๋ณด๋‹ค ํฌ๋ฉด 1, ์ž‘์œผ๋ฉด 0.5๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ณ„์ ๊ณผ ๋ณ„์ ์— ๋งž์ถฐ ๋ณ„์ด ์ฑ„์›Œ์ง€๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ดํ›„ ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ offsetX์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์ผ ๋•Œ๋งˆ๋‹ค ์ด๋ฒคํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์–ด offsetX ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ณ  ์ด์— ๋”ฐ๋ฅธ ์ ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„์— ๋ถ€๋‹ด์„ ์ค„ ์ˆ˜ ์žˆ์–ด ์„ฑ๋Šฅ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์–ด ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค
    • ๊ธฐ์กด์˜ offsetX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์—์„œ ๋งˆ์šฐ์Šค ํด๋ฆญ ์˜์—ญ์„ ๋‚˜๋ˆ„์–ด ๋ณ„์ ์˜ ์ ˆ๋ฐ˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค
    • ์ง์ ‘์ ์œผ๋กœ ๋ณ„์  ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹ ๋ณ€๊ฒฝ์œผ๋กœ ์ด๋ฒคํŠธ ์‚ฌ์šฉ์˜ ์ตœ์†Œํ™”๋กœ ์ธํ•œ ์„ฑ๋Šฅ์ด ๊ฐœ์„  ๋์Šต๋‹ˆ๋‹ค.