Skip to content

Sohyeon-Koo/finalFE

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

KakaoTalk_Photo_2022-07-29-15-42-48 001


๐Ÿน B-tender

์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ ์ถ”์ฒœ ๋ฐ ๊ณต์œ  ์‚ฌ์ดํŠธ


๐Ÿ•’ ์ œ์ž‘๊ธฐ๊ฐ„

2022๋…„ 6์›” 24์ผ ~ 2022๋…„ 8์›” 2์ผ



๐ŸŒŸ

๋ฌผ๊ฐ€ ์ƒ์Šน์œผ๋กœ ์ธํ•œ ๊ฐ’๋น„์‹ผ ์ˆ ์ž๋ฆฌ ๋น„์šฉ!

๋‚จ๋“ค๊ณผ ์ˆ ์„ ๋งˆ์‹œ๊ธฐ ๋ณด๋‹จ ํ™€๋กœ ์ง‘์—์„œ ๋งˆ์‹œ๋Š” ํ˜ผ์ˆ ์กฑ์˜ ์ฆ๊ฐ€!

ํ‰๋ฒ”ํ•œ ์ˆ ๋ณด๋‹ค๋Š” ์ƒˆ๋กญ๊ณ  ๋ง›์žˆ๋Š” ์นตํ…Œ์ผ์„ ์ง‘์—์„œ๋„ ํ˜ผ์ž ๋งŒ๋“ค์–ด๋ณด์ž!

  • ๋‹ค์–‘ํ•œ ์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ ์ถ”์ฒœ ๋ฐ ์ •๋ณด ์ œ๊ณต
  • ๋‚˜๋งŒ์˜ ์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ ๊ณต์œ 
  • ๋‚˜๋งŒ ์•„๋Š” ๋ถ„์œ„๊ธฐ ์ข‹์€ ๋ฐ” ์ถ”์ฒœ ๋ฐ ๊ณต์œ 

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

๐Ÿ—’๏ธ ๊ธฐ๋Šฅ

๐Ÿ‘ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์šด ํšŒ์›๊ฐ€์ž…

  • ์นด์นด์˜ค๋ฅผ ํ†ตํ•œ ์†Œ์…œ๋กœ๊ทธ์ธ ๋ฐ ๊ธฐ๋ณธ ํšŒ์›๊ฐ€์ž…์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ํšŒ์›๊ฐ€์ž… ํ•  ์ˆ˜ ์žˆ์–ด์š”!

๐Ÿ˜ƒ ๋งˆ์ดํŽ˜์ด์ง€

  • ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€์˜ ๊ฐœ์ˆ˜, ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ, ๊ณ„์ • ํƒˆํ‡ด ๋“ฑ์˜ ๊ฐ€๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”!

๐Ÿพ ๋ฉ”์ธ ํŽ˜์ด์ง€ ์ˆ ์žฅ๊ณ ์— ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์ˆ  ๋“ฑ๋กํ•˜๊ธฐ

  • ์ˆ  ๋ชฉ๋ก์—์„œ ํ”Œ๋Ÿฌ์Šค ๋ฒ„ํŠผ์œผ๋กœ ๋ฉ”์ธํŽ˜์ด์ง€ ์ˆ ์žฅ๊ณ ์— ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์ˆ ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์–ด์š”!

๐Ÿธ ๊ธฐ์กด์˜ ์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ ์ถ”์ฒœ๋ฐ›๊ธฐ

  • ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ๋ฅผ ์ถ”์ฒœ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์š”!

๐Ÿน ๋‚˜๋งŒ์˜ ์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ ๊ณต์œ 

  • ๋‚ด๊ฐ€ ๋งŒ๋“  ๋‚˜๋งŒ์˜ ์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ๋ฅผ ๊ธ€์ž‘์„ฑ์„ ํ†ตํ•ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์š”!

๐Ÿ“Œ ๋‚˜๋งŒ ์•Œ๊ณ  ์žˆ๋Š” ์นตํ…Œ์ผ ๋ฐ” ์ถ”์ฒœ๋ฐ›๊ธฐ ๋ฐ ๊ณต์œ 

  • ๋‚˜๋งŒ ์•Œ๊ณ  ์žˆ๋Š” ๋ถ„์œ„๊ธฐ ์ข‹์€ ๋ฐ”๋ฅผ ๊ธ€์ž‘์„ฑ์„ ํ†ตํ•ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์š”!

๐Ÿ’• ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ๋‚ด๊ฐ€ ์ข‹์•„์š” ๋ˆ„๋ฅธ ์ปจํ…์ธ  ํ™•์ธ

  • ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ๋‚ด๊ฐ€ ์ข‹์•„์š” ๋ˆ„๋ฅธ ๋ชจ๋“  ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”!


Architectrue

แ„Žแ…ฌแ„Œแ…ฉแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ง



๐Ÿš€ Tech Stack

  • Back-end Tech Stack



  • Front-end Tech Stack

    TypeScript





  • Front-end Library
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ช… ๋‚ด์šฉ ์ฐธ๊ณ 
axios ์„œ๋ฒ„ํ†ต์‹ 
typescript ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
react-router-dom ๋ Œ๋”๋ง
react-query ์„œ๋ฒ„๋ฐ์ดํ„ฐ๊ด€๋ฆฌ
recoil ์ „์—ญ์ƒํƒœ๊ด€๋ฆฌ
react-hook-form ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํผ ์ƒ์„ฑ
react-cookie ์ฟ ํ‚ค ์‚ฌ์šฉ ์œ„ํ•œ ์ปค์Šคํ…€ ํ›… ์ƒ์„ฑ
react-slick ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ
slick-carousel ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ
@ant-desingicons ์•„์ด์ฝ˜ ํˆดํ‚ท
react-icons ์•„์ด์ฝ˜ ํˆดํ‚ท
styled-components css
react-modal ๋ชจ๋‹ฌ์ฐฝ ์ƒ์„ฑ
@types/react-dom ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ด€๋ จ
@types/react ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ด€๋ จ
@types/node ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ด€๋ จ
@types/jest ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ด€๋ จ



๐Ÿš€ Tech Stack ์„ ์ • ์ด์œ 


  1. TypeScript (TypeScript vs JavaScript)

TypeScript๋Š” ์ •์  ํƒ€์ž… ์–ธ์–ด์ด๊ธฐ์— js๋ณด๋‹ค ์ปดํŒŒ์ผ์‹œ ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฌ์ง€๋งŒ, ์•ˆ์ •์„ฑ๋ณด์žฅ๊ณผ ์—๋Ÿฌ๋ฅผ js๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ์ˆ˜์›”ํ•˜๊ฒŒ ์žก์„ ์ˆ˜ ์žˆ์–ด์„œ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. React-query (React-query vs Redux-toolkit vs Redux)

React-qeury๋Š” ์„œ๋ฒ„์˜ ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์— ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์บ์‹ฑ, ๊ฐ’ ์—…๋ฐ์ดํŠธ, ์—๋Ÿฌํ•ธ๋“ค๋ง ๋“ฑ ๋น„๋™๊ธฐ ๊ณผ์ •์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ค˜์„œ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. Recoil (Recoil vs Redux toolkit vs Redux)

Recoil์€ Redux์—์„œ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— Redux thunk ๋“ฑ์— ์˜์กดํ•˜์—ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์™”๋Š”๋ฐ, Recoil์€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๊ณ  useState์™€ ์œ ์‚ฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ์— ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.



## ๐ŸŽฌ ์‹œ์—ฐ์˜์ƒ

์‹œ์—ฐ ์˜์ƒ ๋งํฌ




โœจ Developers

  • Front-end(React)

    • ์ž„์ค€์ˆ˜ Github
    • ๋ณ€ํฌ์žฌ Github




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

  1. CloudFront ๋ฐฐํฌ ๊ด€๋ จ ๋ฌธ์ œ

โ“S3 ๋ฒ„ํ‚ท์˜ ๋‚ด์šฉ์„ ๋‹ค์‹œ ์—…๋กœ๋“œํ•˜์—ฌ๋„ ์บ์‹œ๊ฐ€ ์œ ์ง€๋˜์–ด ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ํ•ด๋‹น ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด CloudFront์— ์ฆ‰์‹œ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

โ—๏ธ์›์ธ์„ CloudFront์˜ ์บ์‹œ ์‚ญ์ œ ์ •์ฑ…์— ์‹œ๊ฐ„ ์„ค์ •์ด ๊ธธ๊ฒŒ ์„ค์ •๋œ ๊ฒƒ์„ ์ถ”์ •ํ•˜์˜€๊ณ , ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ TTL ์„ค์ •์ด 24 ์„ค์ •๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์›์ธ์„ ํŒŒ์•…ํ•œ ํ›„ CloudFront์˜ ์ •์ฑ…์„ ๋งŒ๋“ค์–ด TTL์„ค์ •์„ 1์ดˆ๋กœ ์„ค์ •ํ–ˆ๊ณ , Invalidations(๋ฌดํšจํ™”)์— ๋งŒ๋“  ์ •์ฑ…์„ ๋ฐ˜์˜ํ•˜์—ฌ Edge Location์— ์ €์žฅ๋œ ์บ์‹œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ S3 ๋ฒ„ํ‚ท์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  1. ์†Œ์…œ๋กœ๊ทธ์ธ ๊ด€๋ จ ๋ฌธ์ œ

โ“์†Œ์…œ๋กœ๊ทธ์ธ ์ง„ํ–‰์‹œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋˜๋ฉด์„œ ํ† ํฐ๊ฐ’์„ url๋กœ ๋ฐ›์•„์˜ค๋Š”๋ฐ, ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ์•ˆ๋˜๋Š” ๋ฌธ์ œ, ํ† ํฐ๊ฐ’์„ ๋ชป ๋ฐ›๋Š” ๋ฌธ์ œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

โ—๏ธํ† ํฐ๊ฐ’์„ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์œผ๋กœ ๋ฐ›์•„์˜ค์ง€ ์•Š์•„์„œ ์ฃผ์†Œ์˜ ํŒŒ์‹ฑ params๋กœ ๋ชป ๋ฐ›์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ ์ˆ˜์ •์„ ํ•˜์˜€์œผ๋‚˜, ์ƒˆ๋กœ๊ณ ์นจ ์‹œ์—๋งŒ ์ฟ ํ‚ค์— ํ† ํฐ์ด ์ €์žฅ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜์˜€๊ณ , ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์„œ ํ† ํฐ์„ ๋ฐ›๋Š” ๋ถ€๋ถ„๊ณผ ์„œ๋ฒ„์— ์œ ์ €์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ถ€๋ถ„์„ ๋‚˜๋ˆ„์–ด์„œ ์ €์žฅํ•˜๋„๋กํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  1. react-query ๋ฐ์ดํ„ฐ reading ๊ด€๋ จ ๋ฌธ์ œ

โ“react-query๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ธํ’‹์˜ ํ”Œ๋ ˆ์ด์Šคํ™€๋”์™€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋„ฃ์–ด์คฌ๋Š”๋ฐ query์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์ „์— ์‹คํ–‰๋˜์–ด undefined๋Š” map์„ ๋Œ๋ฆด ์ˆ˜ ์—†๋‹ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”ํžˆ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…”๋„์ฒด์ด๋‹๊ณผ isLoading์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

โ—๏ธ

const titleData: string = query.isLoading
    ? "loading"
    : `${query.data[0].title}`;

์ด์™€ ๊ฐ™์ด ์•„์— ์ƒ์ˆ˜๋กœ ์ง€์ •ํ•ด์ค˜์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ๋Ÿฌ์™€์ง€์ง€ ์•Š์•˜์„ ๋•Œ loading์„ ์ถœ๋ ฅํ•ด์ฃผ๊ณ  ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐํžˆ๋„๋ก ๋งŒ๋“ค๊ณ 

 useEffect(() => {
    setTitle(titleData);
    setContent(contentData);
    setAddress(addressData);
  }, [titleData, addressData, contentData]);

useEffect๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ๋Ÿฌ์™€์ง€๋ฉด ์ž๋™์œผ๋กœ ๋ Œ๋”๋ง ๋˜๋„๋ก ํ•ด์คŒ.




๐Ÿ›  ์œ ์ € ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜


แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-06 แ„‹แ…ฉแ„’แ…ฎ 4 40 47

B-tender๋Š” 7/29 ๋ถ€ํ„ฐ 8/1๊นŒ์ง€ 4์ผ๊ฐ„ ์‚ฌ์šฉ์ž ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๊ณ , ์ด 211๋ช…์ด ์ €ํฌ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์ธ ์‚ฌ์šฉ๊ฒฝํ—˜ ๋งŒ์กฑ๋„๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™๊ณ ,

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-06 แ„‹แ…ฉแ„’แ…ฎ 4 40 06

์œ ์ € ๋ถ„๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์ด์šฉํ•˜์‹  ์„œ๋น„์Šค๋กœ๋Š” ์นตํ…Œ์ผ ๋ ˆ์‹œํ”ผ ํ™•์ธ, ์ถ”์ฒœ ๋ฐ” ํ™•์ธ, ๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š”, ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ์ข‹์•„์š” ๋ชฉ๋ก ํ™•์ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-06 แ„‹แ…ฉแ„’แ…ฎ 4 39 57


1. ๋งˆ์ด๋ ˆ์‹œํ”ผ ๊ด€์‹ฌ๋ชฉ๋ก์— ๊ธฐ์กด ๋ ˆ์‹œํ”ผ์™€ ์œ ์ € ์ถ”์ฒœ ๋ ˆ์‹œํ”ผ๊ฐ€ ํ•จ๊ป˜ ๋‚˜์˜ค๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์˜๊ฒฌ


แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-06 แ„‹แ…ฉแ„’แ…ฎ 4 37 03


2. ๋ ˆ์‹œํ”ผ ํŽ˜์ด์ง€์—์„œ ์žฌ๋ฃŒ์˜ ์‚ฌ์ง„๊ณผ ์žฌ๋ฃŒ๋ช…์˜ ์Šฌ๋ผ์ด๋“œ๊ฐ€ ๋”ฐ๋กœ ์›€์ง์ด๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•˜๋‹ค๋Š” ์˜๊ฒฌ


แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-06 แ„‹แ…ฉแ„’แ…ฎ 4 37 08


3. ๋ชจ๋“  ํƒญ๋“ค์˜ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€์—์„œ ๋’ค๋กœ ๊ฐ€๋ฉด ๊ฐ ๋””ํ…Œ์ผ์˜ ์ƒ์œ„ ํƒญ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•˜๊ณ , ๋ฐ”๋กœ ์ด์ „ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์˜๊ฒฌ


แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-08-06 แ„‹แ…ฉแ„’แ…ฎ 4 37 11


Footer

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.6%
  • HTML 1.3%
  • CSS 0.1%