Messenger

  1. πŸ’ ν”„λ‘œμ νŠΈ μ†Œκ°œ
  2. πŸ‘‹πŸ» νŒ€μ› μ†Œκ°œ
  3. πŸ”— λ°°ν¬ 링크
  4. 🌈 λ””μžμΈ 링크
  5. πŸ“„ κΈ°λŠ₯ λͺ©λ‘ λͺ…μ„Έ
  6. πŸ’Ώ μ„€μΉ˜ 및 μ‹€ν–‰ 방법
  7. πŸ› οΈ κΈ°μˆ  μŠ€νƒ
  8. 🌲 ν”„λ‘œμ νŠΈ ꡬ쑰
  9. πŸŒͺ ν”„λ‘œμ νŠΈ 회고 링크

1. πŸ’ ν”„λ‘œμ νŠΈ μ†Œκ°œ

  • 주제 : ν”„λ‘œμ νŠΈ
  • κΈ°κ°„ : 22.02.10 ~ 22.02.12

2. πŸ‘‹πŸ» νŒ€μ› μ†Œκ°œ

κΉ€μ˜μ’… μ •λ‹€λΉˆ μ΅œμˆ˜μž„ μ΄μ†‘ν˜„
νŒ€μž₯ νŒ€μ› νŒ€μ› νŒ€μ›

3. πŸ”— λ°°ν¬ 링크

배포 링크 λ°”λ‘œκ°€κΈ°

4. 🌈 λ””μžμΈ 링크

ν”Όκ·Έλ§ˆ λ””μžμΈ λ°”λ‘œκ°€κΈ°


5. πŸ“„ κΈ°λŠ₯ λͺ©λ‘ λͺ…μ„Έ

1. κΈ°λŠ₯ λΆ„λ°°

1. 1. λΌμš°ν„° (μ˜μ’…)

  • 둜그인 인증을 κ³ λ €ν•œ λΌμš°ν„° 섀계
  • page: 둜그인, μ±„νŒ…λ°©

1. 2. 헀더 (μŠ€νƒ€μΌλ§) (μ˜μ’…)

  • 방제λͺ©, λ’€λ‘œκ°€κΈ° μ•„μ΄μ½˜, 더보기 μ•„μ΄μ½˜

1. 3. 둜그인 νŽ˜μ΄μ§€ (μˆ˜μž„)

  • μ‚¬μš©μž 이름 및 ν”„λ‘œν•„ 사진 등둝이 κ°€λŠ₯ν•œ νŽ˜μ΄μ§€
  • μ‚¬μš©μž 이름 , ν”„λ‘œν•„ 사진 λ―Έμž…λ ₯μ‹œ 둜그인 λΆˆκ°€ ( μ•ˆλ‚΄ ν† μŠ€νŠΈ )
  • μ‚¬μš©μž 이름 , ν”„λ‘œν•„ 사진 μˆ˜μ • κ°€λŠ₯

1. 4. 메세지 데이터 κ΄€λ ¨ κΈ°λŠ₯

  • λ©”μ‹œμ§€λŠ” 이름 μ˜†μ— 문자 좜λ ₯ -(μ†‘ν˜„)
  • λ©”μ‹œμ§€ λ‚΄μš©λ°•μŠ€ ( ν”„λ‘œν•„ 사진, 이름, λ‚ μ§œ ) - (μ†‘ν˜„)
  • λ©”μ‹œμ§€ λ‹΅μž₯, μ‚­μ œ λ²„νŠΌ - (λ‹€λΉˆ)
    • λ©”μ‹œμ§€ λ‚΄μš©μ— 마우슀λ₯Ό μ˜¬λ¦¬κ±°λ‚˜ λˆŒλ €μ„ λ•Œ 였λ₯Έμͺ½μ— λ‹΅μž₯, μ‚­μ œ λ²„νŠΌ λ„μš°κΈ°
    • λ©”μ‹œμ§€ μ‚­μ œ λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ λͺ¨λ‹¬ μ°½ λ„μš°κ³  데이터 전달
  • μ‚­μ œ λͺ¨λ‹¬ μ°½ - (λ‹€λΉˆ)
    • μ‚­μ œ λ©”μ‹œμ§€ ν‘œμ‹œ κΈ°λŠ₯
      • μ‚­μ œ λ©”μ‹œμ§€μ—μ„œ 10κΈ€μžκΉŒμ§€λ§Œ ν‘œμ‹œ
      • κΈ€μž 뒀에 β€˜...’ μΆ”κ°€
      • κΈ€μž μˆ˜μ™€ λ©”μ‹œμ§€λ₯Ό μž…λ ₯ν•˜λ©΄ ν•΄λ‹Ή κΈ€μž 수 만큼 자λ₯΄λŠ” Util(sliceMessage)
  • λ©”μ‹œμ§€ λ‚ μ§œ (yyyy-mm-dd hh:MM:ss) - (μ˜μ’…, μ†‘ν˜„)
  • λ¦¬λ Œλ” μ‹œ μ΅œμ‹  메세지가 보이도둝 μ„€μ •ν•˜κΈ°. - (μ˜μ’…)
    • 쑰건 1: 둜그인 μœ μ €κ°€ μƒˆλ‘œμš΄ 메세지λ₯Ό μ „μ†‘ν•œλ‹€.
    • 쑰건 2: 둜그인 μœ μ €κ°€ μ±„νŒ… 방에 μž…μž₯ν•œλ‹€.

1. 5. λŒ€ν™” λͺ©λ‘

  • λŒ€ν™” λͺ©λ‘μ€ 미리 3λͺ…이 5건의 λ©”μ‹œμ§€λ₯Ό μ£Όκ³  λ°›λŠ” λ‚΄μš©μ΄ 좜λ ₯(μ†‘ν˜„)
  • κ³Όκ±°λΆ€ν„° μ΅œμ‹  순으둜 μ •λ ¬(μ†‘ν˜„)
  • μž…λ ₯ μ°½κ³Ό λ³„κ°œλ‘œ λŒ€ν™” λͺ©λ‘λ§Œ 슀크둀 κ°€λŠ₯(μ˜μ’…)

1. 6. ν‘Έν„°(메세지 전솑 λ°•μŠ€)(μˆ˜μž„)

  • Enterν‚€ μž…λ ₯ μ‹œ 메세지 전솑, Shift+Enterν‚€ μž…λ ₯ μ‹œ 쀄 λ°”κΏˆ
  • 메세지 λ°•μŠ€μ— κ°’ μž…λ ₯ μ‹œ 전솑 λ²„νŠΌμ€ μ¦‰μ‹œ ν™œμ„±ν™”
    • 컨텐츠λ₯Ό μž…λ ₯ν•˜μ§€ μ•ŠμœΌλ©΄ 전솑 λΆˆκ°€. ( μ•ˆλ‚΄ ν† μŠ€νŠΈ )
    • μž…λ ₯λž€μ€ λ©€ν‹° 라인으둜 μž…λ ₯, λ©”μ‹œμ§€ 좜λ ₯ μ‹œ 쀄 λ°”κΏˆλ„ 같이 좜λ ₯
  • λ‹΅μž₯을 클릭 μ‹œ "μ‚¬μš©μž 이름\n" + "λ©”μ‹œμ§€ λ‚΄μš©\n" + "(νšŒμ‹ )\n" λ¬Έμžκ°€ μž…λ ₯ 창에 μžλ™μœΌλ‘œ μ‚½μž…

1. 7. μ „μ—­ μƒνƒœ μ •μ˜

Auth(펼쳐보기)
  • Auth: 둜그인 μœ μ €μ˜ 정보λ₯Ό 담은 μƒνƒœ
interface Auth {
  userId: number | null;
  userName: string | null;
  avatarURL: string;
}
Users(펼쳐보기)
  • Users: μ±„νŒ…λ°©μ— μ°Έμ—¬ν•œ μœ μ € 정보λ₯Ό 담은 μƒνƒœ
interface User {
  userId: number;
  userName: string;
  avatarURL: string;
}

type UserS = User[];
Messages(펼쳐보기)
  • messages: μ±„νŒ…λ°©μ—μ„œ λŒ€ν™”ν•œ 메세지λ₯Ό 담은 μƒνƒœ
interface Message {
  id: number;
  createAt: number;
  userId: number;
  message: string;
}

type Messages = Message[];

1. 8. Data 섀계 (μ˜μ’…)

  • μ€‘λ³΅λœ 데이터 관리λ₯Ό μ΅œμ†Œν™”ν•œ λͺ¨λΈ ν˜•μ‹μœΌλ‘œ μž‘μ„±
  • μž₯점: 데이터 μˆ˜μ • κΈ°λŠ₯μ—μ„œ 관리가 μƒλ‹Ήνžˆ νŽΈν•¨, 단점: 데이터 μ‚¬μš©μžκ°€ κ°€κ³΅ν•΄μ•Όν•˜λŠ” μˆ˜κ³ κ°€ ν•„μš”
μœ μ € 데이터(펼쳐보기)
// users
const users = [
  {
    userId: 1,
    userName: 'μž„μˆ˜',
    avatarURL: `${process.env.REACT_APP_ASSET_PATH}/defaultUserImg.png`,
  },
  {
    userId: 2,
    userName: 'μ†‘ν˜„',
    avatarURL: `${process.env.REACT_APP_ASSET_PATH}/defaultUserImg.png`,
  },
  {
    userId: 3,
    userName: 'λΉˆλ‹€',
    avatarURL: `${process.env.REACT_APP_ASSET_PATH}/defaultUserImg.png`,
  },
];
메세지 데이터(펼쳐보기)
// messages

const messages = [
  {
    id: 1000,
    createAt: 1644492766000,
    userId: 1,
    message: 'μ•ˆλ…•~',
  },
  {
    id: 1001,
    createAt: 1644492996000,
    userId: 2,
    message: '응 μž„μˆ˜μ•Ό~',
  },
  {
    id: 1002,
    createAt: 1644494116000,
    userId: 3,
    message: 'μ•— κΈˆμ§€!',
  },
  {
    id: 1003,
    createAt: 1644494000000,
    userId: 1,
    message: 'λ„ˆλ¬΄ν•΄ γ… γ… ',
  },
  {
    id: 1004,
    createAt: 1644620008989,
    userId: 3,
    message: 'πŸ˜‹',
  },
];

6. πŸ’Ώ μ„€μΉ˜ 및 μ‹€ν–‰ 방법

Project Clone

$ git clone https://github.com/wantedPreOnboarding/19_04th_messenger

Project Setup

$ yarn install

Project Start For Development

$ yarn start

7. πŸ› οΈ κΈ°μˆ  μŠ€νƒ


8. 🌲 ν”„λ‘œμ νŠΈ ꡬ쑰

src
β”œβ”€β”€ components
β”‚   β”œβ”€β”€ ChatList
β”‚   β”œβ”€β”€ DelModal
β”‚   β”œβ”€β”€ DelReplyBtn
β”‚   β”œβ”€β”€ Header
β”‚   β”œβ”€β”€ InputBox
β”‚   β”œβ”€β”€ NoticeToast
β”‚   └── Portal
β”œβ”€β”€ data
β”œβ”€β”€ hooks
β”œβ”€β”€ pages
β”‚   β”œβ”€β”€ ChatRoom
β”‚   └── Login
β”œβ”€β”€ router
β”œβ”€β”€ store
β”‚   └── slices
β”œβ”€β”€ styles
β”œβ”€β”€ types
└── utils

9. πŸŒͺ ν”„λ‘œμ νŠΈ 회고 링크

ν”„λ‘œμ νŠΈ 회κ³