

ํผ์๋ง ์๊ณ ์๊ธฐ ์๊น์ด ๋ ธ๋, ๋๋ง ์๊ณ ์๋ ๋ช ๊ณก์ ๊ณต์ ํ๋ฉฐ ์๊ฒฌ์ ์ํตํด๋ณด์ธ์!
| FrontEnd | BackEnd | ๋ฒ์ ๊ด๋ฆฌ | ๋ฐฐํฌ |
|---|---|---|---|
| - React - Styled-Components - Redux | Supabase | GitHub | Vercel |
react-youtube๋ฅผ ์ฌ์ฉํ์ฌ ๋ํ ์ผ ํ์ด์ง์์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ youtube url์ ๋ง๋ ๋์์์ ํ ์ ์๊ฒ ํ์์ต๋๋ค.
comment list๋ฅผ ์ถ๊ฐํ ๋, supabase์์๋ uuid๊ฐ์ ๋ฐ์์์ item์ key๊ฐ์ด ๊ณ ์ ํ์ง๋ง, ์ถ๊ฐํ comment๊ฐ state์ ์ผ์์ ์ผ๋ก ์ ์ฅํ ๋๋ ๊ณ ์ ํ id๊ฐ์ด ์์ด์ ์ฌ์ฉํ์์ต๋๋ค.
์คํ์ผ์ reset ์์ผ์ grobal style๋ก ์ ์ฉ์ํค๋๋ฐ ์ฌ์ฉํ์์ต๋๋ค.
๊ฒ์๊ธ READ
supabase๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ redux์์ state์ post ๊ฐ์ ๋ฃ์ด์ ์ ์ฅํ์์ต๋๋ค.
๊ฒ์๊ธ UPDATE/DELETE
์ฐ์ user๊ฐ ์์ฑํ ๊ธ์ด๋ผ๋ฉด ์์ , ์ญ์ ๋ฒํผ์ด ๋ณด์ด๊ฒ ํ์์ต๋๋ค. ๊ฒ์๊ธ์ updateํ ๋๋ redux์ ์ ์ฅํ ๊ฐ์ ๊ฐ์ ธ์์ ์์ ํ ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ฐ๋ก ๋ฐ์๋๊ฒ ํ ๋ค์, supabase์ ๋ฐ๋ ๊ฐ์ ์ ์ฅํ์์ต๋๋ค. ๊ฒ์๊ธ delete๋ supabase์ ํด๋น post๋ฅผ ์ญ์ ํ๊ณ ๋๋ฉํ์ด์ง๋ก ์ด๋ํ๊ฒ ํ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก redux์ supabase๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ๊ตฌํํ์์ต๋๋ค.
post ํ์ด์ง๋ฅผ ์ง์ ํ ๋, useEffect๋ฅผ ์ด์ฉํ์ฌ ์ต์ด ์ง์ ์ supabase ๊ฐ์ ๋ถ๋ฌ์์ redux์ initComment๋ก ๋ฆฌ์คํธ์ state๋ฅผ ์ ์ฅํ๊ณ
Create ์, redux์ supabase์ ๊ฐ์ ์ถ๊ฐ๋ก ์ ์ฅํ์ฌ ๋ฆฌ๋ ๋๋ง์ด ๋๊ฒ ํ์๊ณ update/delete๋ ํด๋น ๋๊ธ ์์ฑ์๋ง ์์ ์ญ์ ๋ฒํผ์ด ๋ณด์ด๊ฒ ํ์์ผ๋ฉฐ ๊ฐ์ด ๋ณ๊ฒฝ(์์ /์ญ์ )์์๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ก์ง์ ์์ฑํด redux์ supabase์์ ๋ณ๊ฒฝํ์์ต๋๋ค.
User fetch
ํํ๋ฉด์ ์ง์ ํ ์, ํ์ฌ ์ง์ ํ ์ ์ ๊ฐ ๋ก๊ทธ์ธํ ์ ์ ๋ผ๋ฉด, redux state์ ๊ฐ์ ์ ์ฅํ๋๋ก ํ์์ต๋๋ค. ์ด ๊ฐ์ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ์ฌ, header ์ค๋ฅธ์ชฝ์ ์ ์ ํ๋กํ, mypage ์ ์ ์ ๋ณด, detailpage์์ input ์ฐฝ์ ์์ฑ์์ ํ๋กํ์ ์ฌ์ฉํ์์ต๋๋ค. ๋ํ, ์ ์ ์ธ์ง ์๋์ง ๊ฒ์ฆ์์ ์ด ํ์ํ post ์์ฑ ์, comment ์์ฑ ์, my page ์ง์ ์์ ์ฌ์ฉ๋์์ต๋๋ค.
User logout
header์ ์๋ ํ๋กํ ํด๋ฆญ ์, ๋ก๊ทธ์ธ ์ ์ ๋ผ๋ฉด ๋จ๋ select์์ ๋ก๊ทธ์์์ ๋๋ ์ ๋, supabase ๋ก์ง์ ํตํด ๋ก๊ทธ์์ ์ฒ๋ฆฌ๊ฐ ๋๋ฉฐ ๋ํ ๋ฐ๋ก ์ํ๋ฅผ ๋ฆฌ๋ ๋๋ง ํ๊ธฐ ์ํด user data๋ฅผ ์ ์ฅํ๋ state์ ๊ฐ์ ๋น๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ guest(๋ก๊ทธ์ธ์ด ์๋ ์ํ)๋ก ๋ฐ๊พธ์ด ์ฃผ์์ต๋๋ค.
figma๋ฅผ ์ด์ฉํ์ฌ ์์ด์ด ํ๋ ์๊ณผ ๋ฉ์ธ์ปฌ๋ฌ ์ง์ , ๋ชจ๋ ๋์์ธ ๊ตฌ์์ ๋งก์์ต๋๋ค.


ํ๋ก์ ํธ ์ผ์ ์ ๋ํด
ํ์ฅ์ ๋งก์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ resourse๋ฅผ ํ์๋ค์๊ฒ ์ด๋ป๊ฒ ๋ถ๋ฐฐํด์ผ ์งง์ ๊ธฐ๊ฐ์ ๋ง๊ฐ๊ธฐํ์ ๋ง๊ฒ ํ๋ก์ ํธ๋ฅผ ์์ฑ ์ํฌ ์ ์์์ง ๊ณ ๋ฏผ์ ๋ง์ด ํ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ ๊ธฐํ๋ด์ ๋ชจ๋ ํ์ ๊ตฌํ ์ฌํญ์ ๋ง๋ค๊ณ ๋ํ ์ผ ํ ๋์์ธ๋ ์ ์ด๋ ค์ ์์ฑ๋ ์๊ฒ ๋ง๋ฌด๋ฆฌ ํ ๊ฒ ๊ฐ์์ ๋ฟ๋ฏํ๋ค.
redux toolkit์ ๋ํด
์ ๋ฒ ๊ฐ์ธ ํ๋ก์ ํธ์์ redux๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๊ตฌํํ์์ง๋ง, ์๋ฌด๋๋ page๊ฐ ๋ง์ง ์๊ณ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ปดํฌ๋ํธ์ ์ฐ์ด์ง ์์์ ์ฌ์ฉ์ ์ฅ์ ์ด ํฌ๊ฒ ๋ถ๊ฐ๋์ง ์์์๋๋ฐ, ์๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด state๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌ์์ง๋์ง์ react toolkit์ผ๋ก immer๋ฅผ ํตํด ์์ฝ๊ฒ ๋ถ๋ณ์ฑ์ ์งํค๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ ์ญ์ ํ ์ ์์ด์ ์ฝ๋๊ฐ ์์ฒญ ๊ฐ๊ฒฐํด์ง๊ฒ ๋๋ฌด ๋งค๋ ฅ์ ์ด์๋ค.
supabase์ ๋ํด
์ฒ์ ๋ค๋ฃจ๋ sql ์๋น์ค์์ง๋ง ๋ด์ฅ๋ ๋ก์ง์ผ๋ก ์์ฒญ ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ด์ ์ข์ ๊ฒฝํ์ด ๋ ๊ฒ ๊ฐ๋ค. apiํด๋๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ ๋น๋๊ธฐ ํจ์๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ ์ฌ์ฉํ๋๊น ์ฝ๋ ์ ์ง๋ณด์์ ๊ฐ๋ ์ฑ์ด ์ข์์ ธ์ ๋ง์กฑ์ค๋ฌ์ ๋ค. ํ์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ์๊ฐ์ ์์ ๋ก๊ทธ์ธ ์ชฝ์ ๋ค๋ฃจ์ง ๋ชปํด์ ์์ฌ์ ๋ค. ๋ค์ ๊ฐ์ธ ํ๋ก์ ํธ์์ ๋ค๋ฃฐ ์ ์๋ค๋ฉด ๋ค๋ฃจ๊ณ ์ถ๋ค.
vercel ๋ฐฐํฌ
์ด ๋ถ๋ถ๋ ํ์์ด ๋งก์ ์ฃผ์ ์ ์์ฝ๊ฒ ๋ฐฐํฌ๊ฐ ๋๋ค๋๋ฐ ์ง์ ์ฌ์ฉํ์ง ๋ชปํ๋ค. ๋ค์ ํ๋ก์ ํธ๋ ๊ผญ vercel๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌ๋ฅผ ์งํํด ๋ณด๊ฒ ๋ค!
loader์ ๋ํด
react router v6์ผ๋ก routing ์์ ์ ํ๋๋ฐ, ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ๋ loader๋ฅผ ํตํด ๋ก๋ฉํ์ด์ง๋ฅผ ๊ตฌํํ์ง ๋ชปํ๋ค. ๋ง๊ฐ์ ๊ธ๊ธํด์ ธ์ ๋ฏธ์ฒ ๊ตฌํํ์ง ๋ชปํ๊ฒ ๋๋ฌด ์์ฝ๋ค.. ๋ค์ ํ๋ก์ ํธ์์ ๊ผญ ๋ฃ์ด์ ๋์ฑ ์์ฑ๋๋ฅผ ๋์ด๊ณ ์ถ๋ค.