FE_ Story&Task - kyupid/issue-tracker GitHub Wiki

๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ฐพ๊ธฐ!!

  1. ์ด์Šˆ ๋ชฉ๋ก ์ด์Šˆ ์ž‘์„ฑ ๋ฒ„ํŠผ: matiral ui ๋ฒ„ํŠผ ํ•„ํ„ฐ ์˜†์— filled input : material ui filled ์ธํ’‹ ๋ ˆ์ด๋ธ” ์ปดํฌ๋„ŒํŠธ {color , label_name} - ์ด ๋ฐ์ดํ„ฐ๋Š” ์Œ์œผ๋กœ ์„œ๋ฒ„์— ์ €์žฅ. (+ ๋ผ๋ฒจ ์•„์ด๋””?)

  2. ์ด์Šˆ ์ž‘์„ฑ

    • ๋‹ด๋‹น์ž, ๋ ˆ์ด๋ธ”, ๋งˆ์ผ์Šคํ†ค ์ด๋ ‡๊ฒŒ ๋น„์Šทํ•œ ๊ฒƒ๋“ค - div ๋งŒ๋“ค์–ด๋‘๊ณ  styled.(๋งŒ๋“ div)``
  3. ์ด์Šˆ ์ƒ์„ธ

    • ๋‹ด๋‹น์ž ํ”„๋กœํ•„ ์‚ฌ์ง„ ๋ฐ ์•„์ด๋””

Material UI ์—์„œ ์“ธ๋งŒํ•œ ๊ฒƒ๋“ค

๋ฉ”๋‰ด - ํ•„ํ„ฐ ํŒ์—…์— ์ ์šฉ ๊ฐ€๋Šฅํ•  ๋“ฏ ์ฒดํฌ ๋ฐ•์Šค ๊ฐ์ข… ๋ฒ„ํŠผ๋ฅ˜

๋กœ๊ทธ์ธ

routing : / ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ url = /login

  1. ๋กœ๊ทธ์ธ์€ ๋ฐ˜๋“œ์‹œ ๊นƒํ—™ ์˜ค์˜ค์Šค ์ง€์›ํ•ด์•ผํ•œ๋‹ค.
  2. ์ธ์ฆํ›„์—๋Š” ์ด์Šˆ ๋ชฉ๋ก์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
  3. ์ด๋ฏธ ๋ฐœํ–‰ํ•œ oauth ํ† ํฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํ™”๋ฉด ์ƒ๋žต (?)
  4. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€(/login) ์—์„œ jwt ํ† ํฐ ๋ฐ›๊ธฐ.
  5. jwt ํ† ํฐ์„ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ ํ›„ /issues ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ.
  6. ์ฒซ ํŽ˜์ด์ง€(/) ๋ Œ๋” ๋˜๊ธฐ ์ „์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ํ† ํฐ์„ ์„œ๋ฒ„์— ๋ณด๋ƒ„ . ์„œ๋ฒ„์—์„œ ์œ ์ €๋ฅผ ์ธ์ฆํ›„ /issues ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ.
  7. ์ €์žฅ์ด ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ.

์ด์Šˆ๋ชฉ๋ก

routing : /issues

  1. ๋ Œ๋”๋ง ์ „์— api ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. => ์ด์Šˆ ๋ชฉ๋ก , ๋ ˆ์ด๋ธ” ๊ฐฏ์ˆ˜ , ๋งˆ์ผ์Šคํ†ค ๊ฐฏ์ˆ˜
  2. issueList component ๋งŒ๋“ค๊ธฐ {isOpen: boolean, ์ด์Šˆ ์ œ๋ชฉ:string , ๋ผ๋ฒจ ๋ฆฌ์ŠคํŠธ[] , ์ด์Šˆ ๋ฒˆํ˜ธ : number , ์ž‘์„ฑ์ž: {name: string , profileImg: string } , ํƒ€์ž„ ์Šคํƒฌํ”„ ์ •๋ณด : number , ๋งˆ์ผ์Šคํ†ค : string }

https://www.npmjs.com/package/react-time-ago ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์“ฐ๋Š”๊ฒŒ ์ข‹์€์ง€ ์ถ”๊ฐ€๋กœ ๋…ผ์˜

๋ผ๋ฒจ ๋ฆฌ์ŠคํŠธ[ { color : , title : }]

  1. ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌํ•  ๊ฒƒ๋“ค-

    • ๋ ˆ์ด๋ธ”(/labels)
    • ๋งˆ์ผ์Šคํ†ค(/milestones)
    • ์ด์Šˆ ์ƒ์„ธ ํ™”๋ฉด(/issues/#์ด์Šˆ๋ฒˆํ˜ธ)
    • ์ƒˆ ์ด์Šˆ ์ž‘์„ฑ(/new-issue)
  2. ๋ชฉ๋ก์—๋Š” ์˜คํ”ˆ์ƒํƒœ์˜ ์ด์Šˆ๋งŒ ๋ณด์—ฌ์ค€๋‹ค (๊ธฐ๋ณธ)

  3. ๋ชฉ๋ก์—์„œ ์—ด๋ฆฐ์ด์Šˆ ์™€ ๋‹ซํžŒ ์ด์Šˆ์˜ ๊ฐฏ์ˆ˜์™€ ๋ชฉ๋ก์ด ๋ณด์—ฌ์ง„๋‹ค.

์ด์Šˆ ๋ชฉ๋ก / ํ•„ํ„ฐ

  1. ํ•„ํ„ฐ๋ฐ” => Material UI Menu ์ ์šฉ
  2. input => Material UI Text Field ์ ์šฉ
  3. is:open => open => ์ƒํƒœ๊ฐ’์ด open ์ธ ์ด์Šˆ๋“ค filter
  4. ๋ฉ”๋‰ด ์—ด๋ฆฐ ์ด์Šˆ ํด๋ฆญ => input value , is:open

์ด์Šˆ ๋ชฉ๋ก / ๋‹ค์ค‘ ์„ ํƒ

  1. ์ฒดํฌ ๋ฐ•์Šค ํ•˜๋‚˜๋ผ๋„ ๋ˆŒ๋ฆฌ๋ฉด ์˜ค๋ฅธ์ชฝ ์œ„ ๋ฉ”๋‰ดํƒญ "์ƒํƒœ ์ˆ˜์ •" ์œผ๋กœ ๋ฐ”๋€œ.
  2. ์ฒดํฌ ๋ฐ•์Šค => Material UI Check Box ์ ์šฉ onChange ํ•จ์ˆ˜ ์‚ฌ์šฉ

์ƒˆ๋กœ์šด ์ด์Šˆ์ž‘์„ฑ

routing : /new-issue ์ผ๋‹จ ๋‹ด๋‹น์ž์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ์ œ์™ธํ•จ.

  1. ๋ฒ„ํŠผ ํด๋ฆญํ–ˆ์„๋•Œ ์„œ๋ฒ„ api ์š”์ฒญ ํ˜„์žฌ ๋ผ๋ฒจ ๋ฆฌ์ŠคํŠธ, ๋งˆ์ผ์Šคํ†ค ๋ฆฌ์ŠคํŠธ
  2. ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” => ๋งˆํฌ๋‹ค์šด (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ์ผ๋‹จ์“ฐ์ž.
  3. ํŒŒ์ผ์ฒจ๋ถ€ ์˜คํ†ฐ์ด ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค๊ณ ํ•œ๋‹ค.- ๋‚˜์ค‘์— ์ƒ๊ฐํ•˜๊ธฐ
  4. ์™„๋ฃŒ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ
    • ์„œ๋ฒ„์— post ์š”์ฒญ
      • (๋‹ด๋‹น์ž ์ผ๋‹จ ์ œ์™ธ), ๋ ˆ์ด๋ธ”, ๋งˆ์ผ์Šคํ†ค, ์ œ๋ชฉ, ์ฝ”๋ฉ˜ํŠธ ๋‹ค ์ƒํƒœ๋กœ ๊ด€๋ฆฌํ•ด์„œ post ์š”์ฒญ์— ๋„ฃ์–ด ๋ณด๋‚ธ๋‹ค.
    • ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ - ์ด์Šˆ ์ƒ์„ธ ํ™”๋ฉด(/issues/#์ด์Šˆ๋ฒˆํ˜ธ)

์ด์Šˆ ์ƒ์„ธ

routing : issues/#์ด์Šˆ๋ฒˆํ˜ธ

  1. api ๋ฐฑ์—”๋“œ์™€ ์ด์•ผ๊ธฐ ํ•„์š”.

  2. ์ด์Šˆ ๋‹ซ๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ,

    • ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— post ๋ณด๋ƒ„
    • ์—ด๋ฆฐ์ด์Šˆ ๋ ˆ์ด๋ธ”์ด ๋‹ซํžŒ์ด์Šˆ ๋ ˆ์ด๋ธ”๋กœ ๋ฐ”๋€œ
    • ์—ด๋ฆผ ์ƒํƒœ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ด์Šˆ ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์ด ์ด์Šˆ ์—ด๋ฆผ ๋ฒ„ํŠผ์œผ๋กœ ๋ฐ”๋€œ
  3. ์ด์Šˆ ์—ด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ,

    • ๋ฐ˜๋Œ€๋กœ ๋™์ž‘
  4. ์ฝ”๋ฉ˜ํŠธ ์ž‘์„ฑ์„ ๋ˆ„๋ฅด๋ฉด ,

    • ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— post ๋ณด๋ƒ„
    • ๋ฆฌ๋ Œ๋”๋ง
  5. ํŒŒ์ผ์ฒจ๋ถ€ - ๋‚˜์ค‘์— ์ƒ๊ฐํ•˜๊ธฐ

  6. ์ด์Šˆ ์‚ญ์ œ - ๋‚˜์ค‘์— ์ƒ๊ฐ (๊ธฐํš์„œ์— ์—†์Œ)

๋ ˆ์ด๋ธ” ๋ชฉ๋ก

routing : /labels

  1. ๋ฐ•์Šค ๋ชจ์–‘ (li)๋Š” ์ด์Šˆ ๋ชฉ๋ก๊ณผ ๊ณตํ†ต์œผ๋กœ
  2. labelList{ labeltitle:string ,color:string, detail:string}
  3. Creatinglabel => Label name . description , color ์ž…๋ ฅ
  4. ํŽธ์ง‘๊ณผ ์‚ญ์ œ ๋ฒ„ํŠผ - ์ž์„ธํ•œ ๊ฑด ๋‚˜์ค‘์— ์ƒ๊ฐ

๋งˆ์ผ์Šคํ†ค

routing : /milestones

  1. ๋ฐ•์Šค ๋ชจ์–‘ (li)๋Š” ์ด์Šˆ ๋ชฉ๋ก๊ณผ ๊ณตํ†ต์œผ๋กœ
  2. milestoneList{ milestoneTitle: string, dueDay: number, detail: string, issueCount: {opened: number, closed: number}}
  3. ๋‚˜๋จธ์ง€ ๋‚˜์ค‘์— ์ƒ๊ฐ