Skip to content

๐Ÿ› ๏ธ ๋ฉ”์ธํŽ˜์ด์ง€ ๊ด€๋ จ ์นธ๋ฐ˜ ๋ณด๋“œ ๊ตฌํ˜„ ์š”์ฒญย #24

@revy7289

Description

@revy7289

๐Ÿ“Œ ํ•ต์‹ฌ ์š”๊ตฌ ์‚ฌํ•ญ 1

๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์นธ๋ฐ˜์„ ํ†ตํ•ด ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ๋ฅผ ์ƒ์„ฑ, ํŽธ์ง‘ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Github API๋ฅผ ํ†ตํ•ด์„œ issue๋ฅผ fetchํ•˜์—ฌ ๊ฐ ์นธ๋ฐ˜์— ๋ฟŒ๋ ค์ง€๊ณ  DB์™€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—ฐ๋™๋˜์–ด ๋‚ด ํ™”๋ฉด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์œ ์ €๋“ค์—๊ฒŒ๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŽธ์ง‘ํ•œ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€๋ณ„๋กœ, ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ์—ฐ๋™ํ•ด์•ผ ํ•  api์™€ data๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ๊ฐ์˜ data๊ฐ€ ์œ ์ง€๋˜๊ฑฐ๋‚˜, ์„ ํƒ๋˜๋Š” ์‹œ์ ์— fetch๋˜์–ด ์‚ฌ์šฉ์„ฑ์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ€๋Šฅํ•˜๋ฉด ํ•„ํ„ฐ์—์„œ ์„ ํƒํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์•„์ฝ”๋””์–ธ์ด ์—ด๋ฆฌ๋ฉด์„œ fetch๋˜๋Š” ๋กœ์ง์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์นธ๋ฐ˜์˜ ์นด๋“œUI๋ฅผ ํ†ตํ•ด ๊ฐ ์ด์Šˆ๋ฅผ Drag&Drop์œผ๋กœ ์˜ฎ๊ฒจ, ์ž‘์—… ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›  ์ž‘์—… ์ƒ์„ธ ๋‚ด์šฉ

์ฒดํฌ๋ฐ•์Šค๋Š” ์šฐ์„ ๋„๊ฐ€ ๋†’์•„ ๋ณด์ด๋Š” ์ž‘์—…์œผ๋กœ ๊ฐ€๊ธ‰์  ๋จผ์ € ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ถˆ๋ฆฟ์ผ€์ด์Šค๋Š” ๊ทธ ๋‹ค์Œ ์ž‘์—…์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ง€์ ์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์œ ์—ฐํ•˜๊ฒŒ ํŒ๋‹จํ•˜์—ฌ ๋ถˆ๋ฆฟ์ผ€์ด์Šค ๋จผ์ € ์ž‘์—…ํ•ด์ฃผ์…”๋„ ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค.

UI/UX

๋ฐ˜๋ณต๋˜๋Š” UIํŒจํ„ด์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์žฌ์‚ฌ์šฉ์„ฑ์„ ์ตœ๋Œ€ํ•œ ์ƒ๊ฐํ•˜์—ฌ ์ž‘์—…ํ•ด ๋ด…์‹œ๋‹ค.

  • ์šฐ์„  ์ด์Šˆ ์—ฐ๋™์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ , ๊ฐ ์นธ๋ฐ˜์˜ ์ž‘์—… ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํฐ ์นด๋“œํ˜• UI๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋กœ ์ž‘์—… ์ƒํƒœ์— ๋”ฐ๋ผ bg์™€ label์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” props ๊ตฌ์กฐ๋ฅผ ๊ณ ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • db์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ Github issue๋ฅผ ์นธ๋ฐ˜ ์นด๋“œ ๋‚ด๋ถ€์— ๋ฟŒ๋ ค์ค๋‹ˆ๋‹ค.

    • ๊ฐ๊ฐ์˜ ๋‚ด๋ถ€ ์นด๋“œ์—์„œ๋Š” issue์™€ ์—ฐ๊ฒฐ๋œ ๋…๋ฆฝ๋œ data๊ฐ€ ์ „๋‹ฌ๋˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ „์ฒด ์ž‘์—… ์ƒํƒœ๋ฅผ ํฌํ•จํ•˜๋Š” ํŒ€ ๋‹จ์œ„์˜ Accordion UI(wrapper)๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ ํŒ€ ๋ณ„๋กœ ๋ณ„๊ฐœ์˜ ๋ฐ์ดํ„ฐ[ ]๊ฐ€ ๊ด€๋ฆฌ ๋  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋„๋ฅผ ๊ณ ์•ˆํ•ฉ๋‹ˆ๋‹ค.
    • UI๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋„๋ก max-height๋ฅผ ํ†ตํ•ด ์ œํ•œ์„ ๋‘๊ณ , ์Šคํฌ๋กค์„ ํ†ตํ•ด ์‹œ์•ผ๋ฅผ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.
      • ์ „์ฒด ํŒ€์„ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋‹จ์œ„์˜ ํฐ Collapsible UI(wrapper)๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
  • Drag&Drop์œผ๋กœ ์นธ๋ฐ˜ ๋‚ด๋ถ€์˜ ์ด์Šˆ๋“ค์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ ˆ์ด์•„์›ƒ์ด ํํŠธ๋Ÿฌ์ง€์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

FEATURE

Drag&Drop์œผ๋กœ UI์˜ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ DB์—๋„ ๋ฐ˜์˜๋˜์–ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Drag&Drop์„ ํ†ตํ•ด ์นธ๋ฐ˜์— ์—ฐ๋™๋œ ์ด์Šˆ์˜ ์ž‘์—… ์ƒํƒœ๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒํƒœ๋ฅผ ์˜ฎ๊ธฐ๋ฉด์„œ, ๋‹ค๋ฅธ ํƒœ์Šคํฌ์˜ ํ•˜์œ„ ์†์„ฑ์œผ๋กœ์จ ๊ฒฐํ•ฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ƒ์œ„ to ํ•˜์œ„)
  • ํƒœ์Šคํฌ์˜ ํ•˜์œ„ ์†์„ฑ์„ ๊บผ๋‚ด์™€์„œ ์ƒ๋‹จ์˜ ๋ฐ”๋‹ฅ์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (ํ•˜์œ„ to ์ƒ์œ„)
  • ๊ธฐ์กด์— ์ƒ-ํ•˜์œ„๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํƒœ์Šคํฌ๋ฅผ ๋‹ค๋ฅธ ์ƒ์œ„์˜ ํ•˜์œ„ ์†์„ฑ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (ํ•˜์œ„ to ํ•˜์œ„)
    • ๊ฒฐํ•ฉํ•  ์ˆ˜ ์—†๋Š” ํƒœ์Šคํฌ์˜ ๊ฒฝ์šฐ, ํ† ์ŠคํŠธUI๋ฅผ ํ†ตํ•ด ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
- ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ํƒœ์Šคํฌ ์—ฐ๊ฒฐ
- ์ƒ์œ„ ํƒœ์Šคํฌ: ์—ฐ๊ฒฐ๋œ ํ•˜์œ„ ํƒœ์Šคํฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ํƒœ์Šคํฌ
- ํ•˜์œ„ ํƒœ์Šคํฌ: ์—ฐ๊ฒฐ๋œ ์ƒ์œ„ ํƒœ์Šคํฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ํƒœ์Šคํฌ
- ๋ฏธ์—ฐ๊ฒฐ ํƒœ์Šคํฌ: ์ƒ์œ„ ๋˜๋Š” ํ•˜์œ„ ํƒœ์Šคํฌ์™€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ํƒœ์Šคํฌ(default)


์ƒ์œ„ ํƒœ์Šคํฌ๋ฅผ ๋‹ค๋ฅธ ํƒœ์Šคํฌ(์ƒ์œ„, ํ•˜์œ„)์— ๋“œ๋กญ ์‹œ
- ์ƒ์œ„ ํƒœ์Šคํฌ๋Š” ๋‹ค๋ฅธ ํƒœ์Šคํฌ์˜ ํ•˜์œ„ ํƒœ์Šคํฌ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
- ๋“œ๋กญ ๋™์ž‘์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฏธ์—ฐ๊ฒฐ ํƒœ์Šคํฌ๋ฅผ ์ƒ์œ„ ํƒœ์Šคํฌ์— ๋“œ๋กญ ์‹œ
- ๋ฏธ์—ฐ๊ฒฐ ํƒœ์Šคํฌ๊ฐ€ ๋“œ๋กญ๋œ ์œ„์น˜์˜ ํƒœ์Šคํฌ์˜ ํ•˜์œ„ ํƒœ์Šคํฌ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
๋ฏธ์—ฐ๊ฒฐ ํƒœ์Šคํฌ๋ฅผ ํ•˜์œ„ ํƒœ์Šคํฌ์— ๋“œ๋กญ ์‹œ
- ํ•˜์œ„ ํƒœ์Šคํฌ๋Š” ๋‹ค๋ฅธ ํƒœ์Šคํฌ์˜ ์ƒ์œ„ ํƒœ์Šคํฌ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
- ๋“œ๋กญ ๋™์ž‘์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•˜์œ„ ํƒœ์Šคํฌ๋ฅผ ๋‹ค๋ฅธ ์ƒ์œ„ ํƒœ์Šคํฌ์— ๋“œ๋กญ ์‹œ
- ๊ธฐ์กด ์—ฐ๊ฒฐ๋œ ์ƒ์œ„ ํƒœ์Šคํฌ์™€์˜ ์—ฐ๊ฒฐ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋“œ๋กญ๋œ ์œ„์น˜์˜ ์ƒ์œ„ ํƒœ์Šคํฌ์˜ ํ•˜์œ„ ํƒœ์Šคํฌ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
ํ•˜์œ„ ํƒœ์Šคํฌ๋ฅผ ๋‹ค๋ฅธ ํ•˜์œ„ ํƒœ์Šคํฌ์— ๋“œ๋กญ ์‹œ
- ํ•˜์œ„ ํƒœ์Šคํฌ๋Š” ๋‹ค๋ฅธ ํƒœ์Šคํฌ์˜ ์ƒ์œ„ ํƒœ์Šคํฌ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
- ๋“œ๋กญ ๋™์ž‘์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์นธ๋ฐ˜์˜ [+]๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ์ž‘์—… ์ƒํƒœ์— ์ƒˆ๋กœ์šด ํƒœ์Šคํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ชจ๋‹ฌ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ ์นธ๋ฐ˜์˜ ํƒœ์Šคํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด, ํ•ด๋‹นํ•˜๋Š” ์ •๋ณด๋ฅผ ๋‹ด์•„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‹ฌ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • ์นธ๋ฐ˜์˜ pin์„ ํด๋ฆญํ•˜๋ฉด ์นด๋“œ์˜ ์ƒ๋‹จ์— ๊ณ ์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Accordion UI๋ฅผ ํ†ตํ•ด ํŒ€๋ณ„, ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ์ ‘์—ˆ๋‹ค ํŽผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    (๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅํ•œ hooks๋ฉด ๋ฒ ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.)

๐Ÿ”— ์ฐธ๊ณ ํ• ๋งŒํ•œ ์ž๋ฃŒ (์„ ํƒ)

๊ด€๋ จ ๋ฌธ์„œ, ๋งํฌ ๋“ฑ์„ ์ฒจ๋ถ€ํ•ด ์ฃผ์„ธ์š”.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions