Skip to content

2-guys-Javascript/travel-web-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

์ผ๋‹จ๋ฝ ํ”„๋กœ์ ํŠธ

์ผ๋‹จ๋ฝ

๋ชฉ์ฐจ

๊ฐœ์š”

์‹œ์ž‘ ๊ฐ€์ด๋“œ

Requirement

  • Node.js 18.16.0
  • NPM 9.5.1

Installation

์ฐธ๊ณ  ์‚ฌํ•ญ : ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” api key๋“ค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.env file

// ํ™˜์œจ ๊ด€๋ จ api key
VITE_EXCHANGE_API_KEY=
// ๋‚ ์”จ ๊ด€๋ จ api key
VITE_WEATHER_API_KEY=
// firebase ๊ด€๋ จ key:
VITE_FIREBASE_API_KEY=
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
VITE_FIREBASE_MEASUREMENT_ID=
VITE_GOOGLE_API_KEY=
$ git clone https://github.com/2-guys-Javascript/travel-web-app.git
$ cd travel-web-app
$ npm install // ๊ด€๋ จ ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ์„ค์น˜
$ npm run dev // ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ ์‹คํ–‰

// ํ˜น์€

$ npm run build
$ npm run preview // ๋นŒ๋“œ ํ›„ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ์˜ ์‹คํ–‰

๊ธฐ์ˆ  ์Šคํƒ โš’๏ธ

Environment

Config

Development

Communication

Deployment

์ฃผ์š” ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ • ํฌ์ธํŠธ ๐Ÿ“Œ

  • VITE
    ๊ธฐ์กด์˜ Create React App์˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด Webpack ๋ฒˆ๋“ค๋Ÿฌ์™€ Babel ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋นŒ๋“œํ•˜๋Š”๋ฐ, VITE๋ฅผ ์ด์šฉํ•œ ๋ฐฉ์‹์€ ESbuild ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๊ณ  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • REACT
  • FIREBASE
    ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ๊ตฌ์ถ•์€ express ํ”„๋ ˆ์ž„์›Œํฌ์™€ mongoDB๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง„ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด๋‹น ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋ฉด ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด passport ๋ชจ๋“ˆ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋” ์†Œ์š”๋œ๋‹ค๋Š” ์ , mongoDB์™€ firebase firestore๊ฐ€ ๋ชจ๋‘ noSQL ๊ธฐ๋ฐ˜์˜ document ๋ฐฉ์‹์ด๋ผ ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์—ฌ firebase๋ฅผ ์ด์šฉํ•ด ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • NETLIFY
    netlify ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด Github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•ด์ค„ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ์ƒˆ๋กญ๊ฒŒ push๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊นŒ์ง€ ์ž๋™์œผ๋กœ ์ ์šฉ๋œ๋‹ค๋Š” ์ ์€ ๋งค์šฐ ๋งค๋ ฅ์ ์œผ๋กœ ๋‹ค๊ฐ€์™”์Šต๋‹ˆ๋‹ค.
  • Google API
    google์˜ Javascript Map๊ณผ places API๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ GCP์˜ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์ด๋ฅผ ํ•˜๋‚˜์˜ api key๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•˜๊ณ , ํ•ด๋‹น ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์ œ์•ฝ ์‚ฌํ•ญ์„ ์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์„ฑ์ด ๋†’๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ ๐Ÿ“Œ

  1. Login & Signup ๐Ÿ”

๋กœ๊ทธ์ธ์€ ํฌ๊ฒŒ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ ๋ฐฉ์‹๊ณผ ๊นƒํ—ˆ๋ธŒ ๊ณ„์ • ์—ฐ๋™ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ localStorage์— ๋„ฃ์–ด์ฃผ๊ณ , ๊ฐ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ ๋  ๋•Œ๋งˆ๋‹ค useEffect() ํ›…์„ ํ†ตํ•ด์„œ ์ด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค => ์ง€๋„, ๋‚ ์”จ, ํ™˜์œจ, ๋งˆ์ด ํŽ˜์ด์ง€ ํƒญ ๋ชจ๋‘ ํšŒ์› ๊ฐ€์ž…(Sign up)์€ html form์˜ input์œผ๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฉ”์ผ, ๋น„๋ฐ€ ๋ฒˆํ˜ธ ๊ทธ๋ฆฌ๊ณ  ๋‹‰๋„ค์ž„์„ ์ž…๋ ฅ ๋ฐ›์•„ firebase authentication์— ๋“ฑ๋กํ•ด์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๊ฐ ์ž…๋ ฅ ํ•„๋“œ๊ฐ€ ์ด๋ฉ”์ผ์ด ๋งž๋Š”์ง€, ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๊ธธ์ด๊ฐ€ ์ ๋‹นํ•œ์ง€๋ฅผ ์ •๊ทœ ํ‘œํ˜„์‹ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ฆํ•ด์ฃผ์—ˆ๊ณ , ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ณ„์ •์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋Š” firebase์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ๋‚˜ํƒ€๋ƒˆ์Šต๋‹ˆ๋‹ค.

  1. Map ๐Ÿ—บ๏ธ
    ์ง€๋„๋Š” ๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๋Š” ํ›„์ž์˜ ๊ธฐ๋Šฅ์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋‚ ์งœ์— ๋งž๋Š” ๋ณธ์ธ์˜ ์ผ์ •์„ ์ƒ์„ฑํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ›„์ž๋Š” ํŠน์ • ์žฅ์†Œ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰๊ณผ ํ•ด๋‹น ์žฅ์†Œ ์ฃผ๋ณ€์˜ ๋ช…์†Œ(์‹๋‹น, ์นดํŽ˜)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

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

  1. Weather ๐ŸŒฆ๏ธ

์‚ฌ์šฉ์ž๋Š” ๋‚ ์”จ ํƒญ์—์„œ ํ•œ๊ตญ๊ณผ ์ผ๋ณธ์˜ ํŠน์ • ๋„์‹œ์— ๋Œ€ํ•œ ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•˜์—ฌ ์˜ค๋Š˜, ๋‚ด์ผ, ๋ชจ๋ ˆ์— ๋Œ€ํ•œ ๋‚ ์”จ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Currency ๐Ÿ’ด

์‚ฌ์šฉ์ž๋Š” ํ™˜์œจ ํƒญ์—์„œ ํด๋ฆญ์„ ํ†ตํ•ด ๋‹น์ผ์˜ ํ™˜์œจ ์ •๋ณด๋ฅผ ์›ํ™” ๊ธฐ์ค€, ์—”ํ™” ๊ธฐ์ค€์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์šฐํŒ… & ์ปดํฌ๋„ŒํŠธ & ์ƒํƒœ ๊ด€๋ฆฌ

๋ผ์šฐํŒ…

  1. Home (url : /)
  2. ํ•œ๊ตญ (url : /korea)

์ตœ์™ธ๊ณฝ์—๋Š” KrDefaultLayout์ด ๊ฐ์‹ธ๊ณ  ์žˆ์–ด ์ƒ๋‹จ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ—ค๋”๊ฐ€, ํ•˜๋‹จ์—๋Š” ๊ฐ ํƒญ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์œ„์น˜ํ•˜๊ณ , ์„ธ๋ถ€ url path์— ๋”ฐ๋ผ์„œ Outlet ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  1. ์ผ๋ณธ (url : /japan)

์ผ๋ณธ ํƒญ๋„ ํ•œ๊ตญ ํƒญ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ตœ์™ธ๊ณฝ์—๋Š” JpDefaultLayout์ด ๊ฐ์‹ธ๊ณ  ์žˆ์–ด ์ƒ๋‹จ๊ณผ ํ•˜๋‹จ์— ๊ฐ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ—ค๋”์™€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„ธ๋ถ€ Outlet ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™˜์œจ(Exchange)์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํšŒ์› ๊ฐ€์ž… (url : /signup) ๊ณผ ๋กœ๊ทธ์ธ (url : /login)

ํ•ด๋‹น url path๋งŒ ์˜ˆ์™ธ์ ์œผ๋กœ ApplicationHeader๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ , ๊ฐœ๋ณ„์ ์ธ ํ—ค๋”๋ฅผ ์ •์˜ํ•˜์—ฌ UI๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

  1. ๋งˆ์ดํŽ˜์ด์ง€ (url : /mypage)

๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ • ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํƒญ์ด๋ฏ€๋กœ ApplicationHeader๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋‚ด์šฉ์€ MyPage ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ

  • App-Header

  • Home

  • Japan(JapanDefaultLayout)

    • Japan
    • Jpweather
    • Exchange
    • JpNavBar
  • Korea(KoreaDefaultLayout)

    • Korea
    • Krweather
    • KrNavBar

์ƒํƒœ ๊ด€๋ฆฌ

์ถ”๊ฐ€ ์š”๊ตฌ ์‚ฌํ•ญ

  1. ์‚ฌ์šฉ์ž์˜ ์ผ์ •์— ๋Œ€ํ•œ ์‚ญ์ œ๋ฅผ ๋„˜์–ด ์ˆ˜์ • ๊ธฐ๋Šฅ
  2. localStorage๋ฅผ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์ •๋ณด ์ €์žฅ์€ ๋ณด์•ˆ์ƒ ์•„์‰ฌ์šด ์ ์ด ์žˆ์œผ๋‹ˆ cookie๋ฅผ ์ด์šฉํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„
  3. ๋น„๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž๋„ ํŠน์ • ์ง€์ ์„ ํด๋ฆญํ•˜๊ณ , ํ•ด๋‹น ์žฅ์†Œ ์ฃผ๋ฉด์˜ ๋ช…์†Œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Œ
  4. login๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด๋‹จ์œผ๋กœ /login, /signup ํŽ˜์ด์ง€๋กœ ์ ‘๊ทผํ•˜๋Š” ์ด์Šˆ
  5. ๋งˆ์ด ํŽ˜์ด์ง€์—์„œ sns ๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž๋Š” ๋„๋Œ€์ฒด ๋ฌด์Šจ ๋น„๋ฐ€ ๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ํ•˜๋ผ๋Š” ๊ฒƒ์ธ๊ฐ€?

๊ฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๊ตฌํ˜„ ์ƒ์„ธ ์ •๋ฆฌ

๊ณตํ†ต

  1. App ์ปดํฌ๋„ŒํŠธ์—์„œ ๋กœ๊ทธ์ธ, ์‚ฌ์šฉ์ž id, ์ด๋ฆ„์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์ „์—ญ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ๊ด€๋ จ hook์œผ๋กœ ์ „์—ญ ์ƒํƒœ๋กœ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ๋Œ์–ด์™€์„œ ๊ด€๋ จ UI๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์„ ์ด์™€ ๋‹ฌ๋ฆฌ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— header, footer, content๋ฅผ ๊ณตํ†ต์ ์œผ๋กœ wrapping ํ•˜๋Š” App ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ๋ฅผ ์„ ์–ธํ•˜๊ณ , ํŠน์ • ํŽ˜์ด์ง€์— ์ง„์••ํ•  ๋•Œ๋งˆ๋‹ค useEffect() ํ›…์„ ์ด์šฉํ•ด ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

/ ํŽ˜์ด์ง€

ํ•ด๋‹น ํŽ˜์ด์ฆˆ๋Š” korea์™€ japan ํƒญ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๊ฐ€ fadeIn ํšจ๊ณผ๋ฅผ ํ†ตํ•ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ค‘๊ฐ„์˜ opening ์ด๋ฏธ์ง€๊ฐ€ ํƒญ์„ ๊ฐ€๋ฆฌ๋Š” ํ˜„์ƒ์„ pointer-events : none ์†์„ฑ์œผ๋กœ ํ•ด์ œ์‹œ์ผœ๋ฒ„๋ฆผ

/korea ํŽ˜์ด์ง€

๊ธฐ๋ณธ์ ์œผ๋กœ KoreaDefaultLayout์ด ํ•˜์œ„ ์„ธ๋ถ€ ์„ธ๊ทธ๋จผํŠธ๋“ค์„ ๊ฐ์‹ธ๋ฉฐ, ์ด๋Š” outlet ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด ์ฐจ๋ณ„ํ™”๋œ๋‹ค.

  • weather ์„ธ๋ถ€ ๊ฒฝ๋กœ : ๋‚ ์”จ api๋ฅผ ๋ฐ›์•„์™€์„œ ๊ตญ๋‚ด ๋‚ ์”จ ์ •๋ณด๋ฅผ ๋„์‹œ ๋ณ„๋กœ ๋ Œ๋”๋ง

/japan ํŽ˜์ด์ง€

๊ธฐ๋ณธ์ ์œผ๋กœ JapanDefaultLayout์ด ํ•˜์œ„ ์„ธ๋ถ€ ์„ธ๊ทธ๋จผํŠธ๋“ค์„ ๊ฐ์‹ธ๋ฉฐ, ์ด๋Š” outlet ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด ์ฐจ๋ณ„ํ™”๋œ๋‹ค.

  • weather ์„ธ๋ถ€ ๊ฒฝ๋กœ : ๋‚ ์”จ api๋ฅผ ๋ฐ›์•„์™€์„œ ์ผ๋ณธ ๋„์‹œ ๋‚ ์”จ ์ •๋ณด๋ฅผ ๋„์‹œ ๋ณ„๋กœ ๋ Œ๋”๋ง
  • exchange ์„ธ๋ถ€ ๊ฒฝ๋กœ : ํ•œํ™”, ์ผํ™” ๊ฐ„์˜ ํ™˜์œจ ์ •๋ณด๋ฅผ ๊ฐ๊ฐ ๋ฐ›์•„์™€์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ Œ๋”๋งํ•ด์ค€๋‹ค.

/signup ํŽ˜์ด์ง€ ๐Ÿ”

ํšŒ์› ๊ฐ€์ž…์€ ์ด๋ฉ”์ผ๊ณผ ํŒจ์Šค์›Œ๋“œ ๊ธฐ๋ฐ˜์˜ ๋กœ์ง์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค. sns ๋ฐฉ์‹์€ ๋”ฐ๋กœ ํšŒ์› ๊ฐ€์ž…์„ ์ง„ํ–‰ํ•  ํ•„์š”๋Š” ์—†๊ณ , ๋ฐ”๋กœ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ ์„œ๋น„์Šค ์ด์šฉ์„ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
ํšŒ์› ๊ฐ€์ž…์˜ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ form์— ์ด๋ฉ”์ผ, ํŒจ์Šค์›Œ๋“œ, ์‚ฌ์šฉํ•  ๋‹‰๋„ค์ž„์„ ์ž…๋ ฅํ•œ๋‹ค. ์ด๋•Œ ๊ณผ๋„ํ•œ ํŽ˜์ด์ง€ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ง‰๊ธฐ ์œ„ํ•ด form์˜ ์–‘๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ์€ ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ง€ form์ด ์ œ์ถœ๋  ๋•Œ์—๋งŒ ํ•ด๋‹น ๊ฐ’์„ ์ฐธ์กฐํ•˜์—ฌ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
  2. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•œ ์ด๋ฉ”์ผ๊ณผ ํŒจ์Šค์›Œ๋“œ๋Š” createUserWithEmailAndPassword ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด credential์„ ๊ฐ€์ ธ์˜ค๊ณ , updateProfile ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด displayName๊นŒ์ง€ ๋‹‰๋„ค์ž„์œผ๋กœ ๋“ฑ๋กํ•ด์ค€๋‹ค.
  3. ์ •์ƒ์ ์ด๋ผ๋ฉด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋ถ‰์€ ๊ธ€์”จ๋กœ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

/login ํŽ˜์ด์ง€ ๐Ÿ”“

๋กœ๊ทธ์ธ์˜ ๋กœ์ง์€ Oauth 2.0 ํ”„๋กœํ† ์ฝœ์„ ์›น ์„œ๋ฒ„์—์„œ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๋ณด๋‹ค๋Š”, firebase์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธ ๋ฐฉ์‹์€ ํฌ๊ฒŒ facebook, google, gitub, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฉ”์ผ & ํŒจ์Šค์›Œ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๊ธฐ๋ณธ ์›๋ฆฌ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

  1. auth๋ชจ๋“ˆ๊ณผ ์ธ์ฆ ๊ด€๋ จ ์ •๋ณด(์ด๋ฉ”์ผ & ํŒจ์Šค์›Œ๋“œ ํ˜น์€ sns provider) : ๊ด€๋ จ ์„ค์ •์€ firebaseConfig.js ๋ชจ๋“ˆ์—์„œ ์ƒ์„ฑ
  2. 1์˜ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ async ~ await ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ๋ฆฌํ„ดํ•œ credential์—์„œ uid์™€ displayName์„ ๋ฐ›์•„ ์ƒํƒœ์™€ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ๋ฐ˜์˜ํ•˜๊ธฐ
  3. 2์˜ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์—๋Ÿฌ ํ•ธ๋“ค๋ง์„ ํ•˜๊ณ , ์„ฑ๊ณต์ ์ด๋ผ๋ฉด ๋ฃจํŠธ ๋žœ๋”ฉ ํŽ˜์ด์ง€๋กœ ๋„ค๋น„๊ฒŒ์ดํŠธ

About

๐Ÿ๏ธ ์ผ๋‹จ๋ฝ ํ”„๋กœ์ ํŠธ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published