์ฃผ์ด์ง API์ ์์ผ์ ํ์ฉํ ์ฑํ ์ฑ ์ ์ ํ๋ก์ ํธ์ ๋๋ค.
ํธ๊ทธ์ํธ ํ์ ์ฒดํ์ ํ ์ ์๋๋ก ๊ตฌ์ฑํ์์ต๋๋ค.
๊ฐ๋ฐ๊ธฐ๊ฐ: 2023.11.06 ~ 2023.11.16
๋ฐฐํฌ ์ฃผ์: https://hogwartalk.vercel.app/
ํ ์คํธ ๊ณ์ : ID : dumbledore / Password : dumbledore
| ์ด์น์ค | ์ด์น์ฐ | ์ด์นํ | ๋ฐฐ๊ฒฝ๊ท | ์ฅ๋ฌธ์ฉ |
|---|---|---|---|---|
| @seungjun222 | @ewinkite | @seungsimdang | @kyungkyuBae | @moonyah |
| ์ฑํ ๊ธฐ๋ฅ | ํด์ฆ, ํด๋ฝ ํ์ด์ง ๊ด๋ จ ๊ธฐ๋ฅ | ์ฑํ ๊ธฐ๋ฅ | ๋ก๊ทธ์ธ/ ํ์๊ฐ์ ๊ธฐ๋ฅ | ๊ณตํต ์ปดํฌ๋ํธ(ํค๋ - ๋ง์ดํ์ด์ง, ์น๊ตฌ ๋ชฉ๋ก) |
VSC GIT GITHUB
Next.js REACT FIREBASE TYPESCRIPT Recoil
JIRA SLACK NOTION
์ปค๋ฐ ์ปจ๋ฒค์
, ์ฝ๋ฉ ์ปจ๋ฒค์
, ๊นํ๋ธ ๊ท์น ๋ฑ์ ๋ด์ฉ์ ์๋์ ๋
ธ์
ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
โ
useState,ย useReducer๋ฅผ ํ์ฉํ ์ํ ๊ด๋ฆฌ ๊ตฌํ
โ
Sassย ๋๋ย styled-component๋ฅผ ํ์ฉํ ์คํ์ผ ๊ตฌํ
โ
reactย ์ํ๋ฅผ ํตํ CRUD ๊ตฌํ
โ
์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์คํ์ผ ๊ตฌํ
โ
custom hook์ ํตํ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ตฌํ
โ
์ ์ ์ธ์ฆ ์์คํ
(๋ก๊ทธ์ธ, ํ์๊ฐ์
) ๊ตฌํ
โ
jwt๋ฑ์ ์ ์ ์ธ์ฆ ์์คํ
(๋ก๊ทธ์ธ, ํ์๊ฐ์
๊ธฐ๋ฅ)
โ
์์ผ์ ์ด์ฉํ ์ฑํ
๊ตฌํ
โ
Next.js๋ฅผ ํ์ฉํ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๊ตฌํ
โ
typescript๋ฅผ ํ์ฉํ ์ฑ ๊ตฌํ
์ด์น์ค: ๐ฌ ์ฑํ
๐ก ์์ผ ์ฐ๊ฒฐ์ ํตํด ์ค์๊ฐ ์ฑํ
์ ํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ํ๋ฉด ๋์ด๋ฅผ ๊ณ์ฐํด ์คํฌ๋กค ๋งจ ๋ฐ์ผ๋ก ์ด๋ ๊ฐ๋ฅํฉ๋๋ค.
๐ก Next.js ๋์ ๋ผ์ฐํ
์ ํตํด ํด๋ฝ ์ฑํ
๋ฐฉ ์์ฑ ์, id, name๊ฐ์ ์ฟผ๋ฆฌํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ ์ ๋ณด์ ๋ง๊ฒ ํ์ด์ง ๋ ๋๋ง์ ์์ผ์ค๋๋ค.
๐ก ๋ด๊ฐ ์ฐธ์ฌ์ค์ธ ๋ํ๋ฐฉ์ ๋ณด์ฌ์ค๋๋ค. Polling ๋ฐฉ์์ ํตํด latestMessages๋ฅผ 5์ด๋ง๋ค ์
๋ฐ์ดํธ ํด์ค๋๋ค.
์ด์น์ฐ: ๐ ํด์ฆ, ํด๋ฝ, ๊ณตํต
๐ก ์๋๋ฆฌ์ค์ ๋ฐ๋ผ ๋ต๋ณ์ ํด๋ฆญํ๋ฉด ์ ์๊ฐ ๋์ ๋๋ฉฐ, ์ด์ ๋ฐ๋ฅธ ๊ธฐ์์ฌ ๋ฐฐ์ ์ด ์ด๋ฃจ์ด์ง๋๋ค.
๋ฌธํญ๋ณ ์ ํํ ๋ต๋ณ ์ ๋ณด๋ฅผ ์ ์ฅํ์ฌ ์ด์ /๋ค์ ์ด๋์์๋ ๋ต๋ณ์ด ์ ์ง๋ฉ๋๋ค.
๐ก ๋ค ๊ฐ์ ๊ธฐ์์ฌ ์ฑํ
๋ฐฉ์ ์ ์ธํ ๋ชจ๋ ์ฑํ
๋ฐฉ์ ๋ถ๋ฌ์ต๋๋ค.
์ด๋ update ์ผ์๋ฅผ ๊ธฐ์ค, ์ต์ ์์ผ๋ก ์ ๋ ฌ๋์ด ๋
ธ์ถ๋ฉ๋๋ค.
๋ก๊ทธ์ธํ ์ฌ์ฉ์๊ฐ ์ฐธ์ฌ์ค์ธ ์ฑํ
๋ฐฉ์ ๊ฒฝ์ฐ ๊ฐ๋ณ์ ์ผ๋ก ํ๊ธฐํฉ๋๋ค.
๐ก ์๋ก์ด ์ฑํ
๋ฐฉ์ ์์ฑํ๋ฉฐ, ์์ฑ์ด ์๋ฃ๋๋ฉด ํด๋น๋๋ ์ฑํ
๋ฐฉ์ผ๋ก ์ด๋ํฉ๋๋ค.
์ ๋ชฉ์ ํ์๊ฐ์ด๋ฉฐ ์ฑํ
๋ฐฉ ๊ณต๊ฐ ์ฌ๋ถ ์ค์ ์ ๋ฐ๋ผ ๋ชฉ๋ก ์กฐํ๊ฐ ์
๋ฐ์ดํธ ๋ฉ๋๋ค.
๐ก ํ์ฌ ์ฐธ์ฌ์ค์ธ ์ฑํ
๋ฐฉ์ ๊ฒฝ์ฐ ๋ฐ๋ก ํด๋น๋๋ ์ฑํ
๋ฐฉ์ผ๋ก ์ด๋ํ๋ฉฐ,
์ฐธ์ฌ์ค์ด์ง ์์ ์ฑํ
๋ฐฉ์ ๊ฒฝ์ฐ ์ฐธ์ฌ ์ฌ๋ถ๋ฅผ ๋ฌป๋ ๋ค์ด์ผ๋ก๊ทธ๊ฐ ๋
ธ์ถ๋ฉ๋๋ค.
๐ก API ํธ์ถ ์ค ๋ก๋ฉ ํ์ด์ง๊ฐ ๋
ธ์ถ๋ฉ๋๋ค.
๐ก ํํ์ด์ง ์ต์ด ์ง์
ํ ํน์ ์์ญ์ ํด๋ฆญ์ BGM์ด ์ฌ์๋ฉ๋๋ค.
ํค๋์์ ์์ด์ฝ์ ํตํด ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๊ฒฝ๋ก ์ด๋๋์ด๋ ์ฌ์ ์ํ๊ฐ ์ ์ง๋ฉ๋๋ค.
์ด์นํ: ๐ฌ ์ฑํ
๐ก ๋ก๊ทธ์ธ ํ์ ์ฒ์์ผ๋ก ํ์๋๋ ํ์ด์ง์
๋๋ค.
์ฌ์ฉ์๊ฐ ๋ฐฐ์ ๋ฐ์ ๊ธฐ์์ฌ ์ฑํ
๋ฐฉ๋ง ์
์ฅํ ์ ์์ผ๋ฉฐ, ๊ฐ์ด๋ฐ์ ํด๋ฝ ๋ก๊ณ ๋ฅผ ๋๋ฅด๋ฉด ํด๋ฝ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๐ก ์ฑํ
๋ฐฉ์ ์ฐธ์ฌ, ์ด๋๋ฅผ ๋ฐ์ ํ์ฌ ์ฑํ
๋ฐฉ์ ์ ๋ชฉ๊ณผ ์ธ์์๊ฐ ํ์๋ฉ๋๋ค.
๋
ธ๋ ๋ฑ์ง๋ฅผ ๋๋ฌ ์ฌ์ฉ์๋ฅผ ์ด๋ํ ์ ์์ผ๋ฉฐ ๋๋ณด๊ธฐ ๋ฒํผ์ ๋๋ฌ ์ฑํ
๋ฐฉ ์ ๋ณด๋ฅผ ๋ณด๊ฑฐ๋ ์ฑํ
๋ฐฉ์์ ๋๊ฐ ์ ์์ต๋๋ค.
๐ก ๊ธฐ์์ฌ ์ฑํ
๋ฐฉ์ ์ ์ธํ ๋ชจ๋ ํด๋ฝ ์ฑํ
๋ฐฉ์์ ์ฌ์ฉ์๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
ํ์ฌ ์ฑํ
๋ฐฉ์ ์ฐธ์ฌํ๊ณ ์๋ ์ฌ๋์ ์ ์ธํ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ณด์ฌ์ง๋ฉฐ, ์ฌ์ฉ์์ ํ๋กํ ์ฌ์ง, ๋๋ค์, ๊ธฐ์์ฌ ์ ๋ณด๊ฐ ํ์๋ฉ๋๋ค.
๐ก ํ์ฌ ์ฑํ
๋ฐฉ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ฑํ
๋ฐฉ ์ ๋ชฉ, ์ธ์์, ํธ์คํธ ์ด๋ฆ, ์ฑํ
๋ฐฉ ๊ฐ์ค์ผ, ์ฐธ์ฌ์ ๋ชฉ๋ก์ ํ์ธํ ์ ์์ต๋๋ค.
๋ฐฐ๊ฒฝ๊ท: ๐ ๋ก๊ทธ์ธ/ ํ์๊ฐ์
ํ ํฐ์ ์ก์ธ์ค ํ ํฐ,๋ฆฌํ๋ ์ ํ ํฐ
์ ๊ณต๋ api์ ์ด๋ฏธ์ง ์ฉ๋์ด์ ๋๋ฌธ์ ํdb๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ url์ฌ์ฉ
ํ์๊ฐ์
์ ๋น์นธ ์๋์ง ์ ํจ์ฑ ๊ฒ์ฌ
์ค๋ณต๋ ์์ด๋๊ฐ ์๋์ง ์ฒดํฌ
ํด์ฆ๋ฅผ ๋ณด๋ฌ๊ฐ๋ ํ์๊ฐ์
ํผ ์ํ์ ์ฅ
๋ชจ๋ ํ์ด์ง์์ ์ก์ธ์คํ ํฐ ๋ง๋ฃ์ axios ์์ฒญ ๊ฐ๋ก์ฑ์ ์ธํฐ์
ํฐ๋ก ์ก์ธ์คํ ํฐ์ ์ฌ๋ฐ๊ธ ํ๋ ๋ก์ง๊ตฌํ
๋ก๊ทธ์ธ ํ์ด์ง ์ ๋
์ฅ๋ฌธ์ฉ: ๐ ๊ณตํต ์ปดํฌ๋ํธ
๐ก๊ฐ ์์ด์ฝ์ ํด๋ฆญ ๋ฐ ํ ๊ธ ์ํ์ ๋ฐ๋ผ ์คํ์ผ์ด ๋ณํฉ๋๋ค.
MyPageToggle์ปดํฌ๋ํธ๋ ์ฌ์ฉ์์ ํ๋กํ ์ ๋ณด๋ฅผ ํ์ํ๊ณ ํธ์งํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ฌ์ด๋๋ฐ์ ๋๋ค.
๐ก์ฟ ํค์ ์ ์ฅ๋ accessToken์ ์ฌ์ฉํด ์ด๋ฆ์ ๊ฐ์ ธ์ค๊ณ Firebase Storage์์ ํ๋กํ ์ด๋ฏธ์ง, Firebase Database์์ ๊ธฐ์์ฌ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๐ก์ฌ์ฉ์๊ฐ ํธ์ง ๋ชจ๋๋ก ์ ํํ๋ฉด ์ด๋ฆ, ๊ธฐ์์ฌ, ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๊ณต๋ ์๋ฒ์ Firebase์ ์
๋ฐ์ดํธ๋ฉ๋๋ค.
FriendSearchToggle์ปดํฌ๋ํธ๋ ์น๊ตฌ๋ฅผ ๊ฒ์ํ๊ณ ํ์ธํ๋ ์ญํ ์ ํ๋ ์ฌ์ด๋๋ฐ์ ๋๋ค.
๐ก ์๋ฒ์ ์์ผ ํต์ ์ ํตํด ์ ์ฒด ์ ์ ์ ์ ์ ์ค์ธ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์, ๊ฐ ์ฌ์ฉ์์ ์ ์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ํฉ๋๋ค. Firebase ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ฌ์ฉ์์ ๊ธฐ์์ฌ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
ํ๋ฉด์๋ ๊ฐ ์ฌ์ฉ์์ ํ๋กํ ์ด๋ฏธ์ง, ์ด๋ฆ, ํ๊ธ, ๊ทธ๋ฆฌ๊ณ ์ค์๊ฐ์ผ๋ก ๋ณํ๋ ์ ์ ์ํ๊ฐ ํ์๋ฉ๋๋ค. ์ฌ์ฉ์์ ๊ธฐ์์ฌ ์ ๋ณด๋ ํ์๋๋ฉฐ, ๋ฐ์ดํฐ๋ ๊ณ์ํด์ ์
๋ฐ์ดํธ๋์ด ํ๋ฉด์ ์ค์๊ฐ์ผ๋ก ๋ฐ์๋ฉ๋๋ค.
๐ก๋ก๊ทธ์์ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ๊ณ js-cookie ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ 'accessToken'๊ณผ 'refreshToken' ์ฟ ํค๋ฅผ ์ญ์ ํ์ฌ ๋ก๊ทธ์์์ ์ํํฉ๋๋ค.



















