/Currency-Converter

Exchange rate calculation

Primary LanguageJavaScript

๐Ÿ“ฑ ์‹ค์‹œ๊ฐ„ ํ™˜์œจ ๊ณ„์‚ฐ๊ธฐ

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

์ฃผ์–ด์ง„ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‘ ์ข…๋ฅ˜์˜ ํ™˜์œจ ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ๊ฐ๊ฐ ์ž‘๋™ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋กœ์ ํŠธ

member


์ดํ˜„ํ˜ธ


๋ฐ•ํ›ˆ์ฃผ


์œค์ฐฝํ˜„


์ด์ฃผ์˜

ํŒ€ ๊ตฌ์„ฑ ๋‹ด๋‹น
์ดํ˜„ํ˜ธ, ์œค์ฐฝํ˜„ ์„ ํƒ๋ฐ•์Šค ๊ณ„์‚ฐ๊ธฐ (SelectConverter)
๋ฐ•ํ›ˆ์ฃผ, ์ด์ฃผ์˜ ํƒญ ๊ณ„์‚ฐ๊ธฐ (TabConverter)

๋ฐฐํฌ ์ฃผ์†Œ

http://beefplz.s3-website.ap-northeast-2.amazonaws.com/


์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ์Šคํƒ

  • Stack
    • React Hooks
    • styled-components
    • fetch
    • Deploy : Netilfy
    • Other : Git / GitHub
    • Build Tool (Create React App)
    • Code Quality Tool (Prettier)

๊ณผ์ œ ๊ตฌํ˜„ ๋ชฉ๋ก

Select Box Converter (์ดํ˜„ํ˜ธ, ์œค์ฐฝํ˜„)

select-converter

  • ๋ ˆ์ด์•„์›ƒ ๋ฐ UI ( SelectConverter )
  • API ๋ฐ์ดํ„ฐ ๋ฐ›์•„ ์‚ฌ์šฉ
  • ๋ฆฌ์ŠคํŠธ ์œ„์•„๋ž˜ ์„ ํƒ ๋ฐ•์Šค
  • current์— ๋”ฐ๋ฅธ ์ˆ˜์ทจ๊ตญ๊ฐ€ ํ™˜์œจ ํ‘œ์‹œ
  • ๊ฒฐ๊ณผ๊ฐ’์— ๋”ฐ๋ฅธ ํ™˜์ „๊ฐ’ ๋ฐ˜ํ™˜

Tab Box Converter (๋ฐ•ํ›ˆ์ฃผ, ์ด์ฃผ์˜)

tab-converter

  • ๋ ˆ์ด์•„์›ƒ ๋ฐ UI ์„ค๊ณ„ (input, select ๋กœ ์ž…๋ ฅ๊ฐ’ ์„ค์ • ํ›„ ํ•˜๋‹จ์˜ ํƒญ๋ฐ•์Šค์— ๊ฒฐ๊ณผ๊ฐ’ ์ถœ๋ ฅ)
  • ์„ ํƒ๋œ ํ†ตํ™”์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ Tab์˜ ๊ตฌ์„ฑ์ด ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ™”๋˜๋„๋ก ๊ตฌํ˜„ ex) ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ โ€œUSDโ€ โ†’ โ€œCADโ€๋กœ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ, ํƒญ ๋‚ด๋ถ€์˜ โ€œCADโ€๋Š” ์ œ๊ฑฐ๋˜๊ณ  โ€œUSDโ€ ์ถ”๊ฐ€.
  • ์„ ํƒ๋œ Tab์˜ border-bottom๋งŒ ์ œ๊ฑฐ๋˜๋„๋ก ๊ตฌํ˜„
  • input ๋ฐ•์Šค์— ์ˆซ์ž๋งŒ ์ž…๋ ฅ๋˜๋„๋ก ์„ค์ • ํ›„ ํšŒ๊ณ„/ํ†ตํ™” ํ˜•์‹์— ๋งž์ถฐ ์ฝค๋งˆ(,)๊ฐ€ ์ฒœ์˜ ์ž๋ฆฌ๋งˆ๋‹ค ์ฐํž ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ ex) โ€˜2000โ€™ ์ž…๋ ฅ ์‹œ โ€˜2,000โ€™ ์œผ๋กœ ์ถœ๋ ฅ
  • API๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™˜์œจ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ™˜์œจ ๊ณ„์‚ฐ๊ธฐ ๊ตฌํ˜„. ํ™˜์œจ ์—ฐ์‚ฐ์‹ : input ์ž…๋ ฅ๊ฐ’ * (ํƒญ์—์„œ ์„ ํƒ๋œ ํ†ตํ™” / ๋“œ๋กญ๋‹ค์šด์—์„œ ์„ ํƒ๋œ ํ†ตํ™”)

CRA ๊ตฌ์กฐ

src
โ”‚
โ”œโ”€components
โ”‚ โ”‚  
โ”‚ โ””โ”€SelectConverter  
โ”‚ โ”‚ SelectConverter.jsx
โ”‚ โ””โ”€TabConverter
โ”‚ TabConverter.jsx
โ”‚
โ”œโ”€constants
โ”‚ index.js
โ”‚
โ”œโ”€pages
โ”‚ MainPage.jsx
โ”‚
โ”œโ”€styles
โ”‚ GlobalStyles.js
โ”‚
โ”œโ”€utils
โ”‚ dateConverter.js
โ”‚

์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

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

๊นƒ๋ชจ์ง€ ์‚ฌ์šฉ ์˜ˆ์‹œ
๐ŸŽ‰ init
๐Ÿšš ๋””๋ ‰ํ† ๋ฆฌ ๋˜๋Š” ํŒŒ์ผ ์ด๋™
โœจ ๊ธฐ๋Šฅ ๊ตฌํ˜„
๐Ÿ’„ CSS ์Šคํƒ€์ผ๋ง
โ™ป๏ธ ๋ฆฌํŒฉํ† ๋ง
๐Ÿ“ Readme ์ˆ˜์ •
โž• ๋ชจ๋“ˆ ์ถ”๊ฐ€
๐Ÿ› ๋ฒ„๊ทธ ํ•ด๊ฒฐ
๐Ÿš‘๏ธ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๊ณผ์ œ ํ›„๊ธฐ

์ดํ˜„ํ˜ธ ๐Ÿ˜Ž

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

์œค์ฐฝํ˜„ โœจ

๋ช…ํ™•ํ•œ ์—…๋ฌด๋ถ„๋‹ด๊ณผ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•œ ํ˜‘์—…๊ณผ ์†Œํ†ต์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑ ํ•˜์˜€๊ณ , ํ•œ๊ฑธ์Œ ๋” ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ข‹์€ ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ•ํ›ˆ์ฃผ ๐ŸŽ…

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

์ด์ฃผ์˜ ๐Ÿ™‹โ€โ™€๏ธ

์ด๋ฒˆ ๊ณผ์ œ๋ฅผ ํ†ตํ•ด git์œผ๋กœ pull request๋ฅผ ํ•˜๋ฉฐ ํ˜‘์—…ํ•˜๋Š” ๋ฐฉ์‹์„ ์ตํž ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์™ธ์—๋„ ์ •ํ•ด์ง„ ํŒ€์›๊ณผ ํ•จ๊ป˜ํ•œ ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ†ตํ•ด ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„์ด๋‚˜ ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์„ ๊ฐ™์ด ๊ณ ๋ฏผํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.