daseuls / we_record

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐ŸฆTeam WE-RECORD

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

  • ํ”„๋กœ์ ํŠธ ๊ฐœ์š”: WE-RECORD ํŒ€์˜ WERECORD ์‚ฌ์ดํŠธ ์ œ์ž‘

  • ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2021.06.08~ 2021.07.01


๐ŸŽฏ ๊ธฐํš ํฌ์ธํŠธ

  • ์œ„์ฝ”๋“œ์˜ ์ˆ˜๊ฐ•์ƒ์œผ๋กœ ์ƒํ™œํ•˜๋ฉด์„œ, ์ถœ์„ ๊ด€๋ จ ์‹œ์Šคํ…œ์˜ ๋ถ€์žฌ๋กœ ์ƒ๊ธฐ๋Š” ๋ถˆํŽธํ•จ ๊ฐœ์„ ์„ ๋ชฉํ‘œ๋กœ ํ•จ

  • ๋ฉ˜ํ†  ๋ฐ ํ•™์ƒ์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”, ์ถœ๊ฒฐ ์‹œ์Šคํ…œ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ฒŒ ๋จ

  • ์ˆ˜๊ฐ•์ƒ

    • ์œ„์ฝ”๋“œ ๋„์ฐฉ ํ›„ ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ ์‹œ๊ฐ„ ์ฒดํฌ
    • ๊ฐœ์ธ๋ณ„ ์ฃผ๊ฐ„ ์‹œ๊ฐ„ ๊ธฐ๋ก ๋ฐ ๋ˆ„์  ์‹œ๊ฐ„ ๊ธฐ๋ก ํ™•์ธ
    • ๊ธฐ์ˆ˜๋ณ„ ๊ธฐ๋ก ๋ฐ ์†ํ•œ ๊ธฐ์ˆ˜์˜ ์ถœ๊ฒฐ ์ƒํ™ฉ ํ™•์ธ ๊ฐ€๋Šฅ
  • ๋ฉ˜ํ† (admin)

    • ๊ธฐ์ˆ˜๋ณ„ ์ •๋ณด ๊ด€๋ฆฌ
    • ๊ธฐ์ˆ˜๋ณ„ ๊ธฐ๋ก ๋ฐ ์ถœ๊ฒฐ ์ƒํ™ฉ ํ™•์ธ ๊ฐ€๋Šฅ

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

Frontend

  • React function component, React Hooks ์‚ฌ์šฉ์„ ํ†ตํ•œ ์ปดํฌ๋„ŒํŠธ ๊ด€๋ฆฌ
  • styled-component ์‚ฌ์šฉ์„ ํ†ตํ•œ ์Šคํƒ€์ผ๋ง
  • ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๊ฒฝํ—˜ ์Œ“๊ธฐ
  • AWS ์‚ฌ์šฉ์„ ํ†ตํ•œ ์‚ฌ์ดํŠธ ๋ฐฐํฌ

Backend

  • django ์‚ฌ์šฉ์„ ํ†ตํ•œ DB ๊ด€๋ฆฌ
  • AWS ์‚ฌ์šฉ์„ ํ†ตํ•œ ์‚ฌ์ดํŠธ ๋ฐฐํฌ

๊ณตํ†ต

  • ๋ฐฑ์—”๋“œ-ํ”„๋ก ํŠธ์—”๋“œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ฐ ํ†ต์‹ ์œผ๋กœ ํ˜‘์—… ๊ฒฝํ—˜ ์Œ“๊ธฐ
  • ๋ฐฐํฌ ์ดํ›„ bug fix ๋ฐ ์ง€์†์ ์ธ ์œ ์ง€ ๋ฐ ๋ณด์ˆ˜

๐Ÿ‘ฅ ํŒ€์› ๊ตฌ์„ฑ

๐ŸŽฅ ์‹œ์—ฐ ์˜์ƒ

์—…๋กœ๋“œ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.


๐Ÿ‘จโ€๐Ÿ’ป ์ ์šฉ ๊ธฐ์ˆ 

  • Frontend: JavaScript, React, React-Router, React-hooks, styled-component, CRA
  • Backend: Python, Django, MYSQL
  • ๊ณตํ†ต tool: Trello, Git & Github, Slack, AWS

๐Ÿ–Š ์ฃผ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

  • ๋žœ๋”ฉ ํŽ˜์ด์ง€, ์†Œ์…œ ๋กœ๊ทธ์ธ
  • ๋ฉ”์ธ ํŽ˜์ด์ง€
  • ๋งˆ์ด ํŽ˜์ด์ง€(์ˆ˜๊ฐ•์ƒ)
  • ๊ธฐ์ˆ˜๋ณ„ ํŽ˜์ด์ง€
  • ๋ฉ˜ํ† (Admin) ํŽ˜์ด์ง€

๐Ÿ’ป ํŒ€์›๋ณ„ ์ƒ์„ธ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

Frontend

  • ๊ณตํ†ต: styled-component ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€, ์ปดํฌ๋„ŒํŠธ ๋ฐ ๋‹ด๋‹น ํŽ˜์ด์ง€๋ณ„ ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„

๊น€์ˆ˜์—ฐ

  • ๋””์ž์ธ

    • Figma ์‚ฌ์šฉํ•˜์—ฌ ๋””์ž์ธ ์ดˆ์•ˆ ๊ตฌํ˜„(ver.1)
  • ๊ธฐ์ˆ˜ ํŽ˜์ด์ง€

    • fetch(GET)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๊ฐ•์ƒ์ด ์†ํ•œ ๊ธฐ์ˆ˜๋ณ„ ์‹œ๊ฐ„ ์ •๋ณด ํ‘œ์‹œ ๋ฐ ์ˆ˜๊ฐ•์ƒ ์ ‘์† ํ˜„ํ™ฉ ์ •๋ณด ํ‘œ์‹œ
    • Slick ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์ˆ˜ ๋ฉค๋ฒ„ ๋ชฉ๋ก ์Šฌ๋ผ์ด๋” ๊ตฌํ˜„
    • ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„
  • ๋งˆ์ด ํŽ˜์ด์ง€

    • fetch(PATCH, DELETE)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๊ฐ•์ƒ์˜ ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ • ๋ฐ ํƒˆํ‡ด ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๋ฉ”์ธ ํŽ˜์ด์ง€

    • day.js๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐ„ ์ •๋ณด ํ‘œ์‹œ
    • fetch(POST, GET)์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๋ถ€ ์‹œ๊ฐ„ ์ฒดํฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„(start, restart, pause, stop)
  • ๊ณต์šฉ Modal ์ปดํฌ๋„ŒํŠธ

    • ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  Modal ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

์ด๋‹ค์Šฌ

  • ๋””์ž์ธ

    • ๊ธฐํš ๋””์ž์ธ ์ดˆ์•ˆ ์ˆ˜๊ธฐ ์ž‘์„ฑ(ver.0)
    • ๋งˆ์ด ํŽ˜์ด์ง€, ๋ฉ˜ํ†  ํŽ˜์ด์ง€, ๊ธฐ์ˆ˜ ํŽ˜์ด์ง€ ๋ฐ Modal ์„ธ๋ถ€ ๋””์ž์ธ ๊ตฌํ˜„
  • ๋žœ๋”ฉ ํŽ˜์ด์ง€

    • ๋žœ๋”ฉ ํŽ˜์ด์ง€ ๊ตฌํ˜„ ๋ฐ WERECORD ์‚ฌ์ดํŠธ ๋กœ๊ณ  ์ œ์ž‘
  • ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ

    • ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ API ์‚ฌ์šฉ์œผ๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๋ฐ WE-RECORD ์‚ฌ์ดํŠธ ์ „์šฉ JWT ๋ฐœํ–‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ์‚ฌ์ดํŠธ ์ด์šฉ์„ ์œ„ํ•œ ์ถ”๊ฐ€ ์ •๋ณด ์ž…๋ ฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์†Œ์…œ ๋กœ๊ทธ์ธ ํ›„ ํšŒ์› ์ถ”๊ฐ€ ์ •๋ณด ์ž…๋ ฅ ๊ธฐ๋Šฅ

    • userํƒ€์ž…(๋ฉ˜ํ† , ํ•™์ƒ)์— ๋Œ€ํ•œ ์กฐ๊ฑด๋ถ€ ์ถ”๊ฐ€ ์ž…๋ ฅ ๋ชจ๋‹ฌ์ฐฝ ๊ธฐ๋Šฅ ๋ฐ ํŽ˜์ด์ง€ ์ด๋™ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๋ฐฐํฌ

    • AWS S3 ๋ฐ git Action์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™๋ฐฐํฌ

์ „์šฉ๋ฏผ

  • ํ”„๋กœ์ ํŠธ CRA ์ดˆ๊ธฐ์„ธํŒ…

  • Nav

    • ํšŒ์›(ํ•™์ƒ, ๋ฉ˜ํ† )๋ณ„ ๋ฒ„ํŠผ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง (ํ•™์ƒ: ๋งˆ์ดํŽ˜์ด์ง€, ๊ธฐ์ˆ˜ํŽ˜์ด์ง€, ๋ฉ”์ธํŽ˜์ด์ง€, ๋ฉ˜ํ† : ๋ฉ˜ํ†  ํŽ˜์ด์ง€, ๊ธฐ์ˆ˜ ํŽ˜์ด์ง€)
    • ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„
  • ๋งˆ์ด ํŽ˜์ด์ง€

    • fetch(GET)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๊ฐ•์ƒ ๊ฐœ์ธ๋ณ„ ์‹œ๊ฐ„ ์ •๋ณด ํ‘œ์‹œ
    • highchart.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์œผ๋กœ ํ•ด๋‹น ๊ธฐ์ˆ˜์˜ ์ˆ˜๊ฐ•์ƒ๋ณ„ ์ฃผ๊ฐ„ ์‹œ๊ฐ„ ๊ธฐ๋ก BarChart ๊ตฌํ˜„, ์ „์ฒด ๋ˆ„์  ์‹œ๊ฐ„ LineChart ๊ตฌํ˜„
    • ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„
  • ๋ฉ˜ํ† (Admin) ํŽ˜์ด์ง€

    • path parameter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์ˆ˜ ํŽ˜์ด์ง€์™€์˜ ๋™์  ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๊ธฐ์ˆ˜๋ณ„ ์ •๋ณด ๋ชฉ๋ก carousel ์Šฌ๋ผ์ด๋” ๊ตฌํ˜„ (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ X)
    • fetch(PATCH, DELETE)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ˜ํ†  ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ • ๋ฐ ํƒˆํ‡ด ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • fetch(POST, PATCH, DELETE)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์ˆ˜ ์ •๋ณด CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„
  • ๊ณต์šฉ Button ์ปดํฌ๋„ŒํŠธ

    • ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  Button ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„


Backend

์–‘๋ฏธํ™”

  • ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…

    • Django๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์„ธํŒ…
  • ๋ชจ๋ธ๋ง

    • AQuery๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐํš์— ๋งž์ถ˜ ๋ชจ๋ธ๋ง ์™„๋ฃŒ
  • ๊ธฐ๋ก ํ™•์ธ

    • ์‚ฌ์šฉ์ž์˜ ๋งˆ์ง€๋ง‰ ๊ธฐ๋ก์„ ํ™•์ธํ•˜์—ฌ ์ถœ๊ทผ๊ณผ ํ‡ด๊ทผ์ด ๋ชจ๋‘ ๊ธฐ๋ก ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
    • ํ‡ด๊ทผ ๊ธฐ๋ก์„ ๋†“์ณค์„ ๊ฒฝ์šฐ, ๋‹ค์Œ ์ ‘์† ์‹œ์— ํ‡ด๊ทผ ๊ธฐ๋ก ๊ฐ€๋Šฅ
  • ์ถœ๊ทผ & ํ‡ด๊ทผ ๊ธฐ๋ก

    • ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ •ํ•œ ์•„์ดํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๋•Œ์—๋งŒ ๊ธฐ๋ก ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •
    • ํ‡ด๊ทผ ๊ธฐ๋ก์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ, ๋žœ๋ค์œผ๋กœ ๋ช…์–ธ์„ ์ „์†ก
  • ์ˆ˜๊ฐ•์ƒ ์ •๋ณด ์ „์†ก

    • ํ† ํฐ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌ ๋ฐ›์•„ ์ด์šฉ
    • ์‚ฌ์šฉ์ž์˜ ํƒ€์ž…์ด ๋ฉ˜ํ† ์ธ ๊ฒฝ์šฐ ์ ‘๊ทผ ๋ถˆ๊ฐ€
    • ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ์ฃผ๊ฐ„ ๊ธฐ๋ก, ์ด ๋ˆ„์  ๊ธฐ๋ก, ํ‰๊ท  ์ถœ๊ทผ & ํ‡ด๊ทผ ์‹œ๊ฐ„, ๊ทธ๋ฆฌ๊ณ  >wecode D-day๋ฅผ ์ „์†ก
  • ๊ธฐ์ˆ˜ ๋ฆฌ์ŠคํŠธ ์ „์†ก

    • ํ† ํฐ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌ ๋ฐ›์•„ ์ด์šฉ
    • ์‚ฌ์šฉ์ž์˜ ํƒ€์ž…์ด ์ˆ˜๊ฐ•์ƒ์ธ ๊ฒฝ์šฐ ์ ‘๊ทผ ๋ถˆ๊ฐ€
    • ์ ‘์† ์‹œ๊ฐ„ ๊ธฐ์ค€, ์ถœ๊ฒฐ ํ˜„ํ™ฉ์„ ํฌํ•จํ•˜์—ฌ ์ „์ฒด ๊ธฐ์ˆ˜์˜ ์ •๋ณด๋ฅผ ์ „์†ก
  • ๊ธฐ์ˆ˜ ์ •๋ณด ์ „์†ก

    • ํ† ํฐ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌ ๋ฐ›์•„ ์ด์šฉ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๊ฐ•์ƒ์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ธฐ์ˆ˜์˜ ์ •๋ณด๋งŒ ์—ด๋žŒ ๊ฐ€๋Šฅ
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ˜ํ† ์ธ ๊ฒฝ์šฐ ์ „์ฒด ๊ธฐ์ˆ˜์˜ ์ •๋ณด ์—ด๋žŒ ๊ฐ€๋Šฅ
    • ์ ‘์†์ผ ๊ธฐ์ค€, ์ „์ฒด ๊ธฐ์ˆ˜ ์ค‘ ๋ˆ„์  ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๋†’์€ ๊ธฐ์ˆ˜์˜ ์ •๋ณด๋ฅผ ์ „์†ก
    • ์ ‘์†์ผ ๊ธฐ์ค€, ์ง€๋‚œ ์ฃผ์˜ ๋ˆ„์  ์‹œ๊ฐ„์ด ๋†’์€ ์ˆœ์œผ๋กœ ์„ธ ๋ช…์˜ ์ˆ˜๊ฐ•์ƒ ์ •๋ณด๋ฅผ ์ „์†ก
    • ํ•ด๋‹น ๊ธฐ์ˆ˜์— ๋“ฑ๋ก๋œ ๋‹ด์ž„ ๋ฉ˜ํ†  & ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ”„๋กœํ•„๊ณผ (์ ‘์† ์‹œ๊ฐ„ ๊ธฐ์ค€) ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ์ถœ๊ฒฐ ํ˜„ํ™ฉ์„ ์ „์†ก
  • ๊ธฐ์ˆ˜ ์ •๋ณด ๊ด€๋ฆฌ

    • ์ƒˆ๋กœ์šด ๊ธฐ์ˆ˜ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ธฐ์ˆ˜ ์ •๋ณด๋ฅผ ์ˆ˜์ • ๋˜๋Š” ์‚ญ์ œ ๊ฐ€๋Šฅ
  • DB ๊ด€๋ฆฌ

    • csv ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ Local์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“๊ณ  ํ™•์ธํ•œ ๋’ค, sql ํŒŒ์ผ์„ ํ†ตํ•ด AWS์˜ RDS๋ฅผ ๊ด€๋ฆฌ
  • ๋ฐฐํฌ

    • EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉ
    • Docker Image๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌ

์ตœ๋Œ€ํ™˜

  • ์†Œ์…œ๋กœ๊ทธ์ธ

    • ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๊ตฌ๊ธ€ ์ด๋ฉ”์ผ ์ฃผ์†Œ ๊ธฐ์ค€์œผ๋กœ ๋ฉ˜ํ† ,์ˆ˜๊ฐ•์ƒ ๊ตฌ๋ถ„
    • ์—‘์„ธ์Šค ํ† ํฐ ๋ฐ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํšŒ์›์ •๋ณด์ˆ˜์ •

    • boto3์„ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์ง„์„ s3์—์ €์žฅ
    • ์‚ฌ์ง„ ์‚ญ์ œ๋‚˜ ์ˆ˜์ •์‹œ s3ํŒŒ์ผ๋„ ํ•จ๊ป˜ ์‚ญ์ œ(hard delete)
    • ํšŒ์›ํƒˆํ‡ด ๊ธฐ๋Šฅ ๊ตฌํ˜„

About


Languages

Language:JavaScript 99.3%Language:HTML 0.7%