/4p-Market

4p Market repository

Primary LanguageJavaScript

๐Ÿถ ๋ฝ€์‚๋ฝ€์‚

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ : 2022.6.18 ~ 2022.7.30
๐Ÿ“ ๋ฐฐํฌ URL : https://ppoppimarket.web.app

๐Ÿ“Œ ๊ฐœ์š”

๐Ÿค '๋ฝ€์‚๋ฝ€์‚'๋ž€ ์ €ํฌ ํŒ€์ด๋ฆ„์ธ '4P(๋ฝ€ํ”ผ)'์™€ ์‚ฌ๋žŒ๋“ค์ด ํ”ํžˆ ์ด๋ฆ„์ง“๋Š” ๊ฐ•์•„์ง€ ์ด๋ฆ„์ธ '๋ฝ€์‚'์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿก ๋ฝ€์‚๋ฝ€์‚๋Š” ๋ฐ˜๋ ค๋™๋ฌผ์„ ํ‚ค์šฐ๋Š” ๋ฐ˜๋ ค์ธ๋“ค์˜ ๊ณ ๋ฏผ๊ณผ ๊ณต๊ฐ, ๊ฟ€ํŒ์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” SNS์™€ ๋งˆ์ผ“ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿถ ์„œ๋น„์Šค ์‚ฌ์šฉ์ž๋“ค์€ ํฌ์ŠคํŒ… ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ์ง„๊ณผ ๊ธ€์„ ๊ธฐ๋กํ•˜๋ฉฐ ๋ฐ˜๋ ค๋™๋ฌผ์˜ ๊ท€์—ฝ๊ณ  ๊นœ์ฐํ•œ ์ผ์ƒ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿท ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ํŒ”๋กœ์šฐํ•˜๋ฉด ํ”ผ๋“œ์—์„œ ์„œ๋กœ์˜ ๊ฒŒ์‹œ๋ฌผ์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์ข‹์•„์š”์™€ ๋Œ“๊ธ€์„ ํ†ตํ•ด ์†Œํ†ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿฑ ๋‚˜๋ˆ”ํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜ ํŒ๋งคํ•˜๊ณ  ์‹ถ์€ ๋ฌผ๊ฑด์ด ์žˆ๋‹ค๋ฉด ์ƒํ’ˆ ํŒ๋งค๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ๋ณธ์ธ์˜ SNS์— ๋ฐ”๋กœ ํ™๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿน ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ฑ„ํŒ…์„ ํ†ตํ•ด ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฑ„ํŒ…์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿฐ ๋ฐ˜๋ ค๋™๋ฌผ์„ ํ‚ค์šฐ๋Š” ๋ฐ˜๋ ค์ธ์ด ์•„๋‹ˆ๋”๋ผ๋„ ํ”Œ๋žซํผ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ ํ•˜๊ณ  ํ•ด๋‹น ํ”Œ๋žซํผ์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํŒ€์› ์†Œ๊ฐœ ๐Ÿ‘ฉ๐Ÿป๐Ÿ‘ฉ๐Ÿป๐Ÿ‘จ๐Ÿป๐Ÿ‘ฉ๐Ÿป ๐Ÿ’–

FE ๊น€์„ธํ›ˆ FE ๋ฐ•์†Œํ˜„ FE ์ด์ˆ˜๋นˆ FE ์ž„ํ˜„์ง€
blog: for-it-study
github: Hun-Se
blog: doridori-samsam
github: Sohyun Park
blog: waterbin.log
github: Subin Lee
blog: usablepaper.log
github: Hyeonji Lim
FrontEnd
WorkManagement
FrontEnd
Development%20Leader
FrontEnd
Communication%20Leader
FrontEnd
Development

โš™๏ธ ๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋ฐœํ™˜๊ฒฝ

[๊ธฐ์ˆ ]


๐Ÿ“Œ FrontEnd: React, SASS
๐Ÿ“Œ BackEnd: ์ œ๊ณต๋œ API ์‚ฌ์šฉ
๐Ÿ“Œ Version:

react: `18.2.0`
react-router-dom: `6.3.0`
node-sass: `7.0.1`
scss-reset: `1.2.2`
axios: `0.27.2`

[๊ฐœ๋ฐœ ํ™˜๊ฒฝ]


๐Ÿ“ GitHub : ๋ฝ€์‚๋ฝ€์‚ GitHub | ๋ฝ€์‚๋ฝ€์‚ Project Log | GitHub ์ „๋žต
๐Ÿ“ WorkPlace: ๋ฝ€์‚๋ฝ€์‚ Notion
๐Ÿ“ Design : ๋ฝ€์‚๋ฝ€์‚ Figma
๐Ÿ“ Conference: GatherTown | Discord | ํšŒ์˜๋ก

[์ฝ”๋”ฉ ์ปจ๋ฒค์…˜]


โš™๏ธ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

  • ๐Ÿ” ๊ณ„์ •

    • ๋กœ๊ทธ์ธ / ๋กœ๊ทธ์•„์›ƒ
    • ํšŒ์›๊ฐ€์ž…
    • ํšŒ์› ์ •๋ณด ์ˆ˜์ •
    • ์œ ํšจ์„ฑ ๊ฒ€์ฆ
    • ํ† ํฐ ๊ฒ€์ฆ
  • ๐Ÿ” ํ”ผ๋“œ

    • ์œ ์ € ๊ฒ€์ƒ‰
    • ํฌ์ŠคํŠธ ๋ชฉ๋ก
    • ๋ฌดํ•œ ์Šคํฌ๋กค / ํ™”๋ฉด ์ตœ์ƒ๋‹จ ์ด๋™
  • ๐Ÿ‘ฅ ํ”„๋กœํ•„

    • ํŒ”๋กœ์šฐ / ์–ธํŒ”๋กœ์šฐ
    • ํฌ์ŠคํŠธ ๋“ฑ๋ก / ์ˆ˜์ • / ์‚ญ์ œ / ์‹ ๊ณ 
  • ๐Ÿž ํฌ์ŠคํŠธ

    • ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ / ์ˆ˜์ • / ๋ฏธ๋ฆฌ๋ณด๊ธฐ
    • ํฌ์ŠคํŠธ ์•จ๋ฒ”๋ทฐ / ๋ฆฌ์ŠคํŠธ๋ทฐ
    • ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ
    • ์ข‹์•„์š”
  • ๐Ÿ’ฌ ๋Œ“๊ธ€

    • ๋Œ“๊ธ€ ์ž‘์„ฑ / ์‚ญ์ œ / ์‹ ๊ณ 
    • ๋Œ“๊ธ€ ์‹œ๊ฐ„ ๋ณด๊ธฐ
  • ๐ŸŽ ์ƒํ’ˆ

    • ์ƒํ’ˆ ๋ชฉ๋ก / ๋“ฑ๋ก / ์ˆ˜์ • / ์‚ญ์ œ / ์‹ ๊ณ 
    • ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—…๋กœ๋“œ / ์ˆ˜์ • / ๋ฏธ๋ฆฌ๋ณด๊ธฐ
    • ์œ ํšจ์„ฑ ํ‰๊ฐ€

๐Ÿ“ ์—ญํ•  ๋ถ„๋‹ด


๐Ÿท ๊น€์„ธํ›ˆ

๐Ÿท๏ธ ROLE

  • ์ž‘์—…ํ˜„ํ™ฉ๊ด€๋ฆฌ ๋ฆฌ๋”
  • ๋ฉ”์ธ๋ณด๋“œ ๊ด€๋ฆฌ

๐ŸŽจ UI

  • Splash ํŽ˜์ด์ง€, ๋กœ๊ทธ์ธํŽ˜์ด์ง€ , ํ”„๋กœํ•„ ์ˆ˜์ • ํŽ˜์ด์ง€, ์ƒํ’ˆ๋“ฑ๋ก ํŽ˜์ด์ง€, ๊ฒŒ์‹œ๋ฌผ๋“ฑ๋ก ํŽ˜์ด์ง€

๐Ÿ”ง ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • Splash ํŽ˜์ด์ง€
    • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ Splash ํ™”๋ฉด ๊ตฌํ˜„
    • sessionstorage ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ๊ด€๋ฆฌ
    • ์›ํ•˜๋Š” ๊ณณ์— ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํฌ๋„ŒํŠธํ™”
  • ๋‚ด ํ”„๋กœํ•„ ์ˆ˜์ • ํŽ˜์ด์ง€
    • ๊ธฐ์กด ํ”„๋กตํ•„ ๋ฐ์ดํ„ฐ ์œ ์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์ €์žฅ ๋ฒ„ํŠผ ํ™œ์„ฑํ™” ๊ธฐ๋Šฅ
    • FormDate ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ํ”„๋ฆฌ๋ทฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํ•˜๋‹จ ํƒญ ๋ฉ”๋‰ด
    • ํ™ˆํ”ผ๋“œ ํŽ˜์ด์ง€ ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ํ•˜๋‹จํƒญ ํ™œ์„ฑํ™” ๊ธฐ๋Šฅ
  • ์ƒํ’ˆ๋“ฑ๋ก ํŽ˜์ด์ง€
    • ๊ฐ€๊ฒฉ ์ž…๋ ฅ ์‹œ ์ฒœ ๋‹จ์œ„๋กœ ,(์ฝค๋งˆ) ์ž๋™ ์ž…๋ ฅ ๋ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ
    • FormDate์™€ FileReader ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ํ”„๋ฆฌ๋ทฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ†ต๊ณผ์‹œ ์ €์žฅ ๋ฒ„ํŠผ ํ™œ์„ฑํ™”

๐Ÿงฉ ๊ธฐํƒ€

  • UserContext, Provider ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง
  • ๋ฆฌ๋“œ๋ฏธ ์ž‘์„ฑ
  • ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ ์ ์šฉ

๐Ÿค ๋ฐ•์†Œํ˜„

๐Ÿท๏ธ ROLE

  • ์ฝ”๋“œ ๋ฆฌ๋”
  • ํŒ€์›๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•˜๊ณ  ๋” ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•œ ํ”ผ๋“œ๋ฐฑ ๊ตํ™˜.
  • ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์€ ์œ ์ € ํ”„๋กœํ•„ ์ •๋ณด ์ปดํฌ๋„ŒํŠธํ™”

๐ŸŽจ UI

  • ์ด๋ฉ”์ผ ํšŒ์›๊ฐ€์ž…, ํ”„๋กœํ•„ ์„ค์ •, ์ด๋‹ˆ์…œ ํ”ผ๋“œ, ์œ ์ € ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ๋ฐ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ, ํฌ์ŠคํŠธ ์ƒ์„ธ๋ณด๊ธฐ ๋Œ“๊ธ€ ํŽ˜์ด์ง€
  • ์œ ์ € ํ”„๋กœํ•„,๋‹‰๋„ค์ž„,๊ณ„์ •์ด๋ฆ„ ์ปดํฌ๋„ŒํŠธ, ํŽ˜์ด์ง€ ํ—ค๋” ์ปดํฌ๋„ŒํŠธ, ๋’ค๋กœ๊ฐ€๊ธฐ/๊ฒ€์ƒ‰/์ข‹์•„์š”/์ €์žฅ/๋” ๋ณด๊ธฐ/๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ

๐Ÿ”ง ๊ธฐ๋Šฅ ๊ตฌํ˜„

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

๐Ÿงฉ ๊ธฐํƒ€

  • ํ”„๋กœ์ ํŠธ ์ž‘์—… ๋งค๋‹ˆ์ง•์„ ์œ„ํ•œ ๊ณต์œ  ๋…ธ์…˜ ํŽ˜์ด์ง€ ์ž‘์„ฑ ๋ฐ ๊ฐ€์ด๋“œ ๋ผ์ธ ์ œ๊ณต
  • ํด๋”ํŠธ๋ฆฌ ๋ฐ ๊ธฐ๋ณธ ํŒŒ์ผ ๊ตฌ์„ฑ์„ ํฌํ•จํ•œ ํ”„๋กœ์ ํŠธ ๊ธฐ์ดˆ ์ž‘์—…
  • IR ๊ธฐ๋ฒ•์„ ํฌํ•จํ•œ ์ „์—ญ์— ์‚ฌ์šฉ๋˜๋Š” ์Šคํƒ€์ผ ๋ณ€์ˆ˜์™€ reset ์Šคํƒ€์ผ์„ ์œ„ํ•œ Sass(SCSS) ์„ธํŒ…
  • ์ปจ๋ฒค์…˜ ๋ฐ Git ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ์ปจ๋ฒค์…˜ ์„ค์ •
  • ํ”„๋กœ์ ํŠธ ๊ธฐ๋Šฅ ํŒŒํŠธ ๋ณ„ Branch๋ช… ์„ค์ •

๐Ÿถ ์ด์ˆ˜๋นˆ

๐Ÿท๏ธ ROLE

  • ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ฆฌ๋”
  • ๊นƒํ—™ Project Board ๊ด€๋ฆฌ
    • ์ž‘์—…์— ๋Œ€ํ•œ ์ง„์ฒ™๋„๋ฅผ ๊ฐ€์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ ํ˜‘์—… ๋Šฅ๋ ฅ ์ƒ์Šน
  • ํšŒ์˜๋ก ์ž‘์„ฑ ๋ฐ ํŒ€ ๋…ธ์…˜ ์ •๋ฆฌ
  • ํŒ€์›๋“ค ๊ฐ„์˜ ์›ํ™œํ•œ ์†Œํ†ต ํ™˜๊ฒฝ ์ œ๊ณต
    • ๊ฒŒ๋”ํƒ€์šด ํ™œ์šฉํ•˜์—ฌ ํŒ€์›๋“ค๊ฐ„ ์œ ๋Œ€๊ฐ ํ˜•์„ฑ
    • ๋””์Šค์ฝ”๋“œ '์˜ค๋Š˜ ํ•  ์ผ' ๊ฒŒ์‹œํŒ ์šด์˜(์„œ๋กœ์˜ ์ง„ํ–‰ ์ƒํ™ฉ, ํ•ด์•ผํ•  ์ผ ๊ณต์œ , ์‘์› ํ•œ๋งˆ๋””)

๐ŸŽจ UI

  • ๋ชจ๋‹ฌ์ฐฝ, ํŒ์—…์ฐฝ, ํŒ”๋กœ์ž‰, ํŒ”๋กœ์›Œ ๋ชฉ๋ก, ์ฑ„ํŒ…๋ชฉ๋ก, ์ฑ„ํŒ…๋ฃธ, ์—๋ŸฌํŽ˜์ด์ง€ UI ๊ตฌํ˜„
  • ํŒ€ ๋กœ๊ณ  ์ด๋ฏธ์ง€์™€ ์ปฌ๋Ÿฌ ์ ์šฉํ•˜์—ฌ ํ”ผ๊ทธ๋งˆ ์ˆ˜์ •

๐Ÿ”ง ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)

    • ๋กœ๊ทธ์ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ์ด๋ฉ”์ผ ํ˜•ํƒœ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
    • ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํšŒ์›๊ฐ€์ž… ๋œ ์ •๋ณด์ธ์ง€ ํ™•์ธ
    • ํšŒ์› ์ •๋ณด ๋ฐ์ดํ„ฐ ์กด์žฌ ์‹œ ๋กœ๊ทธ์ธ ๋˜๊ฒŒ๋” ๊ตฌํ˜„
  • ์ƒํ’ˆ๋“ฑ๋ก ํŽ˜์ด์ง€ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)

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

    • ์ž˜๋ชป๋œ ์ฃผ์†Œ ์ž…๋ ฅ ์‹œ ์—๋ŸฌํŽ˜์ด์ง€๋ฅผ ๋„์šฐ๋„๋ก ๊ตฌํ˜„
    • ํŽ˜์ด์ง€์— ๋‘ ๊ฐ€์ง€ ๋ฒ„ํŠผ(์ด์ „ ํŽ˜์ด์ง€๋กœ ์ด๋™, ํ™ˆ์œผ๋กœ ์ด๋™)์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ž์˜ ํŽ˜์ด์ง€ ์ด๋™ ํŽธ์˜์„ฑ ๊ณ ๋ ค
  • ๋ชจ๋‹ฌ/์•Œ๋ฆผ์ฐฝ

    • React portal ๋กœ ๋ชจ๋‹ฌ์ฐฝ ๊ตฌํ˜„
    • ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ™”๋ฉด ํ•˜๋‹จ์— ๋ชจ๋‹ฌ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๊ณ , ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์•Œ๋ฆผ์ฐฝ์ด ๋œจ๋„๋ก ๊ตฌํ˜„
    • Account ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ๋ณ„๋กœ ๋‹ค๋ฅธ ๋ชจ๋‹ฌ์ฐฝ ํ™”๋ฉด ๊ตฌํ˜„
    • ๋ชจ๋‹ฌ์ฐฝ, ํŒ์—…์ฐฝ ๋‚ด ๋ชจ๋“  ๊ธฐ๋Šฅ ๊ตฌํ˜„ ( ๋กœ๊ทธ์•„์›ƒ, ์‚ญ์ œ, ์‹ ๊ณ , ์ˆ˜์ •, ํŽ˜์ด์ง€ ์ด๋™ - API ๋ช…์„ธ์— ๋”ฐ๋ฆ„ )
    • ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ
      • localStorage ๋‚ด ์ €์žฅ๋œ ์œ ์ € token clear
    • ์‚ญ์ œ ๊ธฐ๋Šฅ
      • ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€, ์ƒํ’ˆ, ๋Œ“๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
      • ์‚ญ์ œ ํ›„ ํŽ˜์ด์ง€๊ฐ€ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๋˜๊ฒŒ๋” ๊ตฌํ˜„
    • ์‹ ๊ณ  ๊ธฐ๋Šฅ
      • ๋‹ค๋ฅธ ์œ ์ €์˜ ๊ฒŒ์‹œ๊ธ€, ์ƒํ’ˆ, ๋Œ“๊ธ€ ์‹ ๊ณ  ๊ธฐ๋Šฅ ๊ตฌํ˜„
      • ์‹ ๊ณ ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ฐ€์‹œ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” alert ์ฐฝ์„ ๋„์šฐ๋„๋ก ๊ตฌํ˜„
    • ์ˆ˜์ • ๊ธฐ๋Šฅ
      • ๊ฒŒ์‹œ๊ธ€, ์ƒํ’ˆ ์ˆ˜์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„
      • ์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”, ๊ธฐ์กด์— ์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ถˆ๋Ÿฌ์™€ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„

๐Ÿงฉ ๊ธฐํƒ€

  • Custom Hook

    • ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ(์‚ญ์ œ, ์‹ ๊ณ )๋Š” custom hook์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ
    • ์ปดํฌ๋„ŒํŠธ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ด๊ณ  ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์ž„
    • ๋” ๋น ๋ฅธ ์„ฑ๋Šฅ์— ๋„์›€
  • ํŽ˜์ด์ง€ ์ง„์ž… ์‹œ ์ธํ’‹์ฐฝ ํฌ์ปค์Šค ๊ธฐ๋Šฅ ๊ตฌํ˜„

    • ํด๋ฆญํ•˜์ง€ ์•Š์•„๋„ input ์ฐฝ์ด ํ™œ์„ฑํ™”๋˜๊ฒŒ๋” UX ์ธก๋ฉด ๊ณ ๋ คํ•˜์—ฌ ๊ตฌํ˜„

๐Ÿฑ ์ž„ํ˜„์ง€

๐Ÿท๏ธ ROLE

  • ์ฝ”๋“œ ๋ฆฌ๋”
  • ์ง€์† ๊ฐ€๋Šฅํ•œ ํ†ต์ผ๋œ ์›น์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์„ค๊ณ„ ๋ฐ ๊ฐ€์ด๋“œ๋ผ์ธ ์ œ๊ณต
    • ์ปจ๋ฒค์…˜, ํด๋”ํŠธ๋ฆฌ, ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„
    • ์„œ๋น„์Šค ์ „์ฒด ๋ผ์šฐํŒ… ์„ค๊ณ„ / ๊ตฌ์ถ• ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
    • git branch ์‚ฌ์šฉ ๊ฐ€์ด๋“œ ๋ผ์ธ ์ œ๊ณต
  • ์ „๋ฐ˜์ ์ธ ์›น์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ ๊ด€๋ฆฌ
    • ์ฃผ๊ธฐ์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ / ๊ฐœ์„ ์•ˆ ์ œ์•ˆ
    • ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์—ญํ•  ๋ฐฐ๋ถ„ ๋ฐ ์ผ์ • ์กฐ์œจ

๐ŸŽจ UI

  • ํ™ˆ ํ”ผ๋“œ ํŽ˜์ด์ง€, ํ”„๋กœํ•„ ํŽ˜์ด์ง€, ํฌ์ŠคํŠธ ์ปดํฌ๋„ŒํŠธ UI ๊ตฌํ˜„
  • ์›น์‚ฌ์ดํŠธ ๋กœ๊ณ  ๋””์ž์ธ, ํŽ˜์ด์ง€ ๋‚ด ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ์ œ์ž‘
  • CSS keyframes ๋ฅผ ํ™œ์šฉํ•œ ์Šคํ”Œ๋ž˜์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„

๐Ÿ”ง ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ํšŒ์›๊ฐ€์ž…ํŽ˜์ด์ง€
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ input ๋ฐ์ดํ„ฐ๋ฅผ state๋กœ ๊ด€๋ฆฌํ•˜์—ฌ API ๋ช…์„ธ์— ๋งž๊ฒŒ ํ•œ๋ฒˆ์— ์ „๋‹ฌํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ํšŒ์›๊ฐ€์ž… ์ •๋ณด ์œ ํšจ์„ฑ ๊ฒ€์ฆ
      • ๊ณ„์ • / ์ด๋ฉ”์ผ ์ค‘๋ณต ๊ฒ€์ฆ ๊ธฐ๋Šฅ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
      • ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ํ˜•ํƒœ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
      • ์œ ํšจ์„ฑ ๊ฒ€์ฆ์— ํ†ต๊ณผํ•˜์ง€ ๋ชป ํ•  ๊ฒฝ์šฐ ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑํ™” ๋ฐ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€ ๋กœ๋“œ
    • ํ”„๋กœํ•„ ์‚ฌ์ง„ ์ฒจ๋ถ€ ๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ํšŒ์›๊ฐ€์ž… ์‹œ ๋กœ๊ทธ์ธ ์ƒํƒœ ์ „ํ™˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉ์„ฑ ๊ฐœ์„ 
  • ํ™ˆ ํ”ผ๋“œ ํŽ˜์ด์ง€
    • ํ”ผ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
    • ๋กœ๊ทธ์ธ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ํŽ˜์ด์ง€ ๋กœ๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
      • ๋กœ๊ทธ์•„์›ƒ ์ƒํƒœ์ผ ๋•Œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์ด๋„๋ก / ๋กœ๊ทธ์ธ ์ƒํƒœ์ผ ๋•Œ ํ”ผ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋„๋ก ๊ตฌํ˜„
    • ์‹œ๊ฐ„ ๊ณ„์‚ฐ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ ๋ฐ ๋Œ“๊ธ€ ์—…๋กœ๋“œ ์‹œ๊ฐ„ UI ๊ฐœ์„ 
  • ํ”„๋กœํ•„ ํŽ˜์ด์ง€
    • ์œ ์ € ์ •๋ณด ๋ฐ ํฌ์ŠคํŠธ ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
    • ํฌ์ŠคํŠธ ๋ชฉ๋ก์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ฆฌ์ŠคํŠธ ํ˜•์‹ / ์•จ๋ฒ” ํ˜•์‹์œผ๋กœ ์„ ํƒํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๋งํฌ ์ง์ ‘ ๊ณต์œ ์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ๋„ ๋ชจ๋“  ์œ ์ €์˜ ํ”„๋กœํ•„ ํŽ˜์ด์ง€์— ์ •์ƒ์ ์œผ๋กœ url๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก useParams์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์š”์ฒญ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ์‚ฌ์šฉ์„ฑ ๊ฐœ์„ 
  • ํŒ”๋กœ์šฐ / ํŒ”๋กœ์ž‰ ํŽ˜์ด์ง€
    • ํŒ”๋กœ์šฐ / ํŒ”๋กœ์ž‰ ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
    • ํŒ”๋กœ์šฐ / ์–ธํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
  • ํฌ์ŠคํŠธ ์ƒ์„ธํŽ˜์ด์ง€
    • ํฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
    • ๋Œ“๊ธ€ ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
    • ๋Œ“๊ธ€ ์ž‘์„ฑ ๊ธฐ๋Šฅ ๋ฐ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๐Ÿงฉ ๊ธฐํƒ€

  • ๋ฌดํ•œ์Šคํฌ๋กค ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜์—ฌ ์›น ์ตœ์ ํ™” ๋ฐ ์‚ฌ์šฉ์„ฑ ๊ฐœ์„ (ํ”ผ๋“œ, ๋Œ“๊ธ€, ํŒ”๋กœ์šฐ ํŽ˜์ด์ง€)
    • ์Šคํฌ๋กค์ด ์™„์„ฑ๋˜๋ฉด, ๊ทธ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋„๋ก ๊ตฌํ˜„
    • ์ถ”๊ฐ€ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ปจํ…Œ์ด๋„ˆ์— ๋ฆฌ์ŠคํŠธ์—… ๋˜๋„๋ก ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„
  • ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋กœ์ง์„ custom hook์„ ๋งŒ๋“ค์–ด ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ
  • ์ „์—ญ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ useContext ๊ฐ์ฒด๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ์—๋„ ์„œ๋ฒ„์— ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์š”์ฒญํ•˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„
  • API ํ†ต์‹  ์ค‘ pending status๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋กœ๋”ฉ์ค‘ ์ƒํƒœ์ž„์„ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ์‚ฌ์šฉ์„ฑ ๊ฐœ์„ 
  • token ๊ฒ€์ฆ ๊ธฐ๋Šฅ ๊ตฌํ˜„(API ๋ช…์„ธ์— ๋”ฐ๋ฆ„)
  • token์ด ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์—†๋Š” ๊ฒฝ์šฐ ์ ‘๊ทผ ์ฐจ๋‹จ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • firebase ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ


๐ŸŽจ ๊ตฌํ˜„ UI

0. Splash 1. ํšŒ์›๊ฐ€์ž…, ํ”„๋กœํ•„ ์„ค์ •
2. ๋กœ๊ทธ์ธ 3. ๋กœ๊ทธ์•„์›ƒ
4. ํ™ˆ ํ”ผ๋“œ 5. ๊ณ„์ • ๊ฒ€์ƒ‰
6. ๋งˆ์ด ํ”„๋กœํ•„ 6-1. ๋งˆ์ด ํ”„๋กœํ•„ ์ˆ˜์ •
7. ์œ ์ € ํ”„๋กœํ•„ 7-1. ๋Œ“๊ธ€ ๋“ฑ๋ก / ์‚ญ์ œ / ์ข‹์•„์š”
9. ๊ฒŒ์‹œ๋ฌผ ๋“ฑ๋ก 9-1. ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • 9-2. ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ
10. ์ƒํ’ˆ ๋“ฑ๋ก 10-1. ์ƒํ’ˆ ๋“ฑ๋ก ์ˆ˜์ • 10-2. ์ƒํ’ˆ ์‚ญ์ œ
11. ํŒ”๋กœ์ž‰ / ํŒ”๋กœ์šฐ 12. ์ฑ„ํŒ… 13. ์‹ ๊ณ 


โœจ ์ฝ”๋“œ ํฌ์ธํŠธ

useContext

  • ์ „์—ญ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ useContext ๊ฐ์ฒด๋กœ ๊ด€๋ฆฌ
  • ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์„œ๋ฒ„์— ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์š”์ฒญํ•˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„

Custom Hook

  • ์‚ญ์ œ, ์‹ ๊ณ , ์ด๋ฏธ์ง€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋กœ์ง custom hook ์ƒ์„ฑ
  • ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง์„ ํ•ฉ์ณ์คŒ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์ž„

SCSS

  • ๋ณ€์ˆ˜ ์„ ์–ธ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜ ํŽธ์˜์„ฑ ํ–ฅ์ƒ
  • ์„ ํƒ์ž ์ค‘์ฒฉ ๊ธฐ๋Šฅ์œผ๋กœ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ํŽธ์˜์„ฑ ํ–ฅ์ƒ

์ปจ๋ฒค์…˜์— ๋”ฐ๋ฅธ ์ฝ”๋“œ ๋ฐ ํŒŒ์ผ ํ†ต์ผ์„ฑ

  • className
  • ๋ณ€์ˆ˜๋ช…, ํ•จ์ˆ˜๋ช…
  • Import ์ˆœ์„œ
  • ํŒŒ์ผ๋ช…, ํด๋”ํŠธ๋ฆฌ


โœจ ์ŠคํŽ˜์…œ ํฌ์ธํŠธ

์„ฌ์„ธํ•œ UI๋กœ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณต

  • ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ
  • ๋ฌดํ•œ ์Šคํฌ๋กค, ์Šคํฌ๋กค top ๋ฒ„ํŠผ
  • ๋’ค๋กœ๊ฐ€๊ธฐ๋กœ ์œ ์ €๊ฒ€์ƒ‰ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ๊ฒ€์ƒ‰ํ•œ ๋ฐ์ดํ„ฐ ์œ ์ง€ ๊ธฐ๋Šฅ
  • ๋กœ๋”ฉ์ด๋ฏธ์ง€

๋””ํ…Œ์ผํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ

  • ์•…์„ฑ ์‚ฌ์šฉ์ž ์˜ˆ์™ธ์ฒ˜๋ฆฌ: ํ˜•์‹์— ๋งž์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋กœ ํŽ˜์ด์ง€์— ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๊ฑฐ๋‚˜ UI๋ฅผ ํ•ด์น˜๋Š” ์‚ฌ์šฉ์ž ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • ๋ผ์šฐํ„ฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ: ์ž˜๋ชป๋œ ๋ผ์šฐํ„ฐ ๋ฐ ํ˜•์‹์— ๋งž์ง€ ์•Š๋Š” url ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  • ์—๋Ÿฌ์ด๋ฏธ์ง€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ: ์ด๋ฏธ์ง€ ํ˜•์‹์— ๋งž์ง€ ์•Š๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ด๋ฏธ์ง€๋Š” ๋Œ€์ฒด ์ด๋ฏธ์ง€ ์ถœ๋ ฅ

๋น ๋ฅด๊ณ  ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ž‘์—… ๋ฐฉ์‹

  • ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ํด๋”ํŠธ๋ฆฌ ๊ตฌ์กฐ ํ™•๋ฆฝ
  • ์ž์„ธํ•œ ์ปจ๋ฒค์…˜ ๊ทœ์น™์œผ๋กœ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ž‘์—…
  • ๋น ๋ฅด๊ณ  ์ ๊ทน์ ์ธ ํ”ผ๋“œ๋ฐฑ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ ์š”์ฒญ


๐Ÿ—‚ ํด๋”ํŠธ๋ฆฌ

๐Ÿ“ฆ src
 โ”ฃ๐Ÿ“‚ assets
 โ”ฃ๐Ÿ“‚ components
 โ”ƒ โ”ฃ๐Ÿ“‚ button
 โ”ƒ โ”ฃ๐Ÿ“‚ footer
 โ”ƒ โ”ฃ๐Ÿ“‚ header
 โ”ƒ โ”ฃ๐Ÿ“‚ modal
 โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ alert
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ alertBase
 โ”ƒ โ”ƒ โ”ƒ โ”—๐Ÿ“‚ alerts
 โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ modalBase
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ modals
 โ”ƒ โ”ฃ๐Ÿ“‚ notFound
 โ”ƒ โ”ฃ๐Ÿ“‚ post
 โ”ƒ โ”ฃ๐Ÿ“‚ splash
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ logo
 โ”ƒ โ”ฃ๐Ÿ“‚ style
 โ”ƒ โ”—๐Ÿ“‚ user
 โ”ฃ๐Ÿ“‚ context
 โ”ฃ๐Ÿ“‚ hooks
 โ”ฃ๐Ÿ“‚ pages
 โ”ƒ โ”ฃ๐Ÿ“‚ chatPage
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ chatPageItem
 โ”ƒ โ”ฃ๐Ÿ“‚ chatRoomPage
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ chatRoomInput
 โ”ƒ โ”ฃ๐Ÿ“‚ emailLoginPage
 โ”ƒ โ”ฃ๐Ÿ“‚ followPage
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ followList
 โ”ƒ โ”ฃ๐Ÿ“‚ homePage
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ initialFeed
 โ”ƒ โ”ฃ๐Ÿ“‚ logInPage
 โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ loginSection
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ userAccount
 โ”ƒ โ”ฃ๐Ÿ“‚ postDetailPage
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ comment
 โ”ƒ โ”ฃ๐Ÿ“‚ profileEditPage
 โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ profileEditImg
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ profileEditInfo
 โ”ƒ โ”ฃ๐Ÿ“‚ profilePage
 โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ userHeader
 โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ userPost
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ userProduct
 โ”ƒ โ”ฃ๐Ÿ“‚ searchUserPage
 โ”ƒ โ”ƒ โ”—๐Ÿ“‚ searchResult
 โ”ƒ โ”ฃ๐Ÿ“‚ signUpPage
 โ”ƒ โ”ƒ โ”ฃ๐Ÿ“‚ emailSignUp
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚ profileSet
 โ”ƒ โ”ฃ๐Ÿ“‚ updatePostPage
 โ”ƒ โ”ฃ๐Ÿ“‚ updateProductPage
 โ”ƒ โ”ฃ๐Ÿ“‚ uploadPostPage
 โ”ƒ โ”—๐Ÿ“‚ uploadProductPage
 โ”ƒ  โ”ฃ๐Ÿ“‚ uploadProductImg
 โ”ƒ  โ”—๐Ÿ“‚ uploadProductInput
 โ”ฃ๐Ÿ“œ App.jsx
 โ”ฃ๐Ÿ“œ App.scss
 โ”—๐Ÿ“œ index.js