/SNB-server

Primary LanguageJavaScript

๐ŸŽค SNB

SongNumberBook

๋…ธ๋ž˜๋ฐฉ์—์„œ ๋…ธ๋ž˜๋ถ€๋ฅด๋Š” ์‹œ๊ฐ„๋ณด๋‹ค ๋…ธ๋ž˜๋ฅผ ๊ณ ๋ฅด๋Š” ์‹œ๊ฐ„์ด ๋” ๋งŽ์ง€ ์•Š์œผ์…จ๋‚˜์š”?
๋‹ค๋ฅธ์‚ฌ๋žŒ์ด ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅผ๋•Œ ํ•ธ๋“œํฐ๋งŒ ๋งŒ์ง€๋ฉฐ ์–ด๋–ค ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅผ์ง€ ๊ณ ๋ฏผํ•˜์ง€ ์•Š์œผ์…จ๋‚˜์š”?
๊ฒฐ๊ตญ ์„ ํƒ๋œ ๋…ธ๋ž˜๊ฐ€ ์–ด์ œ ๋ถ€๋ฅธ ๊ทธ ๋…ธ๋ž˜๊ฐ€ ์•„๋‹ˆ์—ˆ๋‚˜์š”?

์ด์ œ ๋…ธ๋ž˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋‚˜๋งŒ์˜ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ด๋ณด์„ธ์š”!

๐ŸŽ™ SSP

ํ”„๋กœ์ ํŠธ ๋ฉค๋ฒ„๋ฅผ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

ํŒ€์› ์—ญํ™œ
๋ฐฑ๊ด‘ํ˜ธ ๐Ÿ… Frontend
๊น€์œ ์ƒ ๐Ÿ… Frontend
์ž„ํ˜œ๋ฆผ ๐Ÿ† Fullstack
์ด์€์ • ๐ŸŽ– Backend

Retrospection

์ด์€์ • (๋ฐฑ์—”๋“œ) /
๋‚ด ์ธ์ƒ ์ฒซ๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ.
์˜์š•์€ ๊ฐ€๋“ํ–ˆ์ง€๋งŒ ๊ธฐํš์„ ํ•˜๋ฉฐ ์ ์  ์ปค์ง€๋Š” work flow ์— ๋ถ€๋‹ด์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค.
์ €ํฌ๋Š” ํ”„๋ก ํŠธ์™€ ๋ฐฑ์—”๋“œ ์—ญํ• ๋งŒ ์ •ํ•ด๋‘๊ณ  ๊ฐ์ž ํ…Œ์Šคํฌ์นด๋“œ์—์„œ ํ•˜๋‚˜์”ฉ ๊ณจ๋ผ์„œ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์ด๊ฒŒ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์™”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
ํ•˜๊ณ ์‹ถ์€ ๋ถ€๋ถ„์„ ๊ณ ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํฅ๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์ฆ๊ฒ๊ฒŒ ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ํ•˜๋ฃจ 2๋ฒˆ ํšŒ์˜์—์„œ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๋” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์›ํ™œํ•œ ์†Œํ†ต์œผ๋กœ ํ”„๋กœ์ ํŠธ์˜ ์™„์„ฑ๋„๊ฐ€ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ์ผ์„ ๊ณ„๊ธฐ๋กœ ํ˜‘์—…ํ•˜๋ฉฐ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์— ๋‘๋ ค์›€์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋„ˆ๋ฌด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
์ด ๊ฒฝํ—˜์ด ์ œ ๊ฐœ๋ฐœ์ž์ธ์ƒ์˜ ๋‹จ๋‹จํ•œ ๊ธฐ๋ฐ˜์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์€์ •์˜ Worklog ๐Ÿ“˜
[๋ฐฑ์—”๋“œ]
  • ๋ฉ”์ธ์„œ๋ฒ„ ๊ตฌ์ถ•
    • ์„ธ์…˜์„ค์ •
    • express๋ฅผ ํ†ตํ•ด HTTPS ๊ตฌ์ถ•
  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ (์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ)
    • ๋ผ์šฐํŒ… ๋ฐ ๋กœ์ง ๊ตฌํ˜„
    • ํšŒ์›์ •๋ณด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋น„๊ต ํ›„ ์ถ”๊ฐ€
  • Oauth 2.0 Github ๋กœ๊ทธ์ธ
    • ๋ผ์šฐํŒ… ๋ฐ ๋กœ์ง ๊ตฌํ˜„
    • ๊นƒํ—ˆ๋ธŒ์—์„œ ํ† ํฐ๊ตํ™˜ ํ›„ ์œ ์ €์ •๋ณด ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก
    • ๊ฐ•์ œ ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„
  • ์œ ์ € ์ •๋ณด
    • ๋ผ์šฐํŒ… ๋ฐ ๋กœ์ง ๊ตฌํ˜„
    • ์„ธ์…˜ํ™•์ธ ํ›„ ์š”์ฒญ๋ฐ›์€ ์ •๋ณด ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก
  • ๋ฉ”์ธ์„œ๋ฒ„ ์ตœ์ข… ์ ๊ฒ€
    • API ๋ฌธ์„œ์™€ ๋น„๊ต
    • ํšจ์œจ์ ์ธ ๋กœ์ง์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง
[ํ”„๋ก ํŠธ์—”๋“œ]
  • Songs
    • ๋…ธ๋ž˜๋ชฉ๋ก UI ๊ตฌํ˜„ ๋ฐ css
  • Search
    • UI ์ˆ˜์ • (๋น„์œจ ์กฐ์ •)
  • ๊ฒŒ์ŠคํŠธ ๋กœ๊ทธ์ธ ๊ตฌํ˜„
    • UI ๋ฐ ์„œ๋ฒ„์— ์š”์ฒญ
  • Songlist
    • ๋…ธ๋ž˜๋ชฉ๋ก css ์ ์šฉ
  • ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…
    • ๋กœ๊ณ  ๋ฐ css
  • Home
    • ๋กœ๋”ฉํ™”๋ฉด ๊ตฌํ˜„
    • ๊ฐœ๋ฐœ์ž ์ •๋ณด ์ถ”๊ฐ€
  • Header
    • UI ์ˆ˜์ • (๋น„์œจ)

๊น€์œ ์ƒ (ํ”„๋ก ํŠธ์—”๋“œ) /
Advanced HA๋ฅผ ์น˜๋ฃจ๋ฉด์„œ sprint๋“ค์˜ ์—ฐ๊ด€์„ฑ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์•Œ๊ฒŒ๋˜์—ˆ๊ณ , ์ด๋ฒˆ First Project๋ฅผ ํ•˜๋ฉด์„œ ์ •๋ง ๋งŽ์ด ๋Š๊ผˆ๋‹ค.ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์™€ ๋ชฉ์—… ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์—์„œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ , ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…์ด ์ฒ˜์Œ์— ๊ฐ์„ ์žก๊ธฐ ํž˜๋“ค์—ˆ๊ณ  ์–ด์ƒ‰ํ–ˆ๋Š”๋ฐ ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…์„ ํ†ตํ•ด ์ต์ˆ™ํ•ด์ง€๋ฉด์„œ ์‹ค๋ ฅ์ด ์„ฑ์žฅํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋˜ ๋ฒ ์ด์Šค๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ๊ต‰์žฅํžˆ ํ• ์ผ์ด ๋งŽ๊ตฌ๋‚˜ ๋ผ๋Š”๊ฒƒ์„ ๋Š๊ผˆ๊ณ  CSR์˜ ํ•œ๊ณ„์™€ ๊ฐœ์„ ์ ์„ ๋Š๋ผ๊ฒŒ๋œ ์ˆœ๊ฐ„๋„ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Github๋ฅผ ํ†ตํ•œ ํ˜‘์—…์˜ ์ค‘์š”์„ฑ๊ณผ ํŒ€์›๋“ค์˜ ์กฐํ™”๋กœ์›€์ด ์ „์ฒด์ ์ธ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์‹ค์ œ๋กœ ๋Š๊ผˆ์œผ๋ฉฐ, ์žฅ์ ์ด ๋šœ๋ ทํ•œ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ํ•˜์—ฌ ์‹œ์•ผ์˜ ํญ์ด ๋„“์–ด์กŒ๋‹ค๋Š”๊ฒŒ ์ฒด๊ฐ์ด ๋œ ๋œป๊นŠ์€ ์ธ์ƒ ์ฒซ ํ”„๋กœ์ ํŠธ์˜€๋‹ค. ํ•จ๊ป˜ํ•œ ๋ชจ๋‘์—๊ฒŒ ๊ฐ์‚ฌํ•˜๋‹ค.

๊น€์œ ์ƒ์˜ Worklog ๐Ÿ“˜
  • Signup Page
    • axios ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— input value์— ๋”ฐ๋ฅธ ํšŒ์›๊ฐ€์ž… ์š”์ฒญ
    • ํšŒ์›๊ฐ€์ž… ์š”์ฒญํ›„ ์„œ๋ฒ„ ์‘๋‹ต์— ๋”ฐ๋ผ Login์ƒํƒœ ๋ณ€๊ฒฝ
    • history API ์ด์šฉํ•˜์—ฌ routing
    • css: ๊ธฐ๋ณธ UI๊ตฌํ˜„
  • Header Component
    • input๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์•„ ํ•ด๋‹นํ•˜๋Š” ๋ผ์šฐํŠธ๋กœ scrap์„œ๋ฒ„์— get ๊ฒ€์ƒ‰ ์š”์ฒญ
    • ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์„œ๋ฒ„์— POST์š”์ฒญ ๋ฐ state ๋ณ€๊ฒฝ
    • ๋งˆ์ดํŽ˜์ด์ง€, ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์— ๋”ฐ๋ฅธ routing
  • Search Page
    • ์œ ์ €๊ฐ€ ํ—ค๋”์—์„œ์˜ ์ž…๋ ฅํ•œ input value๋ฅผ ๋ฐ›์•„์™€ react-hooks๋ฅผ ํ†ตํ•ด state๊ด€๋ฆฌ
    • ์ด์ „/๋‹ค์Œ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ axios์ด์šฉํ•˜์—ฌ scrap์„œ๋ฒ„์— get์š”์ฒญ ๋ฐ ์‘๋‹ต ๊ฒฐ๊ณผ Song ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ
    • ์ด์ „/๋‹ค์Œ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • css: flex์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜
  • Addsong Component
    • ์„ ํƒ๋œ ๋…ธ๋ž˜๋ฅผ react-hooks๋ฅผ ์ด์šฉํ•ด state๋กœ ๊ด€๋ฆฌ
    • ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋…ธ๋ž˜์™€ ํ•จ๊ป˜ axios๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„์— POST์š”์ฒญ
    • ๋…ธ๋ž˜ ์ถ”๊ฐ€์‹œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • css: Addsong ์ปดํฌ๋„ŒํŠธ UI๊ตฌํ˜„
  • Song Component
    • Header์™€ Addsong ์ปดํฌ๋„ŒํŠธ์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์„ react-hooks๋ฅผ ์ด์šฉํ•ด state๋กœ ๊ด€๋ฆฌ
    • ์ฒดํฌ๋ฐ•์Šค์— ์ฒดํฌ๋œ value๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ SearchํŽ˜์ด์ง€์— ์ „๋‹ฌ
    • css: Song ์ปดํฌ๋„ŒํŠธ UI๊ตฌํ˜„
  • Mypage
    • css: flex์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜
    • css: flex์‚ฌ์šฉํ•˜์—ฌ userInfo ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜

์ž„ํ˜œ๋ฆผ (ํ’€์Šคํƒ) /
๋ฒŒ์จ ํผ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚˜๋‹ค๋‹ˆ.. ์ •๋ง ์—ด์‹ฌํžˆ ํ–ˆ๊ตฌ๋‚˜ ๋ผ๋Š” ๋ฟŒ๋“ฏํ•จ๊ณผ๊ณผ ๋” ์—ด์‹ฌํžˆ ํ• ๊ป„์ด๋ผ๋Š” ์•„์‰ฌ์›€์ด ๊ณต์กดํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ธฐํšํ•œ ์„œ๋น„์Šค๋ฅผ ๊ต์œก๊ธฐ๊ฐ„๋™์•ˆ ๋ฐฐ์šด ๊ธฐ์ˆ ์„ ๋ฒ ์ด์Šค๋กœ ๊ตฌํ˜„ํ•˜๋ ค ์‹œ๋„ํ–ˆ๊ณ  ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋“ค์„ ์Šค์Šค๋กœ ๊ตฌ๊ธ€๋ง ํ•˜์—ฌ ์ ์šฉ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ง๊ทธ๋Œ€๋กœ ์ฃผ๋ง๋„ ์—†์ด ๋ฐค์„ ์ƒˆ๋ฉฐ ์ฝ”๋”ฉ๋งŒ ํ•œ 2์ฃผ์˜€๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ ๋ณด๋ฉด ์•„์‰ฌ์šด ์ ๋“ค๋„ ๋„ˆ๋ฌด ๋งŽ๋‹ค. ํŠนํžˆ ์ฒ˜์Œ์— ๋นจ๋ฆฌ ์ฝ”๋”ฉ์„ ํ•˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์— ๋ถ€์กฑํ•˜๊ฒŒ ์˜๋…ผ์ด ๋œ ์ƒํƒœ๋กœ ๊ธฐํš๋‹จ๊ณ„๋ฅผ ์ง€๋‚˜์ณ๋ฒ„๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์ž๊พธ ์ถ”๊ฐ€์ ์œผ๋กœ ์˜๋…ผํ•ด์•ผํ•  ์‚ฌํ•ญ๋“ค์ด ๋ฐœ์ƒํ•˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์กฐ๊ธˆ ๋”๋ŽŒ์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ ๋“ค์„ ๊ธฐ๊ฐ„์˜ 1/3 ์ •๋„๋Š” ํšŒ์˜๋กœ ๋ณด๋ƒˆ๋‹ค ์ƒ๊ฐ์ด ๋“ค์ •๋„์˜ ์ง€์†์ ์ธ ํšŒ์˜๋ฅผ ํ†ตํ•ด ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋˜ํ•œ ํž˜๋“ค ๋•Œ ํ•ญ์ƒ ์ƒˆ๋ฒฝ์—๋„ Slack์— ๋“ค์–ด์™€ ์žˆ๋Š” ํŒ€์›๋“ค์˜ ๋ถˆ์„ ๋ณด๋ฉฐ ๋‚˜๋„ ๋” ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹ค ํ•˜๊ณ  ๋งˆ์Œ์„ ๋‹ค์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹คใ…Žใ…Ž ์ง€๋‚œ 2์ฃผ๋™์•ˆ ํž˜๋“ค์—ˆ์ง€๋งŒ ์†Œํ†ต์ด ์ž˜ ๋˜๊ณ  ์ฑ…์ž„๊ฐ ์žˆ๋Š” ๋™๋ฃŒ๋“ค์ด ์žˆ์–ด์„œ ์ •๋ง ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„์ด์—ˆ๋‹ค.

์ž„ํ˜œ๋ฆผ์˜ Worklog ๐Ÿ“˜
[๊ธฐํš]
  • ์„œ๋น„์Šค ๊ธฐํš
  • UI/UX ๋””์ž์ธ
[๋ฐฑ์—”๋“œ]
  • ํฌ๋กค๋ง ์„œ๋ฒ„
    • TJ ๋ฏธ๋””์–ด ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํฌ๋กค๋ง ๋ชจ๋“ˆ ๊ตฌํ˜„(axios, cheerio)
    • ํฌ๋กค๋ง ์„œ๋ฒ„ ๋ผ์šฐํŒ… ๋ฐ ๊ตฌ์ถ•
    • ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋กœ๊ทธ ๊ธฐ๋ก ์ƒ์„ฑ(windston)
    • Let's Encrypt๋ฅผ ์ด์šฉํ•œ https ์ธ์ฆ ๊ตฌํ˜„
  • ๋ฉ”์ธ์„œ๋ฒ„
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•
      • Database ์Šคํ‚ค๋งˆ ์ž‘์„ฑ
      • Sequelize ๋ชจ๋ธ ์ƒ์„ฑ ๋ฐ ๊ด€๊ณ„ ์„ค์ •
      • Sequelize ์‹œ๋“œ ์ƒ์„ฑ
    • ๋งˆ์ด๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ
      • ๋งˆ์ด๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ/์กฐํšŒ/์‚ญ์ œ ์š”์ฒญ ์ฒ˜๋ฆฌ
      • ๋งˆ์ด๋ฆฌ์ŠคํŠธ ๋‚ด์˜ ๋…ธ๋ž˜ ์ถ”๊ฐ€/์ œ๊ฑฐ ์š”์ฒญ ์ฒ˜๋ฆฌ
[ํ”„๋ก ํŠธ์—”๋“œ]
  • Home
    • ๋ฉ”์ธ ํ™ˆํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ž‘์„ฑ
  • Header
    • CSS ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„
    • ํ•„ํ„ฐ ์„ ํƒ ํˆดํŒ ๊ตฌํ˜„
  • Modal
    • Modal ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„
    • props์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ชจ๋‹ฌ ๋””์ž์ธ์ด ์ ์šฉ๋˜๋„๋ก ์ˆ˜์ •
  • Mypage
    • ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ ๋ฆฌํŒฉํ† ๋ง
    • ์„ ํƒ๋œ ๋ฆฌ์ŠคํŠธ Props ๊ด€๋ฆฌ

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

๋ฐฑ๊ด‘ํ˜ธ์˜ Worklog ๐Ÿ“˜
  • UI Design ๋ฌธ์„œ ์ž‘์„ฑ
    • ๋กœ๊ทธ์ธ, ํ™ˆ, ๊ฒ€์ƒ‰ํŽ˜์ด์ง€, ๋งˆ์ด ํŽ˜์ด์ง€์˜ ์™€์ด์–ด ํ”„๋ ˆ์ž„ ์ž‘์„ฑ
    • ๊ตฌํ˜„๋œ ์™€์ด์–ด ํ”„๋ ˆ์ž„์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ๋Œ€ํ•œ ๋‚ด์šฉ ์ •๋ฆฝ
  • GIthub Repository ๊ด€๋ฆฌ
    • Issues ์ƒ์„ฑ ๋ฐ Pull Requests, branch ๊ด€๋ฆฌ
    • Reademe.md, wiki ์ž‘์„ฑ
  • Deploy ํ™˜๊ฒฝ ๊ตฌ์ถ•
    • AWS EC2, RDS, S3๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ฐฐํฌ ํ™˜๊ฒฝ ์„ธํŒ…
    • Freenom, AWS Route53์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ ์„ค์ •์„ ํ•œ ํ›„, Lets Encrypt, AWS Cloud Front๋กœ HTTPS ์ ์šฉ
  • ๋ฐฑ์—”๋“œ, ํ”„๋ก ํŠธ์—”๋“œ ์ž‘์—… ํ™˜๊ฒฝ ์„ค์ •
    • Node.js, React, Dotenv, ESLint์˜ ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ์—ฐ๊ฒฐ ์ž‘์—… ์ง„ํ–‰
  • Login & Signup
    • Login, Signup UI ์ œ์ž‘
    • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ์‹œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    • Oauth 2.0 Github ๋กœ๊ทธ์ธ Authorization Code ๋ฐœ๊ธ‰ ๊ตฌํ˜„
  • Mypage
    • Mypage UI ๊ตฌํ˜„
    • Mylist ์ถ”๊ฐ€, ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ UI ์ œ์ž‘
    • Songlist ๋…ธ๋ž˜ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ UI ์ œ์ž‘
  • Songs
    • ์ฒดํฌ๋ฐ•์Šค UI ์ œ์ž‘

๐Ÿ’พ Tech Stack

Common

  • ESLint
  • Dotenv
  • Axios

Front

  • React
  • React Hooks
  • React Route Dom
  • Styled Components

Back

  • Node.js
  • MySQL
  • Sequelize
  • PM2
  • AWS(EC2, RDS, S3, Route53, CloudFront)
  • Cheerio

๐Ÿ›  Architecture

Frontend Flowchart

Flowchart-front

Main-Server Flowchart

Flowchart

Scrap-Server Flowchart

Flowchart-scrap

Project Detail

SNB Wiki