https://taskify-roan-five.vercel.app/?_vercel_share=ndjiOAde48mH4oNPBcm13hNZM0XWQinW
μ°λ¦¬μ μκ°μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄, λ€μν μΌμ λ° μκ° κ΄λ¦¬ κΈ°λ₯μ μ 곡νλ μΌμ κ΄λ¦¬ νλ«νΌ
Codeit FE Sprint 3κΈ° - 6ν
Name | Github | Name | Github |
---|---|---|---|
μ¬μμ£Ό | @nyaknya | μ‘°μμ§ | @yejiniee |
λ Έμ§μ | @SiWooJinSeok | μ‘μν | @Song-Sang |
2024.03.08(λͺ©) ~ 03.25(μ)
git clone https://github.com/Codeit-FE3-part3-team6-Taskify/Taskify.git
cd Taskify
npm install
npm run dev
- ν€λ(κ³΅μ© κΈ°λ₯)
- μ¬μ©μ νλ‘ν(λλ€μ, μμ΄μ½) νμν©λλ€.
- λλ‘λ€μ΄μΌλ‘ λ‘κ·Έμμ, κ³μ κ΄λ¦¬, λ΄ λμ보λλ‘ μ΄λ κΈ°λ₯μ μ 곡ν©λλ€.
- ν€λ(λΆκ° κΈ°λ₯)
- ν΄λΉ λμ보λμ λ§΄λ² κ΅¬μ±μμ κ°λ¨ν UIλ‘ μλ €μ€λλ€.
- <μ΄λνκΈ° λ²νΌ>μ ν΅ν λμ보λ μ΄λνκΈ° λͺ¨λ¬μ λμΈμ μμ΅λλ€.
- ν μ¬μ©μμ μ΄λ©μΌ(νλ«νΌ μμ΄λ)λ₯Ό ν΅ν΄ λ΄ λμ보λμ μ΄λ μμ²μ λ³΄λΌ μ μμ΅λλ€.
- μΈν μμλ₯Ό μ λ ₯νμ§ μμΌλ©΄ <μ΄λ λ²νΌ>μ λΉνμ±ν λ©λλ€.
- μ¬μ©μκ° λμ보λ κ΄λ¦¬μλΌλ©΄ <κ΄λ¦¬> λ²νΌμ ν΅ν΄ ν΄λΉ λμ보λ κ΄λ¦¬ νμ΄μ§λ‘ μ΄λν μ μμ΅λλ€.
- μ¬μ΄λλ°
- λ‘κ³ λ²νΌμ μ΄μ©ν΄ λμ λμ보λ νμ΄μ§λ‘ μ΄λν©λλ€.
- μ¬μ©μμ νμ¬ λμ보λ λͺ©λ‘μ 보μ¬μ€λλ€.(νμ΄μ§λ€μ΄μ )
- <+ λ²νΌ>μ ν΅ν΄ 'μλ‘μ΄ λμ보λ μμ±' λͺ¨λ¬μ λμλλ€.
- λ‘κ·ΈμΈμ΄ λμ΄μλ€λ©΄ 'λμ λμ보λ' νμ΄μ§λ‘ μ΄λν©λλ€.
- λ‘κ·ΈμΈμ΄ λμ΄μμ§ μλ€λ©΄ μλ¨μ <λ‘κ·ΈμΈ, νμκ°μ λ²νΌ>μ ν΅ν΄ ν΄λΉ νμ΄μ§λ‘ μ΄λν©λλ€.
- <λ‘κ³ λ²νΌ>μ λλ© νμ΄μ§λ‘ μ΄λν©λλ€.
- <νμκ°μ λ²νΌ>μ νμκ°μ νμ΄μ§λ‘ μ΄λν©λλ€.
- μ ν¨ν μ΄λ©μΌκ³Ό, λΉλ°λ²νΈλ₯Ό μ λ ₯νκ³ <λ‘κ·ΈμΈ λ²νΌ>μ ν΄λ¦νλ©΄ 'λμ λμ보λ'νμ΄μ§λ‘ μ΄λν©λλ€.
- κ° μΈν μμλ μ ν¨νμ§ μμ μ λ³΄κ° μ λ ₯λμμμ κ²½κ³ μ°½μ 보μ¬μ€λλ€.
- λΉλ°λ²νΈλ ν΄λΉ μΈνμ μμ΄μ½μ ν΅ν΄ μ¨κΈ°κ±°λ λνλΌ μ μμ΅λλ€.
- λ‘κ·ΈμΈ μ±κ³΅μ μ‘μΈμ€ ν ν°μ λ°κΈν©λλ€.
- <λ‘κ³ λ²νΌ>μ λλ© νμ΄μ§λ‘ μ΄λν©λλ€.
- <λ‘κ·ΈμΈ λ²νΌ>μ νμκ°μ νμ΄μ§λ‘ μ΄λν©λλ€.
- κ° μΈν μμλ μ ν¨νμ§ μμ μ λ³΄κ° μ λ ₯λμμμ κ²½κ³ μ°½μ 보μ¬μ€λλ€.
- λͺ¨λ μΈν μμκ° μ±μμ§κ³ κ²½κ³ μ°½μ΄ μλ€λ©΄ <κ°μ νκΈ° λ²νΌ>μ΄ νμ±ν λ©λλ€.
- μ€λ³΅ μ΄λ©μΌ κ°μ μλλ λͺ¨λ¬μ°½μ ν΅ν΄ κ±°μ λ©λλ€.
- μ‘μΈμ€ ν ν°μ΄ νμ±ν λμ΄μλ€λ©΄, λλ© νμ΄μ§λ‘ μ΄λ κ²½λ‘λ ν΄λΉ νμ΄μ§λ‘ λ체λ©λλ€.
- 'λμ보λ λͺ©λ‘' μμμμ μμλ λμ보λ λͺ©λ‘μ νμΈνκ³ , ν΄λΉ λμ보λλ‘ μ΄λν μ μμ΅λλ€.(νμ΄μ§λ€μ΄μ )
- <μλ‘μ΄ λμ보λ λ²νΌ>μ ν΅ν΄ 'λμ보λλ₯Ό μμ±'λͺ¨λ¬μ λμΈ μ μμ΅λλ€.
- μμ±ν λμ보λ μ΄λ¦κ³Ό μμ΄μ½ 컬λ¬λ₯Ό μ§μ ν©λλ€.
- λ μμκ° λͺ¨λ μΆ©μ‘±λμ§ μμμ κ²½μ° <μμ± λ²νΌ>μ λΉνμ±ν λ©λλ€.
- λ΄κ° μμ±ν λμ보λλ 'μκ΄ μμ΄μ½'μ ν΅ν΄ νμΈ κ°λ₯ν©λλ€.
- 'μ΄λλ°μ λμ보λ' μμμ ν΅ν΄ νμΈμ΄ μμ±ν λμ보λμ μ΄λμμ²μ μνκ±°λ κ±°μ ν μ μμ΅λλ€.(무νμ€ν¬λ‘€)
- μμ±λ λμ보λλ κΈ°λ³Έ 'To do', 'On progress', 'Done' 컬λΌμ κ°μ§κ³ μμ΅λλ€.
- 컬λΌμ <μλ‘μ΄ μ»¬λΌ μΆκ°νκΈ° λ²νΌ>μ ν΅ν΄ 'μ μ»¬λΌ μμ±' λͺ¨λ¬μ λμΈ μ μμ΅λλ€.
- μλ‘μ΄ μ»¬λΌμ μμ±ν μ μμ΅λλ€.
- μΈνμ΄ λΉμ΄μλ€λ©΄ <μμ± λ²νΌ>μ λΉνμ±ν λ©λλ€.
- κ° μ»¬λΌμ μ λͺ© μ μμ΄μ½μ ν΅ν΄ μμ λ° μμ ν μ μμ΅λλ€.
- μμ±λ μΉΌλΌμμ <+ λ²νΌ>μ ν΅ν΄ 'ν μΌ μμ±' λͺ¨λ¬μ λμΈ μ μμ΅λλ€.
- λ΄λΉμ, μ λͺ©, μ€λͺ , λ§κ°μΌ, νκ·Έ, μ΄λ―Έμ§λ₯Ό μ§μ ν΄μ ν΄λΉ 컬λΌμ 'ν μΌ μΉ΄λ'λ₯Ό μΆκ°ν©λλ€.
- νμ νλͺ©μ μ λ ₯νμ§ μμΌλ©΄ <μμ± λ²νΌ>μ λΉνμ±ν λ©λλ€
- 'ν μΌ μΉ΄λ'λ₯Ό μ ννλ©΄ ν΄λΉ 'ν μΌ μΉ΄λ'λͺ¨λ¬μ λμΈ μ μμ΅λλ€.
- λ§λ€μ΄μ§ μΉ΄λ μ 보λ₯Ό 보μ¬μ€λλ€.
- ν΄λΉ μΉ΄λμ λν λκΈ μμ±μ΄ κ°λ₯ν©λλ€, λ΄κ° μμ±ν λκΈμ μμ λ° μμ κ° κ°λ₯ν©λλ€.(무νμ€ν¬λ‘€)
- <μΌλ°₯ λ²νΌ>μ ν΅ν΄ ν΄λΉ ν μΌμ μμ λ° 'ν μΌ μμ 'λͺ¨λ¬μ λμΈ μ μμ΅λλ€.
- ν΄λΉ μΉ΄λμ μν, λ΄μ₯μ, μ λͺ©, μ€λͺ , λ§κ°μΌ, νκ·Έ, μ΄λ―Έμ§ λ± μΈλΆ μ 보λ₯Ό μμ ν μ μμ΅λλ€.
- νμ νλͺ©μ μ λ ₯νμ§ μμΌλ©΄ <μμ λ²νΌ>μ λΉνμ±ν λ©λλ€
- μμ±λ 'ν μΌ μΉ΄λ'λ€μ μμ±λ μ»¬λΌ μ¬μ΄λ₯Ό λλκ·Έ μ€ λλ‘μΌλ‘ μ΄λ κ°λ₯ν©λλ€.
- λμ보λ νμ΄μ§μμ μμ±μκ° λ³ΈμΈμΈ κ²½μ°, ν€λμ <κ΄λ¦¬> λ²νΌμ ν΅ν΄ μ κ·Όν μ μμ΅λλ€.
- ν΄λΉ λμ보λμ μ΄λ¦ λ° μ»¬λ¬ μμ΄μ½ μμμ λ³κ²½ν μ μμ΅λλ€.
- ν΄λΉ λμ보λμ νμ¬ κ΅¬μ±μμ νμΈν μ μμ΅λλ€, <μμ λ²νΌ>μ ν΅ν΄ κΈ°μ‘΄ ꡬμ±μμ μμ ν μ μμ΅λλ€. (νμ΄μ§λ€μ΄μ )
- ν΄λΉ λμ보λμ νμ¬ μ΄λ λͺ©λ‘μ νμΈν μ μμ΅λλ€. (νμ΄μ§λ€μ΄μ )
- <λμ보λ μμ νκΈ° λ²νΌ>μ ν΅ν΄ ν΄λΉ λμ보λμ μ 체 μμ ν μ μμ΅λλ€.
- ν€λμ <νλ‘ν λ²νΌ> λλ‘λ€μ΄μ <λ΄ μ 보 λ²νΌ> ν΄λ¦μ ν΅ν΄ μ κ·Όν μ μμ΅λλ€.
- νλ‘ν μ΄λ―Έμ§μ, λλ€μμ λ³κ²½ν μ μμ΅λλ€.
- λΉλ°λ²νΈλ₯Ό λ³κ²½ν μ μμ΅λλ€.
- λͺ¨λ μΈν μμκ° μ±μμ§κ³ κ²½κ³ μ°½μ΄ μλ€λ©΄ <λ³κ²½ λ²νΌ>μ΄ νμ±ν λ©λλ€.
βββ public
β βββ images
βββ src
β βββ components
β β βββcommon
β β βββDashboard
β β βββMyDashboard
β β βββMyPage
β β .
β β .
β β .
β βββ constnsts
β βββ features
β βββ hooks
β βββ pages
β βββ styles
β βββ utils
βββ run.sh
β οΈ μ΄μ νλ‘μ νΈμ λΉν΄ νμ΄μ§ κΈ°λ° κ°λ°μ νκΈ° μ½μ§μμ ꡬμ±μ΄κ³ , λ€μνκ² μ¬μ¬μ© ν μ μλ μ»΄ν¬λνΈκ° λ§μλ€λ λ¬Έμ
β
μ΄κΈ°λΆν° μ¬μ¬μ© κ°λ₯μ±μ΄ 보μ΄λ μ»΄ν¬λνΈλ μ΅λν λΆλ¦¬.
β
κ°λ₯νλ©΄ λ¨μΌ μ±
μ μμΉμ μ§ν₯νκ³ , μ μ°νκ² μ€κ³νλ €κ³ λ
Έλ ₯. (ex. λ΄λΆ μμλ₯Ό childrenμΌλ‘ λ°μ μ¬μ©)
β
νμ΄μ§ λ¨μμ ν¬κ² ꡬμ λ°μ§ μκ³ κΈ°λ₯ μ£Όλ κ°λ° ννλ‘ νλ‘μ νΈ μ§ν.
β οΈ νλ‘μ νΈμ λͺ¨λ¬ κ΄λ ¨ λ‘μ§μ΄ λ§κ³ , λμΌν μν λ°μ΄ν°λ₯Ό μ¬λ¬ μ»΄ν¬λνΈμμ μ¬μ©ν΄μΌνλ λ‘μ§μ΄ λ§μλ λ¬Έμ
β
μ μμΌλ‘ μν κ΄λ¦¬λ₯Ό ν΄μΌκ² λ€λ μκ°. (context API, Redux, Redux-Toolkit, recoil λ±)
β
ν¬μ§μμ κ·λͺ¨μ νλ‘μ νΈλΌλ μ , νλ‘μ νΈ κΈ°κ°κ³Ό λ¬λ 컀λΈλ₯Ό κ³ λ €νμ λ λΉκ΅μ μ§κ΄μ μΈ νμ΅κ³Ό μ¬μ©μ ν μ μλ€λ μκ°μμ Redux-Toolkit λΌμ΄λΈλ¬λ¦¬ μ¬μ©.
β
ν΄λμ€λͺ
μ,λ³μλͺ
λ°λ‘ μ§μ νμ§ μμ ννλ‘μ νΈμ μ¬μ©νκΈ° μ’μμ§λ§ μμ λ‘κ² μ¬μ©νκΈ°μ μκ°λ³΄λ€ ν° λ¬λμ»€λΈ λ¬Έμ κ° μμμ.
β
μ§μ λμ΄ μλ ν΄λμ€λ₯Ό μ¬μ©ν λλ κ΅μ₯ν κ°νΈνμ§λ§, μ§μ λμ΄μμ§ μμ μ€νμΌμ μ μ©νλ λΆλΆμ μμ΄μ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬μ ν° μ°¨μ΄λ₯Ό λλΌμ§ λͺ»νμ.
β
Tailwindλ₯Ό λ¨λ
μΌλ‘ μ¬μ©ν기보λ€λ, λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬μ κ°μ΄ μ¬μ©νλ©΄ μλΉν μ μ©ν κ² κ°λ€λ κ²°λ‘ .
β οΈ APIλ‘ μμ²μ λ³΄λ΄ κ²μ κ²°κ³Όλ₯Ό κ°μ Έμ€λ λ‘μ§μμ λ¨μ ꡬννλ μ
λ ₯λλ μμ νλνλ λ§λ€ 리νμ€νΈ μμ²μ 보λ΄λ λ¬Έμ
β
μ²μμ input value μν κ΄λ¦¬ λ¨κ³μμλ μμ²μ 보λ΄μ§ μλ€κ°, Enterν€ μ
λ ₯μ νΈλ¦¬κ±°λ‘ μμ²μ 보λ΄λ λ°©λ²μΌλ‘ ν΄κ²°.
β
κ·Έλ¬λ κΌ νΈλ¦¬κ±°λ₯Ό λ°λν΄μΌ κ²μ κ²°κ³Όλ₯Ό κ°μ Έμ€λ λ°©μμ μ¬μ©μ κ²½νμ λΆμ μ μ΄λΌκ³ μκ°ν΄ useDebounce ν
μ μ μ©ν΄μ μ
λ ₯ μλ£ ν μΌμ μκ°μ΄ μ§λλ©΄ μμ²μ 보λ΄λ λ‘μ§μΌλ‘ μμ .
β οΈ react-datepickerμ μ€νμΌμ Tailwindλ‘ μ»€μ€ν
νλ €λλ° λ§μλλ‘ μ μ©λμ§μλ λ¬Έμ
β
μ΄λ€ λ°©λ²μΌλ‘ Tailwindλ‘ μ€νμΌμ μ μ©ν μ μμκΉ κ³ λ―Όν΄μ react-tailwind-datepickerλΌλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°Ύμ μ μ©ν΄λ³΄μμ§λ§ μνλλλ‘ μ€νμΌμ μ μ©νκΈ° μ΄λ €μ λ€.
β
react-datepickerλ₯Ό μ¬μ©ν΄μ propsλ‘ customInputμ λκΈ°λ λ°©λ²μΌλ‘ μμμ λ§λ μΈνμ°½μ ꡬνν μ μμλ€.
β
μ²μμ μ¬μ©ν΄λ³΄μ§ μμ document μΏ ν€μ μ μ₯νμ¬ κ΅¬νν¨, νμ§λ§ μ΄κ² λ§λμ§μ λν μλ¬Έμ΄ μ겨 μΆκ° νμ΅μ νλ€λ³΄λ μ€νλ € λ‘컬 μ€ν 리μ§λ³΄λ€λ 보μμ μ·¨μ½ νλ€λ κ²μ μκ² λ¨.
β
λ μ°Ύμλ 보며 λ³΄ν΅ λ¦¬νλ μ ν ν°μ μΏ ν€μ μ μ₯νκ³ accessTokenμ μν κ΄λ¦¬μ μ μ₯νλ€λ κ²μ μκ² λ¨.
β
λ¬Έμ λ apiμ Refresh Tokenμ΄ μμ΄ μΏ ν€μ μ μ₯ ν μ μκ³ , νμ΅μ΄ λ νμν΄ λ³΄μ¬μ μ΄λ² νλ‘μ νΈμμλ λ‘컬μ€ν 리μ§λ₯Ό μ ν.
-
λͺ¨λ μ΅μ μ λ€ν΄ κ°μμ μν μ λ§‘κ² μ ν΄λλ€.
-
νλͺ λ λΉ μ§μμ΄ μν΅μ΄ μ λμ΄μ νλ‘μ νΈ μ§ν μ체μ μ΄λ €μμ μ ν μμλ€.
-
λ€λ€ 첫 νλ‘μ νΈμ λΉν΄ νμ€ν κΈ°λ³Έ κΈ°λ₯ ꡬν μ체μ μ΄λ €μμ λ λκΌκ³ κ·Έλμ λ€μν λΌμ΄λΈλ¬λ¦¬μ, μλ‘μ΄ λ‘μ§ μ μ©μ λ€ κ°μ΄ μ§μ€ν μ μμλ€.
-
κ°μμ κΈ°λ₯ ꡬνμ μ¬μ©λ μ½λλ₯Ό λ³Ό μΌμ΄ μ¦μμ μλλ°© μ½λμ μ₯λ¨μ μ λ³Ό κΈ°νκ° λ§μμ μ’μλ€.
-
μκ°μ΄ μμλ³΄λ€ μ΄λ°ν΄μ κΈ°λ₯ ꡬνμ μ§μ€νλλΌ μ±κΈ°μ§ λͺ»ν κ²λ€μ΄ λ§μ λ― μΆλ€.
-
νΉν Tailwindλ₯Ό μ²μ μ¬μ©ν΄μ κ·Έλ°μ§ λμμΈμ μΈ μΈ‘λ©΄μμ μμ¬μ΄μ μ΄ λ§μ΄ 보μΈλ€.
-
μ§μ¬μ Έ μλ API λ΄μμ νλ‘μ νΈλ₯Ό μ§ννλ€λ³΄λ APIλ‘μ§ κ΄λ ¨μΌλ‘λ μνλ κΈ°λ₯μ ꡬννμ§ λͺ»νλ κ²½μ°κ° λ§λ€λκ±Έ μ’ μ’ λκΌλ€.
-
μμ§μ ννλ‘μ νΈμ μ΅μνμ§λ μμμ μλ‘μ λ‘μ§μ΄ μμ£Ό μ°κ²°λλ νλ‘μ νΈλ₯Ό νλ€λ³΄λ κ²°κ³Όμ μΌλ‘ λΆνμν μ½λλ€λ μκ³ , 컨벀μ μ΄ κΉλνκ² μ§μΌμ§μ§ μμ λΆλΆλ μλκ±°κ°λ€.
-
μμΌλ‘μ νλ‘μ νΈμμλ μ§ν μ€κ°μ€κ° λ€ κ°μ΄ 리ν©ν λ§μ κ±°μ³μ μ½λλ₯Ό μ 리νκ³ λ€μ κΈ°λ₯ κ°λ°μ νλ λ°©λ²μ μλν΄λ³΄κ³ μΆλ€.
-
μ΄λ² νλ‘μ νΈλ μ’ λ£ ν κΈ°λ‘ν΄ λμ λ¬Έμ μ λ€μ 리ν©ν λ§ νλ μκ°μ κ°μ ΈμΌκ² λ€.