MBTiD๋ ์น๊ตฌ๋ค๊ณผ ํจ๊ป MBTI ๋ช ํจ์ ๋ง๋ค์ด ๊ณต์ ํ๊ณ , ์น๊ตฌ๋ค๊ณผ ํฌํ๋ฅผ ํตํด ์๋ก์ ๋ํ ์ธ์์ ๋น๊ตํด๋ณด๋ ์น ์๋น์ค์ ๋๋ค.
React + TypeScript ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์์ผ๋ฉฐ, ์ํ ๊ด๋ฆฌ์ API ํธ์ถ์ ์ต์ ํํ์ฌ ์ฆ๊ฐ์ ์ธ ๋ฐ์์ฑ๊ณผ ๋ถํ์ํ ๋ ๋๋ง ์ ๊ฑฐ์ ์ง์คํ์ต๋๋ค.
![]() |
![]() |
![]() |
![]() |
- ๐ง ๊ฐ๋จํ MBTI ๊ฒ์ฌ
- ๐ชช ๊ฒฐ๊ณผ ๊ธฐ๋ฐ ๋ช ํจ ์์ฑ
- ๐ฅ ์น๊ตฌ ๋ช ํจ ์ถ๊ฐ ๋ฐ ํ์ธ
- ๐ณ๏ธ ์น๊ตฌ๊ฐ ๋ณด๋ ๋์ MBTI ํฌํ ๊ธฐ๋ฅ
- ๐ ํฌํ ๊ฒฐ๊ณผ ํต๊ณ ์๊ฐํ
- ๐ QR ๊ณต์ , ์นด์นด์คํก ๊ณต์
- ๐ฒ PWA ์ค์น ์ง์
| ๋ถ๋ฅ | ๊ธฐ์ |
|---|---|
| UI | React 18 (with Vite) |
| ์ธ์ด | TypeScript |
| ์ํ ๊ด๋ฆฌ | Zustand, React Query |
| ์คํ์ผ๋ง | SCSS |
| ๋ฐฐํฌ | Vercel |
| CI | GitHub Actions |
MBTiD๋ ์ ์ญ ์ํ(Zustand)์ ์๋ฒ ์ํ(React Query)๋ฅผ ๋ถ๋ฆฌํด ๊ด๋ฆฌํ๋ฉฐ,
๋ถํ์ํ ๋ ๋๋ง๊ณผ API ํธ์ถ์ ์ค์ด๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ ๋ต์ ์ฌ์ฉํ์ต๋๋ค:
| ํญ๋ชฉ | ์ฌ์ฉ ๋๊ตฌ | ์ ๋ต ์์ฝ |
|---|---|---|
| ๋ก๊ทธ์ธ ์ ๋ณด | Zustand | ์ ์ญ ์ ์ฅ, ํญ์ ์ ์ง |
| ํ๋กํ ์ ๋ณด | React Query โ Zustand | staleTime: 30๋ถ, shallow ๋น๊ต ํ Zustand ์ ์ฅ |
| ์น๊ตฌ ๋ชฉ๋ก | React Query | staleTime: 30๋ถ, gcTime: 1์๊ฐ |
| ํฌํ ๊ฒฐ๊ณผ | React Query | staleTime: 0, refetchOnFocus: true |
์ถ๊ฐ๋ก,
React.memo๋ฅผ ํตํด ๋์ผ props ์ ๋ฌ ์ ์ฌ๋ ๋๋ง ๋ฐฉ์งshallow๋น๊ต๋ก ์ํ ์ ๋ฐ์ดํธ ์ฌ๋ถ๋ฅผ ์ ๋ณsetQueryData()๋ฅผ ํ์ฉํด UX ๋ฐ์์ฑ์ ๋์



