FCLA - connect-foundation/2019-12 GitHub Wiki

๊ณตํ†ต ํ—ค๋”

  • [๋ฒ„ํŠผ] ์ด๋ฒคํŠธ ์ฃผ์ตœํ•˜๊ธฐ => CreateEventBtn

    • ํด๋ฆญ์‹œ ์ด๋ฒคํŠธ ์ฃผ์ตœ ํŽ˜์ด์ง€๋กœ ์ด๋™
  • [๋ฒ„ํŠผ] ๊ฐ€์ž… ํ˜น์€ ๋กœ๊ทธ์ธ / => AccountBtn

    • ํด๋ฆญ์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
      • ๋งŒ์•ฝ ๋กœ๊ทธ์ธ์ด ๋œ๋‹ค๋ฉด ๋กœ๊ทธ์ธ ๋œ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์„ ํ‘œ๊ธฐํ•ด์•ผํ•จ
    • ํด๋ฆญ์‹œ ๋งˆ์ด ํŽ˜์ด์ง€๋กœ ์ด๋™
    • Props๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ถ„๊ธฐ (href, contents)

๋ฉ”์ธ ํŽ˜์ด์ง€

  • [์ปจํ…Œ์ด๋„ˆ] ๋ฉ”์ธ ๋ฐฐ๋„ˆ => MainBannerContainer

    • Container ์ „์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Œ
    • [๋ฒ„ํŠผ] ์ด๋ฒคํŠธ ์ฃผ์ตœํ•˜๊ธฐ => CreateEventBtn
      • ํด๋ฆญ์‹œ ์ด๋ฒคํŠธ ์ฃผ์ตœ ํŽ˜์ด์ง€๋กœ ์ด๋™
  • [๊ทธ๋ฆฌ๋“œ] ์ด๋ฒคํŠธ ์นด๋“œ ๊ทธ๋ฆฌ๋“œ => EventCardGrid

    • ์นด๋“œ๋“ค์ด 4์—ด ํšก๋Œ€๋กœ ํ‘œ์‹œ๋จ
    • ์Šคํฌ๋กค ๋์— ์ž„๋ฐ•์‹œ ๋ฌดํ•œ ์Šคํฌ๋กค
    • Lazy Loading (gray -> low -> high)
    • [์นด๋“œ] ์ด๋ฒคํŠธ ํ‘œ์‹œ ์นด๋“œ => EventCard
      • ํด๋ฆญ์‹œ ํ•ด๋‹น ์ด๋ฒคํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
      • ์ด๋ฒคํŠธ ์ด๋ฏธ์ง€
      • ์ด๋ฒคํŠธ ์‹œ์ž‘๋‚ ์งœ
      • ์ œ๋ชฉ
      • ์ฃผ์ตœ์ž
      • ํ‹ฐ์ผ“ ๊ฐ€๊ฒฉ (๋ฌด๋ฃŒ || 000์›)

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

  • [์ด๋ฏธ์ง€] bookus ๋กœ๊ณ  => Logo
  • [๋ฒ„ํŠผ] ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ => LoginBtn
    • ํด๋ฆญ ํ›„, OAuth๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„ ํ•ด๋‹น ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ์œผ๋ฉด ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ (๋กœ๊ทธ์ธ)
    • ํด๋ฆญ ํ›„, OAuth๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„ ํ•ด๋‹น ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—†์œผ๋ฉด ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™ (ํšŒ์›๊ฐ€์ž…)

ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

[Validation]

  • ๊ฐ๊ฐ ์ž…๋ ฅ ํ•„๋“œ์— ๋Œ€ํ•œ Validation ํ•„์š”

    • ์ด๋ฏธ์ง€: ๊ณต๋ฐฑ ๊ฒ€์‚ฌ / 7MB ์ œํ•œ
    • ์„ฑ, ์ด๋ฆ„ : ๊ณต๋ฐฑ ๊ฒ€์‚ฌ / 30์ž๋ฅผ ๋„˜์ง€ ์•Š์Œ
    • ์ „ํ™”๋ฒˆํ˜ธ: ๊ณต๋ฐฑ ๊ฒ€์‚ฌ / 13์ž๋ฅผ ๋„˜์ง€ ์•Š์Œ / '-' ์“ฐ์ง€ ์•Š์Œ
    • ๋ชจ๋“  Validation์˜ ๊ฒฝ์šฐ input ์•„๋ž˜์— ๋ถ‰์€ ๊ธ€์”จ๋กœ ์—๋Ÿฌ๋ฅผ ํ‘œ๊ธฐํ•œ๋‹ค.
  • [์ปจํ…Œ์ด๋„ˆ] ์‚ฌ์šฉ์ž ์ˆ˜์ • ํผ => ModifyFormContainer

    • [ํ…์ŠคํŠธ] ์ด๋ฉ”์ผ ๋ผ๋ฒจ => EmailLabel
    • [Input] ์ด๋ฉ”์ผ ์ž…๋ ฅ => EmailInput
      • Oauth์—์„œ ๋„˜์–ด์˜จ ์ด๋ฉ”์ผ์ด ํ‘œ์‹œ๋จ/ disabled ์ƒํƒœ
    • [์ปจํ…Œ์ด๋„ˆ] RowContainer
      • [์ปจํ…Œ์ด๋„ˆ] ColContainer
        • [ํ…์ŠคํŠธ] ์„ฑ ๋ผ๋ฒจ => LastNameLabel
        • [Input] ์„ฑ ์ž…๋ ฅ => LastNameInput
          • [Validation - ์„ฑ]
      • [์ปจํ…Œ์ด๋„ˆ] ColContainer
        • [ํ…์ŠคํŠธ] ์ด๋ฆ„ ๋ผ๋ฒจ => FirstNameLabel
        • [Input] ์ด๋ฆ„ ์ž…๋ ฅ => FirsthInput
          • [Validation - ์ด๋ฆ„]
    • [ํ…์ŠคํŠธ] ์ „ํ™”๋ฒˆํ˜ธ ๋ผ๋ฒจ => PhoneLabel
    • [Input] ์ „ํ™”๋ฒˆํ˜ธ ์ž…๋ ฅ => PhoneInput
      • [Validation - ์ „ํ™”๋ฒˆํ˜ธ]
  • [๋ฒ„ํŠผ] ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ => JoinBtn

    • ํด๋ฆญ ์‹œ ํšŒ์›๊ฐ€์ž…์„ ์‹œ๋„ํ•˜๊ณ  ์„ฑ๊ณตํ•˜๋ฉด ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ์ด๋™
      • ์‹คํŒจํ•œ๋‹ค๋ฉด validation ํ‘œ์‹œ ๋˜๋Š” alert๋กœ ํšŒ์›๊ฐ€์ž… ์‹คํŒจ

์ด๋ฒคํŠธ ์ƒ์„ธ๋ณด๊ธฐ - 666

  • [์ปจํ…Œ์ด๋„ˆ] ์ด๋ฒคํŠธ ์„ค๋ช… ๋ฐฐ๋„ˆ => EventBannerContainer

    • [์ด๋ฏธ์ง€] ์ด๋ฒคํŠธ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ => BannerImg
      • 16:9 ์˜ ์ด๋ฏธ์ง€ ๋น„์œจ๋กœ ๋ณด์—ฌ์คŒ
    • [์ปจํ…Œ์ด๋„ˆ] ์ด๋ฒคํŠธ ๋Œ€ํ‘œ ์„ค๋ช… => DescContainer
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ œ๋ชฉ => Title
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์žฅ์†Œ => Location at '์ฃผ์ตœ ์žฅ์†Œ'ํ˜•ํƒœ
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ผ์‹œ => Date
        • yyyy๋…„ mm์›” dd์ผ (์›”) ํ˜•ํƒœ
        • ์˜คํ›„ 1:00 - ์˜คํ›„ 6:00 ํ˜•ํƒœ
      • [์ปจํ…Œ์ด๋„ˆ] ์ด๋ฒคํŠธ ์ฃผ์ตœ => HostContainer '์ฃผ์ตœ' ํ…์ŠคํŠธ ์ƒ๋‹จ์— ์กด์žฌ ํ•˜๋‹จ์— ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ
        • [์ด๋ฏธ์ง€] ์ฃผ์ตœํ•œ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ => Img
        • [ํ…์ŠคํŠธ] ์ฃผ์ตœํ•œ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ์ด๋ฆ„ => Name
  • [์ปจํ…Œ์ด๋„ˆ] ํ‹ฐ์ผ“ ๊ตฌ์ž… ์ปจํ…Œ์ด๋„ˆ => TicketBuyContainer ์ด ์ปจํ…Œ์ด๋„ˆ๋Š”, ํ™”๋ฉด์—์„œ ๋ฒ—์–ด๋‚  ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €์˜ ์ตœ์ƒ๋‹จ์— ๋ถ™์–ด์žˆ๋Š” Sticky Top element์ž„

    • Sticky Element ํ˜•ํƒœ์ผ ๊ฒฝ์šฐ:
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ œ๋ชฉ => Title
      • [ํ…์ŠคํŠธ] ๊ฐ€๊ฒฉ => Price
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ตฌ์ž…ํ•œ ์‚ฌ๋žŒ ์ˆ˜ => ParticipantCnt
      • [๋ฒ„ํŠผ] ํ‹ฐ์ผ“ ๊ตฌ์ž… ๋ฒ„ํŠผ => BuyBtn
    • Sticky Element ํ˜•ํƒœ๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ:
      • [ํ…์ŠคํŠธ] ๊ฐ€๊ฒฉ => Price ์ƒ ํ•˜๋‹จ์— ๋ธŒ๋ผ์šฐ์ € ์–‘์˜†์œผ๋กœ ๊ฝ‰ ์ฐจ๋Š” ์ž‘๋Œ€๊ธฐ๊ฐ€ ์žˆ์Œ
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ตฌ์ž…ํ•œ ์‚ฌ๋žŒ ์ˆ˜ => ParticipantCnt
      • [๋ฒ„ํŠผ] ํ‹ฐ์ผ“ ๊ตฌ์ž… ๋ฒ„ํŠผ => BuyBtn
  • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ƒ์„ธ๋‚ด์šฉ ๋ฌธ์„œ => EventDocTxt

  • **[ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ **

    • 'ํ‹ฐ์ผ“'์ด ๊ณ ์ •๊ฐ’
  • [์ปจํ…Œ์ด๋„ˆ] ํ‹ฐ์ผ“ ์ •๋ณด => TicketContainer

  • ์ƒ ํ•˜๋‹จ์— ์ ์„  ์ž‘๋Œ€๊ธฐ๊ฐ€ ์žˆ์Œ

  • [ํ…์ŠคํŠธ] ๊ฐ€๊ฒฉ => Price

  • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“์— ๋Œ€ํ•œ ์ด๋ฆ„ => Name

  • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“์— ๋Œ€ํ•œ ์„ค๋ช… => Desc

  • [์•„์ด์ฝ˜ + ํ…์ŠคํŠธ] ๋‚จ์€ ํ‹ฐ์ผ“ ๊ฐœ์ˆ˜ => LeftCnt

  • [์•„์ด์ฝ˜ + ํ…์ŠคํŠธ] 1์ธ ์ตœ๋Œ€ ๊ตฌ์ž… ๊ฐœ์ˆ˜ => LimitCntPerPerson

  • [์•„์ด์ฝ˜ + ํ…์ŠคํŠธ] ํŒ๋งค ๋งˆ๊ฐ์ผ => EndDate

  • [์•„์ด์ฝ˜ + ํ…์ŠคํŠธ] ํ˜„์žฌ ํŒ๋งค๋œ ๊ฐœ์ˆ˜ => ParticipantCnt

  • [์ปจํ…Œ์ด๋„ˆ] ์žฅ์†Œ ์ •๋ณด๋“ค => LocationContainer

    • ์ง€๋„

      • ๋„ค์ด๋ฒ„ ์ง€๋„ API
      • ์žฅ์†Œ์— ๋Œ€ํ•œ ์œ„์น˜๋ฅผ ์ง€๋„๋กœ ํ‘œ์‹œ
    • [ํ…์ŠคํŠธ] ์žฅ์†Œ => Label

    • [ํ…์ŠคํŠธ] ์žฅ์†Œ ํƒ€์ดํ‹€ => Place

      • ํ˜ธ์ŠคํŠธ๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ ๋Œ€๋กœ ํ‘œ์‹œ
    • [ํ…์ŠคํŠธ] ์žฅ์†Œ์— ๋Œ€ํ•œ ์ƒ์„ธ ์ฃผ์†Œ => Address

    • [ํ…์ŠคํŠธ] ์žฅ์†Œ์— ๋Œ€ํ•œ ์„ค๋ช… => Desc

      • ํ˜ธ์ŠคํŠธ๊ฐ€ ์ž‘์„ฑํ•˜๋ฉด ํ‘œ์‹œ ๋˜๋Š” ๋ฏธํ‘œ์‹œ

์ด๋ฒคํŠธ ๋งŒ๋“ค๊ธฐ - 666

[๋ผ์šฐํŒ…] ์ด๋ฒคํŠธ ์ƒ์„ฑํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ(submit) ๋ชจ๋“  ์ •๋ณด๋ฅผ Validation ์„ ํ•œ๋ฒˆ ๋” ํ•˜๊ณ  ์„œ๋ฒ„์— ์ด๋ฒคํŠธ ์ƒ์„ฑ ์ •๋ณด ์ „์†ก (์„œ๋ฒ„์—์„œ๋„ Validation์„ ํ•œ๋ฒˆ ๋” ํ•จ) - Validation ์ด ์•ˆ๋˜์–ด์žˆ์„ ๊ฒฝ์šฐ alert ์ด ๋œจ๊ณ  Validation ์˜ค๋ฅ˜๊ฐ€ input tag ๋ฐ‘์— ์žˆ์Œ - Validation์ด ๋˜์–ด์žˆ์„ ๊ฒฝ์šฐ, ๋กœ๋”ฉ๋ฐ”๊ฐ€ ๋œจ๋ฉด์„œ ์ƒ์„ฑ๋œ ์ด๋ฒคํŠธ ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™ํ•จ.

  • [Validation] ๊ฐ๊ฐ ์ž…๋ ฅ ํ•„๋“œ์— ๋Œ€ํ•œ Validation ํ•„์š” ๋ชจ๋“  Validation์˜ ๊ฒฝ์šฐ input ์•„๋ž˜์— ๋ถ‰์€ ๊ธ€์”จ๋กœ ์—๋Ÿฌ๋ฅผ ํ‘œ๊ธฐํ•œ๋‹ค.

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

    • [Airbnb Calendar] ๋‚ ์งœ์„ ํƒ, ๋‹จ์ผ ์บ˜๋ฆฐ๋”๋งŒ ๋ณด์—ฌ์คŒ
    • [์‹œ๊ฐ„] ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ (์˜ค์ „/์˜คํ›„ | ์‹œ๊ฐ„)์„ ๋ณด์—ฌ์คŒ

    [Input/Number] ๋ชจ๋“  ์ˆซ์ž๊ฐ€ ์„ธ์ž๋ฆฌ ๋‹จ์œ„๋กœ ,๊ฐ€ ์ƒ๊น€ ex) 22,222 | 222,222 | 22,222,222

  • [์ปจํ…Œ์ด๋„ˆ] ํ˜„์žฌ ํŽ˜์ด์ง€ ์†Œ๊ฐœ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฒคํŠธ ์ฃผ์ตœํ•˜๊ธฐ/ ๋‚ด์šฉ๊ณผ ์ด๋ฏธ์ง€๊ฐ€ ์กด์žฌ

  • [์ปจํ…Œ์ด๋„ˆ] ์ด๋ฒคํŠธ ๋‚ด์šฉ ์ž…๋ ฅ ์ปจํ…Œ์ด๋„ˆ => CreateEventContainer '์ œ๋ชฉ+์„ค๋ช… | inputBoxContainer'์˜ ํ˜•ํƒœ์ด๋ฉฐ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฒƒ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ. ํ•˜๋‹จ์˜ ์„ค๋ช…์€ Container ๋‚ด์— ๋“ค์–ด๊ฐ€๋Š” Element์— ๋Œ€ํ•œ ์„ค๋ช…

    • [Input/Chkbox] ๊ณต๊ฐœ์—ฌ๋ถ€ => IsPublicChkedInput

    • [Input/String] ์ด๋ฒคํŠธ ์ œ๋ชฉ => TitleInput

    • [Container]์ด๋ฒคํŠธ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ => PeriodInput

      • [์‹œ๊ฐ„์„ ํƒ] ์‹œ์ž‘
      • [์‹œ๊ฐ„์„ ํƒ] ์ข…๋ฃŒ
    • [Input/String] ์žฅ์†Œ => PlaceInput

    • [Input/String] ์ƒ์„ธ์ฃผ์†Œ => AddressInput

      • [์ง€๋„] ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋„ค์ด๋ฒ„ ์ง€๋„๋กœ ๊ฒ€์ƒ‰์ด ๋จ
    • [Input/String] ์žฅ์†Œ์„ค๋ช… => PlaceDescInput

    • [Input/file] ๋Œ€ํ‘œ์ด๋ฏธ์ง€ => MainImgInput

      • ์ด๋ฏธ์ง€๋Š” ์ œ์ถœ ์ด์ „๊นŒ์ง€ Client์—์„œ ๋ณด๊ด€ํ•จ
      • ์ด๋ฏธ์ง€ ํ‘œ์‹œ ์™„๋ฃŒ๊นŒ์ง€ ๋กœ๋”ฉ ๋™๊ทธ๋ผ๋ฏธ๊ฐ€ ๋Œ์•„๊ฐ
      • ๋‹ค ๋กœ๋”ฉ ๋˜๋ฉด ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— 16:9 ๋น„์œจ๋กœ ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋จ
    • [TUI Editor] ๋‚ด์šฉ => EditDesc

    • [๋ฆฌ์ŠคํŠธ] ํ‹ฐ์ผ“ ํผ ๋ฆฌ์ŠคํŠธ => TicketFormList

      • [์ปจํ…Œ์ด๋„ˆ] ํ‹ฐ์ผ“ ํผ ์ปจํ…Œ์ด๋„ˆ => TicketFormContainer
        • ํ‹ฐ์ผ“ ์ œ๋ชฉ๊ณผ ์„ค๋ช…์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์ด๋ค„์ ธ ์žˆ์Œ. ๋งŒ์•ฝ์— ํ‹ฐ์ผ“ ์ถ”๊ฐ€๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋™์ผํ•œ ๋ชจ์–‘์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•˜๋‚˜ ๋” ์ƒ๊น€.
        • '์ œ๋ชฉ+์„ค๋ช… | inputBoxContainer'์˜ ํ˜•ํƒœ์ด๋ฉฐ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฒƒ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ. ํ•˜๋‹จ์˜ ์„ค๋ช…์€ Container ๋‚ด์— ๋“ค์–ด๊ฐ€๋Š” Element์— ๋Œ€ํ•œ ์„ค๋ช…
        • [Input/String] ํ‹ฐ์ผ“ ์ด๋ฆ„ => TitleInput
        • [Input/String] ํ‹ฐ์ผ“ ์„ค๋ช… => DescInput
        • [Input/Number] ๊ฐ€๊ฒฉ => PriceInput
          • input ์ฐฝ์˜ ์•ž๋‹จ์— ๏ฟฆ ๊ฐ€ ๋ถ™์Œ
        • [Input/Number] ํ‹ฐ์ผ“ ์ˆ˜๋Ÿ‰ => CntInput
        • [Input/Chkbox] ํ‹ฐ์ผ“ ์ˆ˜๋Ÿ‰ ์ˆจ๊น€ ์ฒดํฌ => IsShowCnt
        • [Input/Number] 1์ธ๋‹น ๊ตฌ๋งค ๊ฐ€๋Šฅ ๊ฐœ์ˆ˜ => LimitCntPerPersonInput
        • [์ปจํ…Œ์ด๋„ˆ] ํŒ๋งค ๊ธฐ๊ฐ„ => OpenDateRangeContainer
          • [์‹œ๊ฐ„์„ ํƒ] ์‹œ์ž‘
          • [์‹œ๊ฐ„์„ ํƒ] ์ข…๋ฃŒ
        • [์ปจํ…Œ์ด๋„ˆ] ํ™˜๋ถˆ ๋งˆ๊ฐ ๋‚ ์งœ => RefundDateRangeContainer
          • [์‹œ๊ฐ„์„ ํƒ] ํ™˜๋ถˆ ๋งˆ๊ฐ์ผ
        • [๋ฒ„ํŠผ] ํ‹ฐ์ผ“ ์‚ญ์ œ => DeleteBtn ํด๋ฆญ ์‹œ ๋ฒ„ํŠผ์ด ์†Œ์†๋œ TicketFormContainer ์‚ญ์ œ
      • [๋ฒ„ํŠผ] ํ‹ฐ์ผ“ ์ถ”๊ฐ€ ๋ฒ„ํŠผ => AddTicketFormBtn
        • TicketFormContainer ๊ฐ€ ํ•˜๋‚˜ ์ถ”๊ฐ€
  • [๋ฒ„ํŠผ] ์ด๋ฒคํŠธ ์ƒ์„ฑ ๋ฒ„ํŠผ => SubmitBtn

๊ด€๋ฆฌ์ž : ํ—ค๋” - ใ…ˆใ…Ž

  • [ํ…์ŠคํŠธ ๋ฒ„ํŠผ] => LogoBtn
    • ํด๋ฆญ ์‹œ ์–ด๋“œ๋ฏผ ๋ฉ”์ธ์œผ๋กœ ์ด๋™
    • BookUs! x ์ด๋ฒคํŠธ ์ด๋ฆ„ (๊ณต๊ฐœ์—ฌ๋ถ€)
      • ๊ณต๊ฐœ ์—ฌ๋ถ€๋Š” '๋น„๊ณต๊ฐœ' ๋˜๋Š” '๊ณต๊ฐœ' ํ‘œ์‹œ
      • ๊ณต๊ฐœ ์—ฌ๋ถ€๋ฅผ ์ดˆ๋ก์ƒ‰์œผ๋กœ ํ‘œ์‹œ
  • [Admin GNB] => AdminGNB
    • ๊ตฌ์กฐ (NB์— ํฌํ•จ๋œ ํƒญ)
      • ์ฐธ๊ฐ€์ž ๋ชฉ๋ก => ParticipantListTabBtn
      • ํ†ต๊ณ„ => StatisticsTabBtn
      • ์ด๋ฒคํŠธ ์ˆ˜์ • => EditEventTabBtn
      • ํ‹ฐ์ผ“ ์ˆ˜์ • => EditTicketsTabBtn
    • ๊ฐ ํ•ญ๋ชฉ ํด๋ฆญ ์‹œ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™
    • ๊ฐ ํ•ญ๋ชฉ hover ์‹œ Background ์ƒ‰์ƒ ํšŒ์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ
    • ํ˜„์žฌ ํŽ˜์ด์ง€์— ํ•˜๋‹จ๋ฐ” ํ‘œ์‹œ
  • [๋ฒ„ํŠผ] => AccountBtn
    • ์œ ์ €์˜ ์ด๋ฆ„ ํ‘œ์‹œ
    • ํด๋ฆญ ์‹œ ๋งˆ์ดํŽ˜์ด์ง€๋กœ ์ด๋™

๊ด€๋ฆฌ์ž : ์ฐธ๊ฐ€์ž ๋ชฉ๋ก - ใ…ˆใ…Ž

  • ์ฐธ๊ฐ€์ž ๊ฒ€์ƒ‰ => SearchParticipants
    • [ํ…์ŠคํŠธ] ์ถœ์„ ํ˜„ํ™ฉ => CheckInStatus
      • ์ถœ์„ (ํ˜„์žฌ ์ถœ์ฒต ์ˆ˜)/(์ด ๋“ฑ๋ก์ž ์ˆ˜) ํ˜•ํƒœ
    • [Input/String] => SearchParticipantsInput
      • placeholder: ์ด๋ฆ„, ์ด๋ฉ”์ผ, ์ „ํ™”๋ฒˆํ˜ธ, Ticket ID ์ค‘ ํ•˜๋‚˜ ์ž…๋ ฅ
      • ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ์‹œ ์ด๋ฆ„, ์ด๋ฉ”์ผ, ์ „ํ™”๋ฒˆํ˜ธ, Tikcet ID ์˜ ๊ฐ’๊ณผ ๋ฐ”๊ตํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ParticipantList ์— ํ‘œ์‹œ
  • ์ฐธ๊ฐ€์ž ๋ชฉ๋ก => ParticipantList
    • ๋ชจ๋“  ์ฐธ๊ฐ€์ž๋ฅผ ํ‘œ์‹œ
    • ์Šคํฌ๋กค ํ•˜๋‹จ ๋์— ์ž„๋ฐ•์‹œ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ๋ฌดํ•œ ์Šคํฌ๋กค
    • SearchParticipantsInput ์— ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ ์‹œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ‘œ์‹œ
    • SearchParticipantsInput ์— ์ž…๋ ฅ๋˜์—ˆ๋˜ ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋ชจ๋‘ ์ง€์›Œ์งˆ ๊ฒฝ์šฐ, ๋‹ค์‹œ ๋ชจ๋“  ์ฐธ๊ฐ€์ž๋ฅผ ํ‘œ์‹œ
    • ์ฐธ๊ฐ€์ž ์ •๋ณด ์นด๋“œ => ParticipantCard
      • ์ฐธ๊ฐ€์ž ์ •๋ณด๋ฅผ ํ‘œ์‹œ
        • ์œ ์ € ํ”„๋กœํ•„ ์‚ฌ์ง„
        • ์ด๋ฉ”์ผ
        • ์ „ํ™”๋ฒˆํ˜ธ
        • ์ฃผ๋ฌธ ์ •๋ณด => OrderList
          • [Table] ํ‹ฐ์ผ“ ์ •๋ณด => TicketTable
            • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ID => Id
            • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์ข…๋ฅ˜ => Type
            • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ฐ€๊ฒฉ => Price
            • [Input/Chkbox] ์ถœ์„ ์ฒดํฌ ์—ฌ๋ถ€
              • ์ถœ์„ ์™„๋ฃŒ ์‹œ On ํ‘œ์‹œ
              • ์ถœ์„ ๋ฏธ์™„๋ฃŒ ์‹œ Off ํ‘œ์‹œ
              • ํด๋ฆญ ์‹œ ์ถœ์„ ์—ฌ๋ถ€ Toggle
            • ์—ฌ๋Ÿฌ ๋ฒˆ ์ฃผ๋ฌธํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ‹ฐ์ผ“ ์ •๋ณด๊ฐ€ ๋‚˜์˜จ๋‹ค
          • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ธˆ์•ก => TotalPrice
            • ํ‹ฐ์ผ“์˜ ์ด ๊ธˆ์•ก ํ‘œ์‹œ
          • [๋ฒ„ํŠผ] ํ™˜๋ถˆ => RefundBtn
            • ํด๋ฆญ ์‹œ ํ™˜๋ถˆ ํŽ˜์ด์ง€๋กœ ์ด๋™

๊ด€๋ฆฌ์ž : ์ด๋ฒคํŠธ ์ˆ˜์ • - ใ…ˆใ…Ž

  • ์ด๋ฒคํŠธ ๋“ฑ๋ก๊ณผ ๋™์ผ
  • ๊ธฐ ๋“ฑ๋ก๋œ ์ •๋ณด ํ‘œ์‹œ
  • [๋ฒ„ํŠผ] ์ˆ˜์ •์‚ฌํ•ญ ๋ฐ˜์˜ => SubmitBtn
    • ํด๋ฆญ ์‹œ ์ˆ˜์ •์‚ฌํ•ญ ๋ฐ˜์˜

๊ด€๋ฆฌ์ž : ํ‹ฐ์ผ“ ์ˆ˜์ • - ใ…ˆใ…Ž

  • ํ‹ฐ์ผ“ ์ˆ˜์ •
    • ์ด๋ฒคํŠธ ๋“ฑ๋ก์˜ ํ‹ฐ์ผ“ ์ˆ˜์ •๊ณผ ๋™์ผ
    • ํ‹ฐ์ผ“ ์ด๋ฆ„
      • ์ˆ˜์ • ๋ถˆ๊ฐ€ (disabled)
    • ํ‹ฐ์ผ“ ์„ค๋ช…
    • ๊ฐ€๊ฒฉ
      • ์ˆ˜์ • ๋ถˆ๊ฐ€ (disabled)
    • ํ‹ฐ์ผ“ ์ˆ˜๋Ÿ‰
    • ํ‹ฐ์ผ“ ์ˆ˜๋Ÿ‰ ์ˆจ๊น€
    • 1์ธ๋‹น ๊ตฌ๋งค ๊ฐ€๋Šฅ ๊ฐœ์ˆ˜
      • [validation] ์ตœ์†Œ๊ฐ’ : ์ด๋ฏธ ํŒ”๋ฆฐ ๊ฐœ์ˆ˜
    • ํŒ๋งค ๊ธฐ๊ฐ„
      • [validation] ํ–‰์‚ฌ ์ข…๋ฃŒ ์ด์ „
    • ํ™˜๋ถˆ ๋งˆ๊ฐ ๋‚ ์งœ
      • [validation] ํŒ๋งค ๊ธฐ๊ฐ„ ์ข…๋ฃŒ ์ด์ „
  • ํ‹ฐ์ผ“ ์ถ”๊ฐ€ => TicketForm
    • ์ถ”๊ฐ€ ํด๋ฆญ ์‹œ ํ‹ฐ์ผ“ ์ถ”๊ฐ€ ์ฐฝ ํ‘œ์‹œ
    • ์ด๋ฒคํŠธ ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์˜ ํ‹ฐ์ผ“ ์ถ”๊ฐ€์™€ ๋™์ผ

๊ด€๋ฆฌ์ž : ์ด๋ฒคํŠธ ํ†ต๊ณ„ - ใ…ˆใ…Ž

  • ํ…์ŠคํŠธ ํ†ต๊ณ„ => TxtStatistics

    • Socket.io ๋ฅผ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ๋ณ€ํ™”
    • ํ†ต๊ณ„
      • ๋‚จ์•„์žˆ๋Š” ํ‹ฐ์ผ“ ์ˆ˜ (์‹ค์‹œ๊ฐ„) => LeftTicketsCnt
        • (๋‚จ์•„์žˆ๋Š” ํ‹ฐ์ผ“ ์ˆ˜)๊ฐœ / (์ด ํ‹ฐ์ผ“ ์ˆ˜)๊ฐœ ํ‘œ์‹œ
      • ๋งค์ถœ (์‹ค์‹œ๊ฐ„) => TotalEearning
        • (๋งค์ถœ) ์› ํ‘œ์‹œ
      • ์•Œ๋ฆผ ์‹ ์ฒญ์ž ์ˆ˜ (์‹ค์‹œ๊ฐ„) => AlarmParticipantCnt
        • (์•Œ๋ฆผ ์‹ ์ฒญ์ž ์ˆ˜) ๋ช… ํ‘œ์‹œ
  • ๊ทธ๋ž˜ํ”„ ํ†ต๊ณ„ => GraphStatistics

    • ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ์กฐํšŒํ•œ ์‹œ๊ฐ„์˜ ๋ถ„ํฌ => HitsPerTimeGraph
      • x์ถ•: ์‹œ๊ฐ„, y์ถ•: ์กฐํšŒ์ˆ˜
    • ์‹œ๊ฐ„๋‹น ์ด๋ฒคํŠธ ํ‹ฐ์ผ“ ํŒ๋งค ํ˜„ํ™ฉ (์‹ค์‹œ๊ฐ„) => TicketSalesPerTimeGraph
      • x์ถ•: ์‹œ๊ฐ„, y์ถ•: ํ‹ฐ์ผ“ ์ˆ˜ ๋˜๋Š” ๋งค์ถœ??
    • ์ฒดํฌ์ธ์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ๋ถ„ํฌ => CheckinPerTimeGraph
      • x์ถ•: ์‹œ๊ฐ„, y์ถ•: ์ฒดํฌ์ธ ์ˆ˜

๋งˆ์ดํŽ˜์ด์ง€: ๊ณตํ†ต ํƒญ ๋ฐ” - ใ…‡ใ…Ž

  • [๋กœ์ปฌ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”] => MyPageLNB
    • [๋ฒ„ํŠผ] ๋‚ด ํ‹ฐ์ผ“ => TicketsTabBtn
  • my/tickets/event/555 - ๊ตฌ๋งค์™„๋ฃŒํ•œ ํ‹ฐ์ผ“๋“ค ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™
    • [๋ฒ„ํŠผ] ์ฃผ์ตœํ•œ ์ด๋ฒคํŠธ => MyEventsTabBtn
      • ์ฃผ์ตœํ•œ ์ด๋ฒคํŠธ๋“ค์„ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™
    • [๋ฒ„ํŠผ] ํ”„๋กœํ•„ => ProfileTabBtn
      • ๋‚ด ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™
    • [๋ฒ„ํŠผ] ๋กœ๊ทธ์•„์›ƒ => LogoutTabBtn
      • ๋ฐ”๋กœ ๋กœ๊ทธ์•„์›ƒ๊ณผ ๋™์‹œ์— ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ์ด๋™

๋งˆ์ดํŽ˜์ด์ง€: ๋‚ด ํ‹ฐ์ผ“ - ใ…‡ใ…Ž

  • [์นด๋“œ ๊ทธ๋ฆฌ๋“œ] ๊ตฌ๋งค ์™„๋ฃŒํ•œ ์ด๋ฒคํŠธ๋“ค => EventCardGrid
    • ๋ณด์—ฌ์ค„ ์ด๋ฒคํŠธ๋“ค์„ ๊ทธ๋ฆฌ๋“œ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
    • ์Šคํฌ๋กค ํ•˜๋‹จ ๋์— ์ž„๋ฐ• ์‹œ ๋ฌดํ•œ ์Šคํฌ๋กค (ํ•„์š”์„ฑ ์ œ๊ณ ํ•ด๋ด์•ผํ•จ)
    • [์นด๋“œ] => EventCard
      • ํด๋ฆญ ์‹œ ํ•ด๋‹น ์ด๋ฒคํŠธ ์ •๋ณด ํŽ˜์ด์ง€๋กœ ์ด๋™ (๋‚ด๊ฐ€ ๊ตฌ๋งคํ•œ ์ด๋ฒคํŠธ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ๋ณด์—ฌ์ค„ ์ด๋ฒคํŠธ ํŽ˜์ด์ง€)
      • ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•œ ์นด๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋“ฏ
      • [์ด๋ฏธ์ง€] ์ด๋ฒคํŠธ ์ด๋ฏธ์ง€ => Img
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ผ์‹œ => Date
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ œ๋ชฉ => Title
      • [ํ…์ŠคํŠธ] ์ฃผ์ตœ์ž => HostName

๋งˆ์ดํŽ˜์ด์ง€: ๋‚ด ํ‹ฐ์ผ“ ๋ˆŒ๋ €์„ ๋•Œ (ํ‹ฐ์ผ“ ์ƒ์„ธ) - ใ…‡ใ…Ž

  • [์ปจํ…Œ์ด๋„ˆ] ์ด๋ฒคํŠธ ์ •๋ณด ์„ค๋ช… => EventInfoContainer

    • [์ด๋ฏธ์ง€] ์ด๋ฒคํŠธ ์ด๋ฏธ์ง€ => Img
    • [๋งํฌ ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ œ๋ชฉ => Title
      • ํด๋ฆญ ์‹œ ํ•ด๋‹น ์ด๋ฒคํŠธ ์ •๋ณด ํŽ˜์ด์ง€๋กœ ์ด๋™
    • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์žฅ์†Œ => Address
    • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ผ์‹œ => Date
    • [ํ…์ŠคํŠธ] ์ฃผ์ตœ์ž => HostName
  • [์นด๋“œ ๊ทธ๋ฆฌ๋“œ] ๊ตฌ๋งค ์™„๋ฃŒํ•œ ํ‹ฐ์ผ“๋“ค => TicketCardGrid

    • ๋ณด์—ฌ์ค„ ํ‹ฐ์ผ“๋“ค์„ ๊ทธ๋ฆฌ๋“œ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
    • ํ‹ฐ์ผ“ ์œ ํ˜•์˜ ์ˆ˜๊ฐ€ ์ ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ ์Šคํฌ๋กค์€ ํ•„์š” ์—†์Œ
    • [์นด๋“œ] ๊ตฌ๋งค์™„๋ฃŒํ•œ ํ‹ฐ์ผ“ ์นด๋“œ => TicketCard
      • ํด๋ฆญ ์‹œ ํ‹ฐ์ผ“(๋“ค)์˜ ๋ชจ๋‹ฌ์ฐฝ ๋„์›€
      • hover ์‹œ ํ”Œ๋กœํŒ… ํšจ๊ณผ (๊ทธ๋ฆผ์ž ์ง„ํ•ด์ง)
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์ด๋ฆ„ => Name
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ฐ€๊ฒฉ => Price
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์„ค๋ช… => Desc
      • [์•„์ด์ฝ˜] ํ‹ฐ์ผ“ ์•„์ด์ฝ˜ => Icon
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์ˆ˜๋Ÿ‰ => Cnt

ํ‹ฐ์ผ“ ๋ชจ๋‹ฌ - 666

  • [๋ชจ๋‹ฌ(๋ฆฌ์ŠคํŠธ)] ํ‹ฐ์ผ“๋“ค์„ ๋‚˜์—ดํ•˜๋Š” ๋ชจ๋‹ฌ ๋ฆฌ์ŠคํŠธ => TicketModalList
    • ์ขŒ์šฐ๋กœ ์Šคํฌ๋กค์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์•กํ‹ฐ๋ธŒ ํ‹ฐ์ผ“์€ ํฌ๊ฒŒ ํ‘œํ˜„
    • ์•กํ‹ฐ๋ธŒ ๋˜์ง€ ์•Š์€ ํ‹ฐ์ผ“์€ ์‚ด์ง ์–ด๋‘ก๊ฒŒ ํ‘œ์‹œ
    • [์นด๋“œ] ํ‹ฐ์ผ“์นด๋“œ => TicketCard
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์ด๋ฆ„ => Name
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ id => Id
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ตฌ๋งค์ž ์ด๋ฆ„ => Buyer
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ฐ€๊ฒฉ => Price
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ฒฐ์ œ์ผ => BoughtDate
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ๋‚ ์งœ => EventDate
      • [์ปจํ…Œ์ด๋„ˆ] ํ–‰ ์ปจํ…Œ์ด๋„ˆ => RowContainer

      ์œ„์˜ ๊ฒƒ๋“ค๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ์™€ ๋ผ๋ฒจ๋กœ ๊ฐ์‹ผ๋‹ค.

      • [์ปจํ…Œ์ด๋„ˆ] ํ–‰ ์ปจํ…Œ์ด๋„ˆ => RowContainer
        • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์•ˆ๋‚ด ๋ผ๋ฒจ => DescLabel
        • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์•ˆ๋‚ด => Desc
      • [ํ…์ŠคํŠธ ๋ฒ„ํŠผ] ํ™˜๋ถˆํ•˜๊ธฐ => RefundBtn
        • ํ™˜๋ถˆ ๊ฐ€๋Šฅ ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ๊ฒฝ์šฐ disabled
        • ํด๋ฆญ ์‹œ ํ‹ฐ์ผ“ ํ™˜๋ถˆ ํŽ˜์ด์ง€๋กœ ์ด๋™
    • ๋ธ”๋ž™ ์˜์—ญ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ ๋„๊ธฐ

ํ‹ฐ์ผ“ ํ™˜๋ถˆํ•˜๊ธฐ - 666

  • [ํ…์ŠคํŠธ] ํ™˜๋ถˆ | ๋‹ค์Œ ํ‹ฐ์ผ“๋“ค์„ ํ™˜๋ถˆํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? => RefundConfirm
    • [Number] ์ฃผ๋ฌธ ๋ฒˆํ˜ธ => OrderId
    • [Date] ๊ฒฐ์ œ์ผ => OrderDate yyyy๋…„ mm์›” dd์ผ ์˜คํ›„ 1:03 ํ˜•ํƒœ
    • [Date] ํ™˜๋ถˆ ๊ฐ€๋Šฅ ๊ธฐ๊ฐ„ => RefundDueDate yyyy๋…„ mm์›” dd์ผ ์˜คํ›„ 1:03 '๊นŒ์ง€' ํ˜•ํƒœ
    • [Number] ํ™˜๋ถˆ ๊ธˆ์•ก => RefundPrice
    • [container] ํ‹ฐ์ผ“ ์ •๋ณด ํ‘œ์‹œ ์ปดํฌ๋„ŒํŠธ => TicketInfoContainer
      • [Text] ๊ฐ€๊ฒฉ => Price ๋ฌด๋ฃŒ์ผ ๊ฒฝ์šฐ์—๋Š” '๋ฌด๋ฃŒ'/ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์ˆซ์ž + ์›ํ‘œ์‹œ
      • ์ด๋ฆ„ => Name
      • ์„ค๋ช… => Desc
      • ํ‹ฐ์ผ“ ID => ID
    • [๋ฒ„ํŠผ] ํ™˜๋ถˆ ๋ฒ„ํŠผ => SubmitBtn

๋งˆ์ดํŽ˜์ด์ง€: ์ฃผ์ตœํ•œ ์ด๋ฒคํŠธ

  • [์นด๋“œ ๊ทธ๋ฆฌ๋“œ] ์ฃผ์ตœํ•œ ์ด๋ฒคํŠธ ์นด๋“œ ๊ทธ๋ฆฌ๋“œ => EventCardGrid
    • ๋ณด์—ฌ์ค„ ์ด๋ฒคํŠธ๋“ค์„ ๊ทธ๋ฆฌ๋“œ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ
    • ์Šคํฌ๋กค ํ•˜๋‹จ ๋์— ์ž„๋ฐ• ์‹œ ๋ฌดํ•œ ์Šคํฌ๋กค
    • [์นด๋“œ] ์ฃผ์ตœํ•œ ์ด๋ฒคํŠธ ์นด๋“œ => EventCard
      • ํด๋ฆญ ์‹œ ํ•ด๋‹น ์ด๋ฒคํŠธ ๊ด€๋ฆฌ ํŽ˜์ด์ง€๋กœ ์ด๋™
      • ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•œ ์นด๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋“ฏ
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ด๋ฏธ์ง€ => Img
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ผ์‹œ => Date
      • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ œ๋ชฉ => Name
      • [ํ…์ŠคํŠธ] ์ฃผ์ตœ์ž => HostName

๋งˆ์ดํŽ˜์ด์ง€: ํ”„๋กœํ•„ - ใ…‡ใ…Ž => ใ……ใ„ท

  • [ํ…์ŠคํŠธ] ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ผ๋ฒจ => Label
  • [ํ…์ŠคํŠธ] ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์„ค๋ช… => Desc
  • [Input/file] ๋Œ€ํ‘œ์ด๋ฏธ์ง€ => MainImgInput
    • ์—…๋กœ๋“œ ์‹œ ์—…๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๋กœ๋”ฉ ๋™๊ทธ๋ผ๋ฏธ๊ฐ€ ๋Œ์•„๊ฐ
    • ๋‹ค ๋กœ๋”ฉ ๋˜๋ฉด ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— 16:9 ๋น„์œจ๋กœ ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ
    • ์ด๋ฏธ์ง€๊ฐ€ ์—…๋กœ๋“œ ๋˜์—ˆ๋‹ค๋ฉด ์‚ญ์ œ ๋ฒ„ํŠผ์ด ์ƒ๊ธฐ๋ฉฐ ์ด๋ฏธ์ง€ ๋ถ€๋ถ„์€ ํด๋ฆญ ์•ˆ๋จ.
  • [์ปจํ…Œ์ด๋„ˆ] ์‚ฌ์šฉ์ž ์ˆ˜์ • ํผ => ModifyFormContainer
    • [ํ…์ŠคํŠธ] ์ด๋ฉ”์ผ ๋ผ๋ฒจ => EmailLabel
    • [ํ…์ŠคํŠธ] ์ด๋ฉ”์ผ ํ…์ŠคํŠธ => Email
    • [์ปจํ…Œ์ด๋„ˆ] RowContainer
      • [์ปจํ…Œ์ด๋„ˆ] ColContainer
        • [ํ…์ŠคํŠธ] ์„ฑ ๋ผ๋ฒจ => LastNameLabel
        • [Input] ์„ฑ ์ž…๋ ฅ => LastNameInput
          • [Validation - ์„ฑ]
      • [์ปจํ…Œ์ด๋„ˆ] ColContainer
        • [ํ…์ŠคํŠธ] ์ด๋ฆ„ ๋ผ๋ฒจ => FirstNameLabel
        • [Input] ์ด๋ฆ„ ์ž…๋ ฅ => FirstNameInput
          • [Validation - ์ด๋ฆ„]
    • [ํ…์ŠคํŠธ] ์ „ํ™”๋ฒˆํ˜ธ ๋ผ๋ฒจ => PhoneLabel
    • [Input] ์ „ํ™”๋ฒˆํ˜ธ ์ž…๋ ฅ => PhoneInput
      • [Validation - ์ „ํ™”๋ฒˆํ˜ธ]

๋งˆ์ดํŽ˜์ด์ง€: ๋กœ๊ทธ์•„์›ƒ - ใ…‡ใ…Ž => ใ……ใ„ท

  • [์Šคํ”ผ๋„ˆ] ๋กœ๋”ฉ => LoadingSpinner
    • ๋กœ๊ทธ์•„์›ƒ ํด๋ฆญ ์‹œ ๋กœ๊ทธ์•„์›ƒ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ‘œ์‹œ
    • ์ดํ›„ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™

404 - Can't load - ใ……ใ„ท

  • [ํ…์ŠคํŠธ] ํŽ˜์ด์ง€ ์ƒํƒœ ๋ฌธ๊ตฌ => PageStatus
  • [๋ฒ„ํŠผ] ํŽ˜์ด์ง€ ๋ฆฌ๋กœ๋“œ ๋ฒ„ํŠผ => PageReloadBtn
  • [์ด๋ฏธ์ง€] Can't Load ์ด๋ฏธ์ง€ => PageCantLoadImg
    • ํด๋ฆญ ์‹œ ์ƒˆ๋กœ๊ณ ์นจ

404 - Not found - ใ……ใ„ท

  • [ํ…์ŠคํŠธ] ํŽ˜์ด์ง€ ์ƒํƒœ ์ฝ”๋“œ => PageStatCode
  • [ํ…์ŠคํŠธ] ํŽ˜์ด์ง€ ์ƒํƒœ ์ฝ”๋“œ ์„ค๋ช… => PageStatDesc
  • [์ด๋ฏธ์ง€] Not Found ์ด๋ฏธ์ง€ => PageNotFoundImg

์ด๋ฒคํŠธ ์ฐธ์—ฌ : ํ—ค๋”

  • [ํ…์ŠคํŠธ ๋ฆฌ์ŠคํŠธ] ์ฐธ์—ฌ ๋‹จ๊ณ„ => JoinStepList
    • ๊ฐ ๋‹จ๊ณ„๊ฐ€ '>' ๋กœ ๊ตฌ๋ถ„๋˜์–ด ํ‘œ์‹œ๋œ๋‹ค.
    • [ํ…์ŠคํŠธ] ๊ฐ๊ฐ์˜ ๋‹จ๊ณ„ => JoinStep
      • ํ˜„์žฌ ๋‹จ๊ณ„์™€ ์ง€๋‚˜๊ฐ„ ๋‹จ๊ณ„๋Š” Bold ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • [ํ…์ŠคํŠธ] ์ œ๋ชฉ์ด ๋˜๋Š” ๋‹จ๊ณ„ ์ด๋ฆ„ => JoinStepName

์ด๋ฒคํŠธ ์ฐธ์—ฌ : ์ด๋ฒคํŠธ ์ •๋ณด

  • [์ด๋ฏธ์ง€] ์ด๋ฒคํŠธ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ => EventMainImg
  • [์ปจํ…Œ์ด๋„ˆ] ์ด๋ฒคํŠธ ์ƒ์„ธ ์ •๋ณด => EventDetailContainer
    • [ํ…์ŠคํŠธ] ์ด๋ฒคํŠธ ์ œ๋ชฉ => Title

    • [์ปจํ…Œ์ด๋„ˆ] ColContainer

      • [์ปจํ…Œ์ด๋„ˆ] RowContainer

        • [ํ…์ŠคํŠธ] ์ผ์‹œ ๋ผ๋ฒจ => DateLabel
        • [ํ…์ŠคํŠธ] ์ผ์‹œ => Date
      • [์ปจํ…Œ์ด๋„ˆ] RowContainer

        • [ํ…์ŠคํŠธ] ์ฃผ์ตœ ๋ผ๋ฒจ => HostLabel
        • [ํ…์ŠคํŠธ] ์ฃผ์ตœ => Host
    • [์ปจํ…Œ์ด๋„ˆ/์ด๋ฒคํŠธ ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€์™€ ๋™์ผ] ์žฅ์†Œ ์ •๋ณด๋“ค => LocationContainer

      • ์ง€๋„
        • ๋„ค์ด๋ฒ„ ์ง€๋„ API
        • ์žฅ์†Œ์— ๋Œ€ํ•œ ์œ„์น˜๋ฅผ ์ง€๋„๋กœ ํ‘œ์‹œ
      • [ํ…์ŠคํŠธ] ์žฅ์†Œ => Label
      • [ํ…์ŠคํŠธ] ์žฅ์†Œ ํƒ€์ดํ‹€ => Place
        • ํ˜ธ์ŠคํŠธ๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ ๋Œ€๋กœ ํ‘œ์‹œ
      • [ํ…์ŠคํŠธ] ์žฅ์†Œ์— ๋Œ€ํ•œ ์ƒ์„ธ ์ฃผ์†Œ => Address
      • [ํ…์ŠคํŠธ] ์žฅ์†Œ์— ๋Œ€ํ•œ ์„ค๋ช… => Desc
        • ํ˜ธ์ŠคํŠธ๊ฐ€ ์ž‘์„ฑํ•˜๋ฉด ํ‘œ์‹œ ๋˜๋Š” ๋ฏธํ‘œ์‹œ

์ด๋ฒคํŠธ ์ฐธ์—ฌ (ํ‹ฐ์ผ“ ๊ตฌ์ž… ๋ˆŒ๋ €์„ ๋•Œ) - ใ……ใ„ท

  • ์„ ํƒ์™„๋ฃŒ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ

    • ๋“ฑ๋กํ•˜๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™
  • [Container] ํ‹ฐ์ผ“ ์ •๋ณด ํ‘œ์‹œ ์ปจํ…Œ์ด๋„ˆ => TicketInfoContainer

    • ์ฒดํฌ๋ฐ•์Šค์— ์ฒดํฌ๊ฐ€ ๋˜๋ฉด ์ƒ‰์ƒ์ด ๋ฐ”๋€๋‹ค.
    • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์ด๋ฆ„ => Name
    • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๊ฐ€๊ฒฉ => Price
    • [์ฒดํฌ๋ฐ•์Šค] ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค => ChkBox
    • [์ปจํ…Œ์ด๋„ˆ] ํ‹ฐ์ผ“ ๋‚จ์€ ์ˆ˜๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ => LeftTicketCntContainer
      • [์•„์ด์ฝ˜] ํ‹ฐ์ผ“ ์•„์ด์ฝ˜ => Icon
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ๋‚จ์€ ์ˆ˜๋Ÿ‰ => LeftTicketCnt
  • [์ปจํ…Œ์ด๋„ˆ] ํ‹ฐ์ผ“ ์•ฝ๊ด€ ๋™์˜ ์ปจํ…Œ์ด๋„ˆ => TicketTermContainer

    • [์ฒดํฌ๋ฐ•์Šค] ๋™์˜ ์ฒดํฌ๋ฐ•์Šค => TermChkBox
    • [ํ…์ŠคํŠธ] ์•ฝ๊ด€ ๋™์˜ ๋ฌธ๊ตฌ => TermContent
      • ๋งํฌ๋Š” ์—†์Œ
  • [๋ฒ„ํŠผ] ์„ ํƒ์™„๋ฃŒ ๋ฒ„ํŠผ => SubmitBtn

    • ํด๋ฆญ ์‹œ "์ด๋ฒคํŠธ ์ฐธ์—ฌ - ๋“ฑ๋กํ•˜๊ธฐ" ํŽ˜์ด์ง€๋กœ ์ด๋™

์ด๋ฒคํŠธ ์ฐธ์—ฌ - 2. ๋“ฑ๋กํ•˜๊ธฐ - ใ……ใ„ท

  • [์ปจํ…Œ์ด๋„ˆ] ๋ฐœ๊ธ‰๋  ํ‹ฐ์ผ“๋“ค์„ ํ‘œ์‹œํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ => TicketContainer

    • ๋ฐœ๊ธ‰๋  ํ•˜๋‚˜ ์ด์ƒ์˜ ํ‹ฐ์ผ“๋“ค์ด ์œ„์—์„œ ์•„๋ž˜๋กœ ํ‘œ์‹œ๋˜๋ฉฐ ์Šคํฌ๋กค
    • [์ปจํ…Œ์ด๋„ˆ] ๋ฐœ๊ธ‰๋  ํ‹ฐ์ผ“ ํ‘œ์‹œ ์ปจํ…Œ์ด๋„ˆ => RecipeContainer
      • [ํ…์ŠคํŠธ] ํ‹ฐ์ผ“ ์ด๋ฆ„ => Name
      • [๊ตฌ๋ถ„์„ ] ์ œ๋ชฉ ๊ตฌ๋ถ„์„  => DottedDivider
      • [ํ…์ŠคํŠธ] ๊ฐ€๊ฒฉ => Price
      • [์ปจํ…Œ์ด๋„ˆ] ํ‹ฐ์ผ“ ์ƒ์„ธ์ •๋ณด => Detail
        • [๊ทธ๋ฆฌ๋“œ] ์ƒ์„ธ์ •๋ณด ๊ทธ๋ฆฌ๋“œ => DetailGrid
          • [์•„์ด์ฝ˜] ๋‚ด์šฉ์— ๋”ฐ๋ฅธ ์•„์ด์ฝ˜ => Icon
          • [ํ…์ŠคํŠธ] ๋‚ด์šฉ => Content
      • [์ปจํ…Œ์ด๋„ˆ] ๊ฒฐ์ œ ๋‚ด์šฉ => PriceResultContainer
        • [ํ…์ŠคํŠธ] ๊ธˆ์•ก ์•ˆ๋‚ด ๋ฌธ๊ตฌ => Guide
        • [ํ…์ŠคํŠธ] ์ˆซ์ž๋กœ ํ‘œ์‹œ๋œ ๊ธˆ์•ก => Price
      • [ํ…์ŠคํŠธ] ๋ฌด๋ฃŒ ํ‹ฐ์ผ“ ์•ˆ๋‚ด ๋ฌธ๊ตฌ => Desc
        • ๋ฌด๋ฃŒ ํ‹ฐ์ผ“์ผ ๊ฒฝ์šฐ์—๋งŒ ํ‘œ์‹œ
      • [๊ตฌ๋ถ„์„ ] ๊ฒฐ์ œ ์ˆ˜๋‹จ๊ณผ์˜ ๊ตฌ๋ถ„ => SolidDivder
  • [๋ฒ„ํŠผ] ์™„๋ฃŒ ๋ฒ„ํŠผ => SubmitBtn

    • ๋ฌด๋ฃŒ ํ‹ฐ์ผ“์ธ ๊ฒฝ์šฐ์—๋Š” '๋“ฑ๋ก ์™„๋ฃŒ', ์œ ๋ฃŒ ํ‹ฐ์ผ“์ธ ๊ฒฝ์šฐ์—๋Š” 'ํ‹ฐ์ผ“ ๊ตฌ์ž…'์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค.
    • ํด๋ฆญ ์‹œ "๋งˆ์ดํŽ˜์ด์ง€ - ๋‚ด ํ‹ฐ์ผ“" ํŽ˜์ด์ง€๋กœ ์ด๋™