Task Detail List - programmers-kdt-full-stack-3rd/live-chat GitHub Wiki

๋ฐฑ์—”๋“œ(BE) ์ƒ์„ธ Task ๋ชฉ๋ก

1. ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ

  1. ํšŒ์›๊ฐ€์ž… API ๊ตฌํ˜„

    • POST /api/users/register ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
    • ์š”์ฒญ ๋ฐ”๋””์˜ ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฆ„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ์ด๋ฉ”์ผ ์ธ์ฆ ํ† ํฐ ๊ฒ€์‚ฌ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ ์ฒ˜๋ฆฌ
    • ์‚ฌ์šฉ์ž ์ •๋ณด DB์— ์ €์žฅ ๋ฐ ์‘๋‹ต
  2. ๋กœ๊ทธ์ธ API ๊ตฌํ˜„

    • POST /api/users/login ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
    • ์š”์ฒญ ๋ฐ”๋”” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ์‚ฌ์šฉ์ž ์ธ์ฆ
    • JWT ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์‘๋‹ต

2. ๋ฉ”์ผ ์ธ์ฆ

  1. ์ธ์ฆ ๋ฒˆํ˜ธ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ API ๊ตฌํ˜„

    • POST, PUT, DELETE /api/auth/email/verification ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
    • ์š”์ฒญ ๋ฐ”๋””์˜ ์ด๋ฉ”์ผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • PUT, DELETE ์ด๋ฉ”์ผ ์ธ์ฆ ํ† ํฐ ๊ฒ€์‚ฌ
    • POST, PUT ๋žœ๋ค ์ธ์ฆ๋ฒˆํ˜ธ(4์ž๋ฆฌ) ์ƒ์„ฑ ๋ฐ ํ•ด์‹ฑ ์ฒ˜๋ฆฌ
    • DB์—์„œ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ
    • JWT ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์‘๋‹ต
  2. ์ธ์ฆ ๋ฉ”์ผ ๋ฐœ์†ก API ๊ตฌํ˜„

    • POST /api/auth/email/send-verification ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
    • ์š”์ฒญ ๋ฐ”๋””์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ์ด๋ฉ”์ผ ์ธ์ฆ ํ† ํฐ ๊ฒ€์‚ฌ
    • ์ธ์ฆ ๋ฒˆํ˜ธ ๋ณตํ˜ธํ™”
    • Nodemailer๋กœ ์ธ์ฆ ์ด๋ฉ”์ผ ๋ฐœ์†ก
    • JWT ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์‘๋‹ต
  3. ์ธ์ฆ ๋ฒˆํ˜ธ ๊ฒ€์‚ฌ API ๊ตฌํ˜„

    • POST /api/auth/email/verify ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
    • ์š”์ฒญ ๋ฐ”๋””์˜ ์ธ์ฆ๋ฒˆํ˜ธ์™€ ์ด๋ฉ”์ผ ์ฃผ์†Œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ์ด๋ฉ”์ผ ์ธ์ฆ ํ† ํฐ ๊ฒ€์‚ฌ
    • ๋ฉ”์ผ ์ธ์ฆ ๋ฒˆํ˜ธ ๊ฒ€์‚ฌ
    • JWT ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์‘๋‹ต

3. ์ฑ„ํŒ…๋ฐฉ ๊ด€๋ฆฌ API ๊ตฌํ˜„

  • POST, GET, PUT, DELETE /api/chatrooms/:id ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
  • ์š”์ฒญ ๋ฐ”๋”” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
  • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ ๋กœ์ง
  • ์‘๋‹ต์œผ๋กœ ์š”์ฒญ๋œ ์ฑ„ํŒ…๋ฐฉ ์ •๋ณด ๋ฐ˜ํ™˜

4. ์ฑ„ํŒ…๋ฐฉ ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ API ๊ตฌํ˜„

  • GET /api/chatroom/users/:room ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ
  • :room์„ ํ†ตํ•ด ํŠน์ • ์ฑ„ํŒ…๋ฐฉ์˜ ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ
  • ์‘๋‹ต์œผ๋กœ ์‚ฌ์šฉ์ž ๋ชฉ๋ก ๋ฐ˜ํ™˜

5. ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ธฐ๋Šฅ

  • ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ
  • ์ฑ„ํŒ…๋ฐฉ ์ž…์žฅ ๋ฐ ํ‡ด์žฅ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
  • ๋ฉ”์„ธ์ง€ ์†ก์ˆ˜์‹  ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
  • ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ

ํ”„๋ก ํŠธ์—”๋“œ(FE) ์ƒ์„ธ Task ๋ชฉ๋ก

1. ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ

  1. ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ตฌํ˜„

    • ํšŒ์›๊ฐ€์ž… ํผ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ
    • ์ž…๋ ฅ ํ•„๋“œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ํšŒ์›๊ฐ€์ž… API ํ˜ธ์ถœ ๋ฐ ์‘๋‹ต ์ฒ˜๋ฆฌ
    • ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต ์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  2. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„

    • ๋กœ๊ทธ์ธ ํผ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ
    • ์ž…๋ ฅ ํ•„๋“œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ๋กœ๊ทธ์ธ API ํ˜ธ์ถœ ๋ฐ ์‘๋‹ต ์ฒ˜๋ฆฌ
    • ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  3. JWT ํ† ํฐ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ

    • ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ JWT ํ† ํฐ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ
    • ์š”์ฒญ ์‹œ JWT ํ† ํฐ์„ ํฌํ•จํ•˜์—ฌ API ํ˜ธ์ถœ

2. ์ฑ„ํŒ…๋ฐฉ ๊ด€๋ฆฌ

  1. ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ

    • UI ๊ตฌ์„ฑ
      • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ ํผ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ
      • ์ด๋ฆ„ ์ž…๋ ฅ ํ•„๋“œ ๋ฐ ์ œ์ถœ ๋ฒ„ํŠผ ์ƒ์„ฑ
    • ์ƒํƒœ ๊ด€๋ฆฌ
      • ์ฑ„ํŒ…๋ฐฉ ์ด๋ฆ„ ์ƒํƒœ ๊ด€๋ฆฌ
      • ์ž…๋ ฅ ํ•„๋“œ ๊ฐ’ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
    • API ํ˜ธ์ถœ
      • POST /api/chatrooms ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ
      • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ ํ›„ ์‘๋‹ต ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
  2. ์ฑ„ํŒ…๋ฐฉ ์กฐํšŒ

    • UI ๊ตฌ์„ฑ
      • ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ
      • ์ฑ„ํŒ…๋ฐฉ ํ•ญ๋ชฉ์„ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œ์‹œ
    • ์ƒํƒœ ๊ด€๋ฆฌ
      • ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์ƒํƒœ ๊ด€๋ฆฌ
      • ์ปดํฌ๋„ŒํŠธ ๋งˆ์šดํŠธ ์‹œ API ํ˜ธ์ถœํ•˜์—ฌ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ
    • API ํ˜ธ์ถœ
      • GET /api/chatrooms ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ
      • ์‘๋‹ต์œผ๋กœ ๋ฐ›์€ ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์ƒํƒœ ์—…๋ฐ์ดํŠธ
  3. ์ฑ„ํŒ…๋ฐฉ ์ˆ˜์ •

    • UI ๊ตฌ์„ฑ
      • ์ฑ„ํŒ…๋ฐฉ ์ˆ˜์ • ํผ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ
      • ์ด๋ฆ„ ์ž…๋ ฅ ํ•„๋“œ ๋ฐ ์ˆ˜์ • ๋ฒ„ํŠผ ์ƒ์„ฑ
    • ์ƒํƒœ ๊ด€๋ฆฌ
      • ์„ ํƒํ•œ ์ฑ„ํŒ…๋ฐฉ ์ •๋ณด ์ƒํƒœ ๊ด€๋ฆฌ
      • ์ž…๋ ฅ ํ•„๋“œ ๊ฐ’ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
    • API ํ˜ธ์ถœ
      • PUT /api/chatrooms/:id ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ
      • ์ฑ„ํŒ…๋ฐฉ ์ˆ˜์ • ํ›„ ์‘๋‹ต ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
  4. ์ฑ„ํŒ…๋ฐฉ ์‚ญ์ œ

    • UI ๊ตฌ์„ฑ
      • ์ฑ„ํŒ…๋ฐฉ ํ•ญ๋ชฉ์— ์‚ญ์ œ ๋ฒ„ํŠผ ์ถ”๊ฐ€
    • ์ƒํƒœ ๊ด€๋ฆฌ
      • ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์ƒํƒœ ์—…๋ฐ์ดํŠธ
    • API ํ˜ธ์ถœ
      • DELETE /api/chatrooms/:id ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ
      • ์ฑ„ํŒ…๋ฐฉ ์‚ญ์ œ ํ›„ ์‘๋‹ต ์ฒ˜๋ฆฌ ๋ฐ ์ƒํƒœ ์—…๋ฐ์ดํŠธ

3. ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ธฐ๋Šฅ

  1. ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ

    • UI ๊ตฌ์„ฑ
      • ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ์ž…๋ ฅ ํผ ๋ฐ ์ „์†ก ๋ฒ„ํŠผ ์ƒ์„ฑ
      • ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ ์˜์—ญ ์ƒ์„ฑ
    • ์ƒํƒœ ๊ด€๋ฆฌ
      • ๋ฉ”์‹œ์ง€ ์ƒํƒœ ๋ฐ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ƒํƒœ ๊ด€๋ฆฌ
      • ์†Œ์ผ“ ์—ฐ๊ฒฐ ์ƒํƒœ ๊ด€๋ฆฌ
    • Socket.io ํด๋ผ์ด์–ธํŠธ ์ดˆ๊ธฐํ™”
      • ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ ์„ค์ • ๋ฐ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก
  2. ์ฑ„ํŒ…๋ฐฉ ์ž…์žฅ ๋ฐ ํ‡ด์žฅ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

    • Socket.io ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
      • JoinRoom ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์„œ๋ฒ„๋กœ ์ „์†ก
      • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ message ์ด๋ฒคํŠธ ์ˆ˜์‹  ์‹œ ๋ฉ”์‹œ์ง€ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
  3. ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹  ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

    • Socket.io ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
      • chatMessage ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์„œ๋ฒ„๋กœ ์ „์†ก
      • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ message ์ด๋ฒคํŠธ ์ˆ˜์‹  ์‹œ ๋ฉ”์‹œ์ง€ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
  4. ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ

    • Socket.io ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
      • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ roomUsers ์ด๋ฒคํŠธ ์ˆ˜์‹  ์‹œ ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์ƒํƒœ ์—…๋ฐ์ดํŠธ