Skip to content

Codeit-FE3-Part3-team6-Taskify/Taskify

Repository files navigation

βœ¨ν”„λ‘œμ νŠΈ μ†Œκ°œ

🚒 Deploy

https://taskify-roan-five.vercel.app/?_vercel_share=ndjiOAde48mH4oNPBcm13hNZM0XWQinW

β˜€οΈ Project Topic

우리의 μ‹œκ°„μ„ 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄, λ‹€μ–‘ν•œ 일정 및 μ‹œκ°„ 관리 κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” 일정관리 ν”Œλž«νΌ

πŸ‘¨β€πŸ’» Members

Codeit FE Sprint 3κΈ° - 6νŒ€

Name Github Name Github
심은주 @nyaknya μ‘°μ˜ˆμ§„ @yejiniee
노진석 @SiWooJinSeok μ†‘μƒν›ˆ @Song-Sang

⏲️ Duration

2024.03.08(λͺ©) ~ 03.25(μ›”)

πŸ› οΈ Skills & Tools

Next.js JavaScript Figma GitHub Visual Studio Code

πŸ“š Library

NPM NodeJS Redux Toolkit Tailwind CSS ESLint Day.js React Datepicker date-fns React Select

πŸ’¬ Community

Discord



✨둜컬 ν™˜κ²½ - μ„€μΉ˜ 및 μ‹€ν–‰ κ°€μ΄λ“œ

1. Getting the sources

git clone https://github.com/Codeit-FE3-part3-team6-Taskify/Taskify.git
cd Taskify

2. Install packages

npm install

3. Run development server

npm run dev


✨ Feature

0. 헀더, μ‚¬μ΄λ“œλ°”

  • 헀더(곡용 κΈ°λŠ₯)
    • μ‚¬μš©μž ν”„λ‘œν•„(λ‹‰λ„€μž„, μ•„μ΄μ½˜) ν‘œμ‹œν•©λ‹ˆλ‹€.
    • λ“œλ‘­λ‹€μš΄μœΌλ‘œ λ‘œκ·Έμ•„μ›ƒ, 계정 관리, λ‚΄ λŒ€μ‹œλ³΄λ“œλ‘œ 이동 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • 헀더(λΆ€κ°€ κΈ°λŠ₯)
    • ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ˜ 맴버 ꡬ성원을 κ°„λ‹¨ν•œ UI둜 μ•Œλ €μ€λ‹ˆλ‹€.
    • <μ΄ˆλŒ€ν•˜κΈ° λ²„νŠΌ>을 ν†΅ν•œ λŒ€μ‹œλ³΄λ“œ μ΄ˆλŒ€ν•˜κΈ° λͺ¨λ‹¬μ„ λ„μšΈμˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
      • 타 μ‚¬μš©μžμ˜ 이메일(ν”Œλž«νΌ 아이디)λ₯Ό 톡해 λ‚΄ λŒ€μ‹œλ³΄λ“œμ— μ΄ˆλŒ€ μš”μ²­μ„ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.
      • 인풋 μš”μ†Œλ₯Ό μž…λ ₯ν•˜μ§€ μ•ŠμœΌλ©΄ <μ΄ˆλŒ€ λ²„νŠΌ>은 λΉ„ν™œμ„±ν™” λ©λ‹ˆλ‹€.
    • μ‚¬μš©μžκ°€ λŒ€μ‹œλ³΄λ“œ κ΄€λ¦¬μžλΌλ©΄ <관리> λ²„νŠΌμ„ 톡해 ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œ 관리 νŽ˜μ΄μ§€λ‘œ 이동할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μ΄λ“œλ°”
    • 둜고 λ²„νŠΌμ„ μ΄μš©ν•΄ λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
    • μ‚¬μš©μžμ˜ ν˜„μž¬ λŒ€μ‹œλ³΄λ“œ λͺ©λ‘μ„ λ³΄μ—¬μ€λ‹ˆλ‹€.(νŽ˜μ΄μ§€λ„€μ΄μ…˜)
    • <+ λ²„νŠΌ>을 톡해 'μƒˆλ‘œμš΄ λŒ€μ‹œλ³΄λ“œ 생성' λͺ¨λ‹¬μ„ λ„μ›λ‹ˆλ‹€.

μ΄ˆλŒ€ν•˜κΈ°

1. λžœλ”© νŽ˜μ΄μ§€

  • 둜그인이 λ˜μ–΄μžˆλ‹€λ©΄ 'λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ' νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
  • 둜그인이 λ˜μ–΄μžˆμ§€ μ•Šλ‹€λ©΄ 상단에 <둜그인, νšŒμ›κ°€μž… λ²„νŠΌ>을 톡해 ν•΄λ‹Ή νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

λžœλ”©

2. 둜그인 νŽ˜μ΄μ§€

  • <둜고 λ²„νŠΌ>은 λžœλ”© νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
  • <νšŒμ›κ°€μž… λ²„νŠΌ>은 νšŒμ›κ°€μž… νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
  • μœ νš¨ν•œ 이메일과, λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜κ³  <둜그인 λ²„νŠΌ>을 ν΄λ¦­ν•˜λ©΄ 'λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ'νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
  • 각 인풋 μš”μ†ŒλŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ 정보가 μž…λ ₯λ˜μ—ˆμ„μ‹œ 경고창을 λ³΄μ—¬μ€λ‹ˆλ‹€.
  • λΉ„λ°€λ²ˆν˜ΈλŠ” ν•΄λ‹Ή μΈν’‹μ˜ μ•„μ΄μ½˜μ„ 톡해 μˆ¨κΈ°κ±°λ‚˜ λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 둜그인 μ„±κ³΅μ‹œ μ•‘μ„ΈμŠ€ 토큰을 λ°œκΈ‰ν•©λ‹ˆλ‹€.

둜그인

3. νšŒμ›κ°€μž… νŽ˜μ΄μ§€

  • <둜고 λ²„νŠΌ>은 λžœλ”© νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
  • <둜그인 λ²„νŠΌ>은 νšŒμ›κ°€μž… νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
  • 각 인풋 μš”μ†ŒλŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ 정보가 μž…λ ₯λ˜μ—ˆμ„μ‹œ 경고창을 λ³΄μ—¬μ€λ‹ˆλ‹€.
  • λͺ¨λ“  인풋 μš”μ†Œκ°€ μ±„μ›Œμ§€κ³  경고창이 μ—†λ‹€λ©΄ <κ°€μž…ν•˜κΈ° λ²„νŠΌ>이 ν™œμ„±ν™” λ©λ‹ˆλ‹€.
  • 쀑볡 이메일 κ°€μž… μ‹œλ„λŠ” λͺ¨λ‹¬μ°½μ„ 톡해 κ±°μ ˆλ©λ‹ˆλ‹€.

νšŒμ›κ°€μž…

4. λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€ (헀더, μ‚¬μ΄λ“œλ°”)

  • μ•‘μ„ΈμŠ€ 토큰이 ν™œμ„±ν™” λ˜μ–΄μžˆλ‹€λ©΄, λžœλ”© νŽ˜μ΄μ§€λ‘œ 이동 κ²½λ‘œλŠ” ν•΄λ‹Ή νŽ˜μ΄μ§€λ‘œ λŒ€μ²΄λ©λ‹ˆλ‹€.
  • 'λŒ€μ‹œλ³΄λ“œ λͺ©λ‘' μ˜μ—­μ—μ„œ μ†Œμ†λœ λŒ€μ‹œλ³΄λ“œ λͺ©λ‘μ„ ν™•μΈν•˜κ³ , ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œλ‘œ 이동할 수 μžˆμŠ΅λ‹ˆλ‹€.(νŽ˜μ΄μ§€λ„€μ΄μ…˜)
  • <μƒˆλ‘œμš΄ λŒ€μ‹œλ³΄λ“œ λ²„νŠΌ>을 톡해 'λŒ€μ‹œλ³΄λ“œλ₯Ό 생성'λͺ¨λ‹¬μ„ λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 생성할 λŒ€μ‹œλ³΄λ“œ 이름과 μ•„μ΄μ½˜ 컬러λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
    • 두 μš”μ†Œκ°€ λͺ¨λ‘ μΆ©μ‘±λ˜μ§€ μ•Šμ•˜μ„ 경우 <생성 λ²„νŠΌ>은 λΉ„ν™œμ„±ν™” λ©λ‹ˆλ‹€.
  • λ‚΄κ°€ μƒμ„±ν•œ λŒ€μ‹œλ³΄λ“œλŠ” 'μ™•κ΄€ μ•„μ΄μ½˜'을 톡해 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 'μ΄ˆλŒ€λ°›μ€ λŒ€μ‹œλ³΄λ“œ' μ˜μ—­μ„ 톡해 타인이 μƒμ„±ν•œ λŒ€μ‹œλ³΄λ“œμ˜ μ΄ˆλŒ€μš”μ²­μ— μ‘ν•˜κ±°λ‚˜ κ±°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.(λ¬΄ν•œμŠ€ν¬λ‘€)

λ‚˜μ˜λŒ€μ‹œλ³΄λ“œ

5. λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€ (헀더, μ‚¬μ΄λ“œλ°”)

  • μƒμ„±λœ λŒ€μ‹œλ³΄λ“œλŠ” κΈ°λ³Έ 'To do', 'On progress', 'Done' μ»¬λŸΌμ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.
  • μ»¬λŸΌμ€ <μƒˆλ‘œμš΄ 컬럼 μΆ”κ°€νžˆκΈ° λ²„νŠΌ>을 톡해 'μƒˆ 컬럼 생성' λͺ¨λ‹¬μ„ λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • μƒˆλ‘œμš΄ μ»¬λŸΌμ„ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 인풋이 λΉ„μ–΄μžˆλ‹€λ©΄ <생성 λ²„νŠΌ>은 λΉ„ν™œμ„±ν™” λ©λ‹ˆλ‹€.
  • 각 컬럼의 제λͺ© μ˜† μ•„μ΄μ½˜μ„ 톡해 μ‚­μ œ 및 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μƒμ„±λœ μΉΌλŸΌμ—μ„œ <+ λ²„νŠΌ>을 톡해 'ν•  일 생성' λͺ¨λ‹¬μ„ λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ‹΄λ‹Ήμž, 제λͺ©, μ„€λͺ…, 마감일, νƒœκ·Έ, 이미지λ₯Ό μ§€μ •ν•΄μ„œ ν•΄λ‹Ή μ»¬λŸΌμ— 'ν•  일 μΉ΄λ“œ'λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
    • ν•„μˆ˜ ν•­λͺ©μ„ μž…λ ₯ν•˜μ§€ μ•ŠμœΌλ©΄ <생성 λ²„νŠΌ>은 λΉ„ν™œμ„±ν™” λ©λ‹ˆλ‹€
  • 'ν•  일 μΉ΄λ“œ'λ₯Ό μ„ νƒν•˜λ©΄ ν•΄λ‹Ή 'ν•  일 μΉ΄λ“œ'λͺ¨λ‹¬μ„ λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ§Œλ“€μ–΄μ§„ μΉ΄λ“œ 정보λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.
    • ν•΄λ‹Ή μΉ΄λ“œμ— λŒ€ν•œ λŒ“κΈ€ μž‘μ„±μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€, λ‚΄κ°€ μž‘μ„±ν•œ λŒ“κΈ€μ€ μˆ˜μ • 및 μ‚­μ œκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.(λ¬΄ν•œμŠ€ν¬λ‘€)
    • <μΌ€λ°₯ λ²„νŠΌ>을 톡해 ν•΄λ‹Ή ν•  일의 μ‚­μ œ 및 'ν•  일 μˆ˜μ •'λͺ¨λ‹¬μ„ λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
      • ν•΄λ‹Ή μΉ΄λ“œμ˜ μƒνƒœ, λ‹΄μž₯자, 제λͺ©, μ„€λͺ…, 마감일, νƒœκ·Έ, 이미지 λ“± μ„ΈλΆ€ 정보λ₯Ό μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
      • ν•„μˆ˜ ν•­λͺ©μ„ μž…λ ₯ν•˜μ§€ μ•ŠμœΌλ©΄ <μˆ˜μ • λ²„νŠΌ>은 λΉ„ν™œμ„±ν™” λ©λ‹ˆλ‹€
  • μƒμ„±λœ 'ν•  일 μΉ΄λ“œ'듀은 μƒμ„±λœ 컬럼 사이λ₯Ό λ“œλž˜κ·Έ μ•€ λ“œλ‘­μœΌλ‘œ 이동 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ»¬λŸΌμƒμ„± 할일생성
ν• μΌμˆ˜μ •

6. λŒ€μ‹œλ³΄λ“œ 관리 νŽ˜μ΄μ§€ (헀더, μ‚¬μ΄λ“œλ°”)

  • λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€μ—μ„œ μƒμ„±μžκ°€ 본인인 경우, ν—€λ”μ˜ <관리> λ²„νŠΌμ„ 톡해 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ˜ 이름 및 컬러 μ•„μ΄μ½˜ 색상을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ˜ ν˜„μž¬ ꡬ성원을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€, <μ‚­μ œ λ²„νŠΌ>을 톡해 κΈ°μ‘΄ ꡬ성원을 μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. (νŽ˜μ΄μ§€λ„€μ΄μ…˜)
  • ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ˜ ν˜„μž¬ μ΄ˆλŒ€ λͺ©λ‘μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. (νŽ˜μ΄μ§€λ„€μ΄μ…˜)
  • <λŒ€μ‹œλ³΄λ“œ μ‚­μ œν•˜κΈ° λ²„νŠΌ>을 톡해 ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ„ 전체 μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ€μ‹œλ³΄λ“œκ΄€λ¦¬

7. 계정 관리 νŽ˜μ΄μ§€ (헀더, μ‚¬μ΄λ“œλ°”)

  • ν—€λ”μ˜ <ν”„λ‘œν•„ λ²„νŠΌ> λ“œλ‘­λ‹€μš΄μ˜ <λ‚΄ 정보 λ²„νŠΌ> 클릭을 톡해 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν”„λ‘œν•„ 이미지와, λ‹‰λ„€μž„μ„ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λΉ„λ°€λ²ˆν˜Έλ₯Ό λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • λͺ¨λ“  인풋 μš”μ†Œκ°€ μ±„μ›Œμ§€κ³  경고창이 μ—†λ‹€λ©΄ <λ³€κ²½ λ²„νŠΌ>이 ν™œμ„±ν™” λ©λ‹ˆλ‹€.

계정관리

✨ Project Architecture

πŸ” User Flow

2024-03-24_185307

πŸ“ Folder structure

β”œβ”€β”€ public
β”‚   └── images
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ components
β”‚   β”‚   β”œβ”€β”€common
β”‚   β”‚   β”œβ”€β”€Dashboard
β”‚   β”‚   β”œβ”€β”€MyDashboard
β”‚   β”‚   β”œβ”€β”€MyPage
β”‚   β”‚        .
β”‚   β”‚        .
β”‚   β”‚        .
β”‚   β”œβ”€β”€ constnsts
β”‚   β”œβ”€β”€ features
β”‚   β”œβ”€β”€  hooks
β”‚   β”œβ”€β”€  pages
β”‚   β”œβ”€β”€ styles
β”‚   └── utils
└── run.sh


✨ Problem & Solution

⚠️ 이전 ν”„λ‘œμ νŠΈμ— λΉ„ν•΄ νŽ˜μ΄μ§€ 기반 κ°œλ°œμ„ ν•˜κΈ° μ‰½μ§€μ•Šμ€ ꡬ성이고, λ‹€μ–‘ν•˜κ²Œ μž¬μ‚¬μš© ν•  수 μžˆλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ λ§Žμ•˜λ‹€λŠ” 문제

βœ… μ΄ˆκΈ°λΆ€ν„° μž¬μ‚¬μš© κ°€λŠ₯성이 λ³΄μ΄λŠ” μ»΄ν¬λ„ŒνŠΈλŠ” μ΅œλŒ€ν•œ 뢄리.
βœ… κ°€λŠ₯ν•˜λ©΄ 단일 μ±…μž„ 원칙을 지ν–₯ν•˜κ³ , μœ μ—°ν•˜κ²Œ μ„€κ³„ν•˜λ €κ³  λ…Έλ ₯. (ex. λ‚΄λΆ€ μš”μ†Œλ₯Ό children으둜 λ°›μ•„ μ‚¬μš©)
βœ… νŽ˜μ΄μ§€ λ‹¨μœ„μ— 크게 ꡬ애받지 μ•Šκ³  κΈ°λŠ₯ 주도 개발 ν˜•νƒœλ‘œ ν”„λ‘œμ νŠΈ 진행.


⚠️ ν”„λ‘œμ νŠΈμ— λͺ¨λ‹¬ κ΄€λ ¨ 둜직이 많고, λ™μΌν•œ μƒνƒœ 데이터λ₯Ό μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ‚¬μš©ν•΄μ•Όν•˜λŠ” 둜직이 λ§Žμ•˜λ˜ 문제

βœ… μ „μ—­μœΌλ‘œ μƒνƒœ 관리λ₯Ό ν•΄μ•Όκ² λ‹€λŠ” 생각. (context API, Redux, Redux-Toolkit, recoil λ“±)
βœ… ν¬μ§€μ•Šμ€ 규λͺ¨μ˜ ν”„λ‘œμ νŠΈλΌλŠ” 점, ν”„λ‘œμ νŠΈ κΈ°κ°„κ³Ό λŸ¬λ‹ 컀브λ₯Ό κ³ λ €ν–ˆμ„ λ•Œ 비ꡐ적 직관적인 ν•™μŠ΅κ³Ό μ‚¬μš©μ„ ν•  수 μžˆλ‹€λŠ” μƒκ°μ—μ„œ Redux-Toolkit 라이브러리 μ‚¬μš©.


⚠️ κ²½ν—˜κ³Ό ν•™μŠ΅μ„ μœ„ν•œ Tailwind css μ‚¬μš©μ— κ΄€ν•œ 문제

βœ… 클래슀λͺ…을,λ³€μˆ˜λͺ… λ”°λ‘œ μ§€μ •ν•˜μ§€ μ•Šμ•„ νŒ€ν”„λ‘œμ νŠΈμ— μ‚¬μš©ν•˜κΈ° μ’‹μ•˜μ§€λ§Œ 자유둭게 μ‚¬μš©ν•˜κΈ°μ— 생각보닀 큰 λŸ¬λ‹μ»€λΈŒ λ¬Έμ œκ°€ μžˆμ—ˆμŒ.
βœ… μ§€μ •λ˜μ–΄ μžˆλŠ” 클래슀λ₯Ό μ‚¬μš©ν• λ•ŒλŠ” ꡉμž₯히 κ°„νŽΈν•˜μ§€λ§Œ, μ§€μ •λ˜μ–΄μžˆμ§€ μ•Šμ€ μŠ€νƒ€μΌμ„ μ μš©ν•˜λŠ” 뢀뢄에 μžˆμ–΄μ„œ λ‹€λ₯Έ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ 큰 차이λ₯Ό λŠλΌμ§€ λͺ»ν–ˆμŒ.
βœ… Tailwindλ₯Ό λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜κΈ°λ³΄λ‹€λŠ”, λ‹€λ₯Έ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ 같이 μ‚¬μš©ν•˜λ©΄ μƒλ‹Ήνžˆ μœ μš©ν•  것 κ°™λ‹€λŠ” κ²°λ‘ .


⚠️ API둜 μš”μ²­μ„ 보내 검색 κ²°κ³Όλ₯Ό κ°€μ Έμ˜€λŠ” λ‘œμ§μ—μ„œ λ‹¨μˆœ κ΅¬ν˜„ν•˜λ‹ˆ μž…λ ₯λ˜λŠ” μš”μ†Œ ν•˜λ‚˜ν•˜λ‚˜ λ§ˆλ‹€ λ¦¬ν€˜μŠ€νŠΈ μš”μ²­μ„ λ³΄λ‚΄λŠ” 문제

βœ… μ²˜μŒμ—” input value μƒνƒœ 관리 λ‹¨κ³„μ—μ„œλŠ” μš”μ²­μ„ 보내지 μ•Šλ‹€κ°€, Enterν‚€ μž…λ ₯을 트리거둜 μš”μ²­μ„ λ³΄λ‚΄λŠ” λ°©λ²•μœΌλ‘œ ν•΄κ²°.
βœ… κ·ΈλŸ¬λ‚˜ κΌ­ 트리거λ₯Ό λ°œλ™ν•΄μ•Ό 검색 κ²°κ³Όλ₯Ό κ°€μ Έμ˜€λŠ” 방식은 μ‚¬μš©μž κ²½ν—˜μ— 뢀정적이라고 생각해 useDebounce 훅을 μ μš©ν•΄μ„œ μž…λ ₯ μ™„λ£Œ ν›„ 일정 μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ μš”μ²­μ„ λ³΄λ‚΄λŠ” 둜직으둜 μˆ˜μ •.


⚠️react-datepicker의 μŠ€νƒ€μΌμ„ Tailwind둜 μ»€μŠ€ν…€ν•˜λ €λŠ”λ° λ§ˆμŒλŒ€λ‘œ μ μš©λ˜μ§€μ•ŠλŠ” 문제

βœ… μ–΄λ–€ λ°©λ²•μœΌλ‘œ Tailwind둜 μŠ€νƒ€μΌμ„ μ μš©ν•  수 μžˆμ„κΉŒ κ³ λ―Όν•΄μ„œ react-tailwind-datepickerλΌλŠ” 라이브러리λ₯Ό μ°Ύμ•„ μ μš©ν•΄λ³΄μ•˜μ§€λ§Œ μ›ν•˜λŠ”λŒ€λ‘œ μŠ€νƒ€μΌμ„ μ μš©ν•˜κΈ° μ–΄λ €μ› λ‹€.
βœ… react-datepickerλ₯Ό μ‚¬μš©ν•΄μ„œ props둜 customInput을 λ„˜κΈ°λŠ” λ°©λ²•μœΌλ‘œ μ‹œμ•ˆμ— λ§žλŠ” 인풋창을 κ΅¬ν˜„ν•  수 μžˆμ—ˆλ‹€.


⚠️ accessToken을 어디에 μ €μž₯할지에 λŒ€ν•œ 문제

βœ… μ²˜μŒμ—” μ‚¬μš©ν•΄λ³΄μ§€ μ•Šμ€ document 쿠킀에 μ €μž₯ν•˜μ—¬ κ΅¬ν˜„ν•¨, ν•˜μ§€λ§Œ 이게 λ§žλŠ”μ§€μ— λŒ€ν•œ 의문이 생겨 μΆ”κ°€ ν•™μŠ΅μ„ ν•˜λ‹€λ³΄λ‹ˆ 였히렀 둜컬 μŠ€ν† λ¦¬μ§€λ³΄λ‹€λ„ λ³΄μ•ˆμ— μ·¨μ•½ ν•˜λ‹€λŠ” 것을 μ•Œκ²Œ 됨.
βœ… 더 찾아도 보며 보톡 λ¦¬ν”„λ ˆμ‹œ 토큰을 쿠킀에 μ €μž₯ν•˜κ³  accessToken은 μƒνƒœ 관리에 μ €μž₯ν•œλ‹€λŠ” 것을 μ•Œκ²Œ 됨.
βœ… λ¬Έμ œλŠ” api에 Refresh Token이 μ—†μ–΄ 쿠킀에 μ €μž₯ ν•  수 μ—†κ³ , ν•™μŠ΅μ΄ 더 ν•„μš”ν•΄ λ³΄μ—¬μ„œ 이번 ν”„λ‘œμ νŠΈμ—μ„œλŠ” λ‘œμ»¬μŠ€ν† λ¦¬μ§€λ₯Ό 선택.


✨ KPT 회고

πŸ‘πŸ» Keep

  • λͺ¨λ‘ μ΅œμ„ μ„ λ‹€ν•΄ 각자의 역할에 맑게 잘 ν•΄λƒˆλ‹€.

  • ν•œλͺ…도 빠짐없이 μ†Œν†΅μ΄ 잘 λ˜μ–΄μ„œ ν”„λ‘œμ νŠΈ 진행 μžμ²΄μ— 어렀움은 μ „ν˜€ μ—†μ—ˆλ‹€.

  • λ‹€λ“€ 첫 ν”„λ‘œμ νŠΈμ— λΉ„ν•΄ ν™•μ‹€νžˆ κΈ°λ³Έ κΈ°λŠ₯ κ΅¬ν˜„ μžμ²΄μ— 어렀움은 덜 느꼈고 κ·Έλž˜μ„œ λ‹€μ–‘ν•œ λΌμ΄λΈŒλŸ¬λ¦¬μ™€, μƒˆλ‘œμš΄ 둜직 μ μš©μ— λ‹€ 같이 집쀑할 수 μžˆμ—ˆλ‹€.

  • 각자의 κΈ°λŠ₯ κ΅¬ν˜„μ— μ‚¬μš©λœ μ½”λ“œλ₯Ό λ³Ό 일이 μž¦μ•„μ„œ μƒλŒ€λ°© μ½”λ“œμ˜ μž₯단점을 λ³Ό κΈ°νšŒκ°€ λ§Žμ•„μ„œ μ’‹μ•˜λ‹€.

πŸ€” Problem

  • μ‹œκ°„μ΄ μ˜ˆμƒλ³΄λ‹€ μ΄‰λ°•ν•΄μ„œ κΈ°λŠ₯ κ΅¬ν˜„μ— μ§‘μ€‘ν•˜λŠλΌ 챙기지 λͺ»ν•œ 것듀이 λ§Žμ€ λ“― μ‹Άλ‹€.

  • 특히 Tailwindλ₯Ό 처음 μ‚¬μš©ν•΄μ„œ κ·ΈλŸ°μ§€ λ””μžμΈμ μΈ μΈ‘λ©΄μ—μ„œ μ•„μ‰¬μš΄μ μ΄ 많이 보인닀.

  • μ§œμ—¬μ Έ μžˆλŠ” API λ‚΄μ—μ„œ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ‹€λ³΄λ‹ˆ API둜직 κ΄€λ ¨μœΌλ‘œλ„ μ›ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ§€ λͺ»ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€λŠ”κ±Έ μ’…μ’… λŠκΌˆλ‹€.

  • 아직은 νŒ€ν”„λ‘œμ νŠΈμ— μ΅μˆ™ν•˜μ§€λŠ” μ•Šμ•„μ„œ μ„œλ‘œμ˜ 둜직이 자주 μ—°κ²°λ˜λŠ” ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ‹€λ³΄λ‹ˆ 결과적으둜 λΆˆν•„μš”ν•œ μ½”λ“œλ“€λ„ 있고, μ»¨λ²€μ…˜μ΄ κΉ”λ”ν•˜κ²Œ μ§€μΌœμ§€μ§€ μ•Šμ€ 뢀뢄도 μžˆλŠ”κ±°κ°™λ‹€.

πŸ”₯ Try

  • μ•žμœΌλ‘œμ˜ ν”„λ‘œμ νŠΈμ—μ„œλŠ” 진행 쀑간쀑간 λ‹€ 같이 λ¦¬νŒ©ν† λ§μ„ κ±°μ³μ„œ μ½”λ“œλ₯Ό μ •λ¦¬ν•˜κ³  λ‹€μŒ κΈ°λŠ₯ κ°œλ°œμ„ ν•˜λŠ” 방법을 μ‹œλ„ν•΄λ³΄κ³ μ‹Άλ‹€.

  • 이번 ν”„λ‘œμ νŠΈλ„ μ’…λ£Œ ν›„ 기둝해 놓은 λ¬Έμ œμ λ“€μ„ λ¦¬νŒ©ν† λ§ ν•˜λŠ” μ‹œκ°„μ„ κ°€μ Έμ•Όκ² λ‹€.