Skip to content

BedalFriend/BaedalFriend-FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

๋ฐฐ๋‹ฌ ํ”„๋ Œ๋“œ BaedalFriend

๐Ÿ‘‰๐Ÿป Click!! ๐Ÿ‘ˆ๐Ÿป


๐Ÿ‘ซย ๋ฐฐ๋‹ฌํ”„๋ Œ๋“œ๋Š”

๋ชจ์ง‘๊ธ€์„ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฃผ๋ณ€์—์„œ ํ•จ๊ป˜ ๋ฐฐ๋‹ฌ์„ ์‹œํ‚ฌ ํ”„๋ Œ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค๋Š” ์˜๋ฏธ๋กœ,

" ๋น„์‹ผ ๋ฐฐ๋‹ฌ๋น„ ๋ฐ ์ตœ์†Œ๋ฐฐ๋‹ฌ๊ธˆ์•ก ๋•Œ๋ฌธ์— ๋ฐฐ๋‹ฌ์„ ๋ง์„ค์ด๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ณต๋™ ๋ฐฐ๋‹ฌ์„œ๋น„์Šค " ์ž…๋‹ˆ๋‹ค.


๐Ÿ’กย ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๐Ÿฅฒ ๋„ˆ๋ฌด ๋จน๊ณ  ์‹ถ์€ ์Œ์‹์„ ๊ฒฐ์ œํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ ๋ฐฐ๋‹ฌ๋น„๊ฐ€ ํ„ฐ๋ฌด๋‹ˆ ์—†์ด ๋น„์‹ธ์„œ ํฌ๊ธฐํ•œ ๊ฒฝํ—˜,

๐Ÿ˜ข ํ˜ผ์ž ์˜ค๋ถ“ํ•˜๊ฒŒ ๋จน๊ณ  ์‹ถ์€๋ฐ ์ตœ์†Œ ๋ฐฐ๋‹ฌ ๊ธˆ์•ก์ด ๋„ˆ๋ฌด ๋†’์•„์„œ ํฌ๊ธฐํ•œ ๊ฒฝํ—˜, ํ•œ๋ฒˆ ์ฏค์€ ์žˆ์œผ์‹œ์ฃ !

๊ฐ™์ด ์‹œํ‚ฌ ์‚ฌ๋žŒ์ด ํ•œ๋ช…๋งŒ ๋” ์žˆ์–ด๋„ ๋ฐฐ๋‹ฌ ๋ถ€๋‹ด์ด ์ค„์–ด๋“ค ๊ฑฐ๋ผ๋Š” ์•„์ด๋””์–ด์—์„œ

โ€˜๋ฐฐ๋‹ฌํ”„๋ Œ๋“œโ€™ ๊ฐ€ ํƒ„์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.


โš™๏ธ ํ”„๋กœ์ ํŠธ ์ฃผ์š” ๊ธฐ๋Šฅ

๋ฐฐ๋‹ฌ ํ”„๋ Œ๋“œ๋ถ„๋“ค์˜ ๋”์šฑ ํŽธ๋ฆฌํ•œ ๋งค์นญ์„ ์œ„ํ•ด ์œ„์น˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์†Œ๋ฅผ ๋“ฑ๋กํ•ด์ฃผ์‹œ๋ฉด ๊ฐ€๊นŒ์šด ๊ณณ์—์„œ ์—ด๋ฆฌ๊ณ  ์žˆ๋Š” ๋ฐฐ๋‹ฌ ๋ชจ์ง‘๊ธ€์˜

๐Ÿ”ย ๊ฒ€์ƒ‰, ๐ŸŒย ์œ„์น˜ ํ™•์ธ, ๐Ÿ’ฌย ํ”„๋ Œ๋“œ๋“ค๊ณผ ์ฑ„ํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


ย ๋ฐ˜์‘ํ˜• ์›น/์•ฑ

แ„‡แ…กแ†ซแ„‹แ…ณแ†ผแ„’แ…งแ†ผ

  • ๋””๋ฐ”์ด์Šค ์ข…๋ฅ˜์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ํŽธ์•ˆํ•œ ํ™”๋ฉด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ย ๊ฐ„๋‹จํ•˜๊ณ  ์•ˆ์ „ํ•œ ํšŒ์›๊ฐ€์ž…

image

  • ์นด์นด์˜ค ์†Œ์…œ๋กœ๊ทธ์ธ์„ ํ†ตํ•œ ๊ฐ„๋‹จํ•œ ๊ฐ€์ž…๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ž์ฒด์ ์ธ ํšŒ์›๊ฐ€์ž… ๋˜ํ•œ ๊ฐ„ํŽธํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ย ์ง€๋„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ

image

  • ๋ฐฐ๋‹ฌ ๊ณต๋™ ์ฃผ๋ฌธ์— ํ•„์š”ํ•œ ํ•ญ๋ชฉ์„ ํผ์— ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ธฐ์ž…ํ•˜์—ฌ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์นด์นด์˜ค๋งต์„ ํ†ตํ•ด ์Œ์‹์  ์žฅ์†Œ์™€ ๋งŒ๋‚  ์žฅ์†Œ์˜ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ง€๋„์— ํ‘œ์‹œ๋˜๋Š” ์œ„์น˜๋กœ ์„ ํƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ย ํ‚ค์›Œ๋“œ ๋ฐ ์นดํ…Œ๊ณ ๋ฆฌ, ์ง€๋„๋ฅผ ํ†ตํ•œ ๋ฐ˜๊ฒฝ 1km ์ด๋‚ด์˜ ๊ฒŒ์‹œ๋ฌผ ๋งž์ถค ๊ฒ€์ƒ‰

image

  • ํ‚ค์›Œ๋“œ์™€ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๊ตฌ๋ถ„๋œ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ฐพ๊ณ  ์‹ถ์€ ๋ชจ์ง‘ ๊ธ€์„ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•ด ์ฃผ์‹œ๋ฉด โ€˜Nearbyโ€™๋ฅผ ํ†ตํ•ด ์„ค์ • ์ฃผ์†Œ ๊ธฐ๋ฐ˜ 1km ์ด๋‚ด์˜ ๊ฒŒ์‹œ๋ฌผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ย ๋ฐฐํ”„๋“ค๊ณผ์˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…

image

  • ๊ฒŒ์‹œ๋ฌผ์— ์ฐธ์—ฌํ•˜๋ฉด, ์ฐธ์—ฌ ์ค‘์ธ ๋ฐฐํ”„๋“ค๊ณผ ์ฑ„ํŒ…์„ ํ†ตํ•ด ๋ฐฐ๋‹ฌ ๊ด€๋ จ ์ •๋ณด ๊ตํ™˜์„ ํ•˜์—ฌ ์„ฑ๊ณต์ ์ธ ๊ณต๋™ ์ฃผ๋ฌธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ย ๊ฐœ์ธ์˜ ์ทจํ–ฅ์— ๋งž๊ฒŒ ํ”„๋กœํ•„ ์ˆ˜์ •

image

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

โ™ป๏ธ ์•„ํ‚คํ…์ฒ˜

image


๐Ÿ› ย ์‚ฌ์šฉํ•œ ํŒจํ‚ค์ง€

์ด๋ฆ„ ๋ฒ„์ „ ์„ค๋ช…
react-redux @reduxjs/toolkit ^1.9.0 React์˜ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋„์ž…ํ–ˆ๋‹ค.
Toolkit์„ ์‚ฌ์šฉํ•ด์„œ ๊ธฐ์กด Redux์˜ ๊ธด ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ค„์˜€๊ณ ,
immer๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ๋ถˆ๋ณ€์„ฑ์„ ์‰ฝ๊ฒŒ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
@sentry/react @sentry/tracing ^7.23.0 ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ทจํ•ฉ ๋ฐ ๋ถ„์„ ๋„๊ตฌ, ๋ชจ๋‹ˆํ„ฐ๋ง ํ”Œ๋žซํผ์ด๋‹ค.
๋” ๋‚˜์•„๊ฐ€์„œ ๋ฐœ์ƒํ•œ ๋กœ๊ทธ๋“ค์„ ์‹œ๊ฐํ™” ๋„๊ตฌ๋กœ ์‰ฝ๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค.
@stomp/stompjs ^6.1.2 Stomp๊ฐ€ ์ œ๊ณตํ•˜๋Š” Publish-Subscribe ๋งค์ปค๋‹ˆ์ฆ˜์— ๋”ฐ๋ผ ์†Œ์ผ“ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.
sockjs-client ^1.6.1 WebSocket๊ณผ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
์งง์€ ์ง€์—ฐ์‹œ๊ฐ„๊ณผ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง•์„ ์ง€์›ํ•œ๋‹ค.
react-router-dom ^6.4.3 ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…์„ ๋„์™€์ฃผ๋Š” ํŒจํ‚ค์ง€์ด๋‹ค.
react-cookie ^4.1.1 React์—์„œ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ Cookie๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
axios ^1.1.3 Promise API๋ฅผ ํ™œ์šฉํ•˜๋Š” HTTP ๋น„๋™๊ธฐ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง•์— ์ตœ์ ํ™”๋˜์–ด์„œ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค.
styled-components ^5.3.6 ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์ ์œผ๋กœ ํ™œ์šฉํ•œ ์Šคํƒ€์ผ ๋„๊ตฌ์ด๋‹ค.
CSS-in-JS ์Šคํƒ€์ผ ๋„๊ตฌ์—ฌ์„œ JS ํ™˜๊ฒฝ์„ ํ™œ์šฉํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค. JS์™€ CSS๊ฐ„ ์ƒ์ˆ˜/ํ•จ์ˆ˜ ๊ณต์œ ๊ฐ€ ์‰ฝ๊ณ , ํŠนํžˆ React ํ™˜๊ฒฝ์—์„œ props๋ฅผ ํ™œ์šฉํ•œ ์กฐ๊ฑด๋ถ€ ์Šคํƒ€์ผ๋ง์— ์šฉ์ดํ•˜๋‹ค.
browser-image-compression ^2.0.0 ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•˜๊ธฐ ์ „ ํ•ด์ƒ๋„, ์ €์žฅ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์••์ถ•ํ•จ์œผ๋กœ์จ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿคฏย ์ด์Šˆ ๋ฐ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

1๏ธโƒฃ ๊ฒ€์ƒ‰ ์‹œ debounce๋ฅผ ์ด์šฉํ•˜์—ฌ API ํ˜ธ์ถœ ํ•œ๋ฒˆ๋งŒ ํ•˜๊ธฐ

  • ๋ฌธ์ œ์‚ฌํ•ญ

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

    • ๋ฐฉ๋ฒ•์„ ์ฐพ๋˜ ์ค‘ API์˜ ๊ณผ๋„ํ•œ ์š”์ฒญ, ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด โ€˜debounceโ€™๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ œ์–ดํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐœ๊ฒฌ ํ•จ.
    • ๋””๋ฐ”์šด์Šค๋Š” ์—ฐ์†์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜ ์ค‘ ๋งˆ์ง€๋ง‰ ํ•จ์ˆ˜๋งŒ์„ ํ˜ธ์ถœํ•จ. ์ฆ‰, ์š”์ฒญ์ด ๋“ค์–ด์˜ค๊ณ  ์ผ์ • ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋งŒ์•ฝ ์ผ์ • ์‹œ๊ฐ„ ์•ˆ์— ๊ฐ™์€ ์š”์ฒญ์ด ์ถ”๊ฐ€๋กœ ๋“ค์–ด์˜ค๋ฉด ์ด์ „ ์š”์ฒญ์€ ์ทจ์†Œ๋˜์–ด ๊ฒ€์ƒ‰ ๋กœ์ง์— ์ ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จ ํ•จ.
  • ๋ฌธ์ œํ•ด๊ฒฐ

    • useEffect ์•ˆ์—์„œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  0.6์ดˆ ํ›„์— ์‹คํ–‰๋  ๋””๋ฐ”์šด์Šค ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ฃผ์—ˆ๋”๋‹ˆ ํ‚ค์›Œ๋“œ๋ฅผ ์น˜๋Š” ๋™์•ˆ์—๋Š” ๊ฒ€์ƒ‰๊ฒฐ๊ณผ๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š์•„ ํ›จ์”ฌ ํŽธ์•ˆํ•œ ๊ฒฝํ—˜์„ ์œ ์ €์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ.

2๏ธโƒฃ ๋กœ๊ทธ์ธ ์œ ์ง€์™€ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ํŠน์ • ํŽ˜์ด์ง€ ์ ‘๊ทผ ์ œํ•œ

  • ๋ฌธ์ œ์‚ฌํ•ญ

    • ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ตœ๋Œ€ํ•œ ๋กœ๊ทธ์ธ์„ ์œ ์ง€ ์‹œํ‚ค๊ณ ์ž ํ–ˆ์Œ. ํ•˜์ง€๋งŒ ํ† ํฐ ์žฌ๋ฐœ๊ธ‰์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉด ์งง๊ฒŒ ์„ค์ •ํ•œ Access Token์˜ ์œ ํšจ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ๋กœ๊ทธ์ธ์„ ๊ธธ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์—†์Œ.
    • ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ๋ฟ ์•„๋‹ˆ๋ผ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํŠน์ • ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค Effect ํ›…์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋Š” ์ฝ”๋“œ์˜ ์ค‘๋ณต ์ž‘์„ฑ๊ณผ ์œ ์ง€/๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง€๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•จ.
  • ํ•ด๊ฒฐ๊ณผ์ •

    • ํŽ˜์ด์ง€ ์ด๋™ / ์ƒˆ๋กœ๊ณ ์นจ์ด ์ผ์–ด๋‚  ๋•Œ ๋งˆ๋‹ค ํ† ํฐ์ด ์œ ํšจํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ์žฌ๋ฐœ๊ธ‰ ๋ฐ›์•„์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ.
    • ํ† ํฐ์„ ์žฌ๋ฐœ๊ธ‰ ๋ฐ›๋Š” ๊ณผ์ •๊ณผ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฒฐ๊ณผ ๊ฐ’์„ returnํ•˜๋Š” ๊ณผ์ •์„ ํ•˜๋‚˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ ๋จ.
    • ํŠน์ • UI์— ํ† ํฐ๊ณผ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ ค ํ–ˆ์ง€๋งŒ ๋””์ž์ธ ์„ค๊ณ„ ์ƒ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๊ณตํ†ต๋˜๋Š” UI๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Œ.
  • ๋ฌธ์ œํ•ด๊ฒฐ

    • ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ react-router-dom ํŒจํ‚ค์ง€๋ฅผ ํ™œ์šฉํ•ด์„œ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ ์ „ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š” 3๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ๋ผ์šฐํŒ… ๊ณผ์ •์„ ๋งŒ๋“ฆ. ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ํ† ํฐ์„ ํŒŒ๊ธฐํ•˜๊ฑฐ๋‚˜ ์œ ์ง€, ํ˜น์€ ์žฌ๋ฐœ๊ธ‰ ๋ฐ›๋Š” ๊ณผ์ •์„ ๊ณตํ†ต์ ์œผ๋กœ ๊ฑฐ์น˜๊ณ , ๊ทธ๋Œ€๋กœ ํŽ˜์ด์ง€ ์ด๋™์„ ์ง„ํ–‰ํ•˜๊ฑฐ๋‚˜ ํ† ํฐ์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ• ์ง€๋ฅผ ์ •ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นจ.

3๏ธโƒฃ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ ์‹œ ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง•

  • ๋ฌธ์ œ์‚ฌํ•ญ

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

    • ๊ธฐ์กด์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ˆ˜์ • ์š”์ฒญ ์‹œ ์ˆ˜์ •๋  ์ด๋ฏธ์ง€๊ฐ€ file ํ˜•์‹์œผ๋กœ ์„œ๋ฒ„์— ์ „์†ก๋˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, imageCompression์„ ์ด์šฉํ•ด ๋ฆฌ์‚ฌ์ด์ง•๋œ ํŒŒ์ผ์„ ํ™•์ธํ•ด ๋ณธ ๊ฒฐ๊ณผ Blob ํ˜•์‹์˜ Data๋กœ ์„œ๋ฒ„์— ์ „์†ก๋˜๊ณ  ์žˆ์–ด '400 Bad Request'๊ฐ€ ๋ฐœ์ƒ ํ•จ.
    • ๋˜ํ•œ ASCII๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ์— ์•ˆ์ „ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•œ ์„œ๋ฒ„ ์ „์†ก ๋ฐ DB ์ €์žฅ์„ ์œ„ํ•ด ์••์ถ•๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ base64๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•จ.
  • ๋ฌธ์ œํ•ด๊ฒฐ

    • Blob ํ˜•์‹์œผ๋กœ ๋ฆฌ์‚ฌ์ด์ง•๋œ Data์˜ ์ˆœ์ˆ˜ํ•œ url์„ atob ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋””์ฝ”๋”ฉํ•œ ๋’ค, File ํ˜•์‹์˜ Data๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์„œ๋ฒ„์— ์ „์†กํ–ˆ๋”๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ๋ฆฌ์‚ฌ์ด์ง•๋˜์–ด s3 ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•จ.

๐Ÿš€ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ์„ 

1๏ธโƒฃ ์บ๋Ÿฌ์…€ / ์ƒ์„ธ ํŽ˜์ด์ง€ ์ง€๋„ ๋ฐฐ๊ฒฝ UX ๊ฐœ์„ 

  • ๋ฌธ์ œ ์‚ฌํ•ญ

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

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

2๏ธโƒฃ ๊ฒŒ์‹œ๊ธ€ ๋งˆ๊ฐ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋‚ ์งœ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ๊ฐœ์„ 

  • ๋ฌธ์ œ ์‚ฌํ•ญ

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

    • ๋‹ค์Œ๋‚ ๊นŒ์ง€ ๊ฒŒ์‹œ๊ธ€์ด ์˜ฌ๋ผ๊ฐ€๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ์ง‘ ๋งˆ๊ฐ ์‹œ๊ฐ์ด ํ˜„์žฌ ์‹œ๊ฐ๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ, ๋‹ค์Œ๋‚  ์ž‘์„ฑ ์‹œ๊ฐ„์œผ๋กœ ๊ฒŒ์‹œ๋ฌผ์ด ์˜ฌ๋ผ๊ฐ€๋„๋ก ๋กœ์ง์„ ๋ณ€๊ฒฝ ํ•จ.
    • ์œ ์ €์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ง์ ‘ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ์ž๋™์ ์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„๊ณผ ๋ชจ์ง‘ ๋งˆ๊ฐ ์‹œ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ ๋‚ ์งœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋„๋ก ๊ตฌํ˜„ ํ•จ.

โœˆ๏ธย ๋ฐ”๋กœ๊ฐ€๊ธฐ


๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘งย ๊ณ ์ƒํ•œ ๋ฉค๋ฒ„๋“ค

๊น€์žฌ๋ช… ๐Ÿ‘‘ ๊น€์ •์€ ๐Ÿ—ก ๋…ธํฌ์ง„ ๐Ÿ”จ ์ง€์˜์ฃผ ๐Ÿ–Œ
Github Github Github Behance
FE / React FE / React FE / React Designer

Releases

No releases published

Packages

No packages published

Languages