'์ค๋ ๋ญ ์ ์ง?'๋ผ๋ ์๊ฐ์์ ๊ธฐํ๋ ์ด ํ๋ก์ ํธ๋ ์ฌ๋๋ค์ด ์ธ์ถ ์ ๋ฌด์์ ์ ์์ง ์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์๊ฒ ๋์๋ ์์ด๋์ด๋ก๋ถํฐ ๊ธฐํ๋์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ ์จ๋ฅผ ํ์ธํ๋ฉด์ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ค์ ์ฐฉ์ฅ์ ๋ณผ ์ ์๊ฒ ํจ์ผ๋ก์จ, ๊ทธ๋ค์ ์ท์ฐจ๋ฆผ์ ์ฐธ๊ณ ํ์ฌ ์์ ์ ์คํ์ผ์ ์ ํํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ์์ ์ด ์ํ๋ ์คํ์ผ์ ์ฌ๋๋ค์ ํ๋ก์ฐ ํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์คํ์ผ ์์ด๋์ด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ํ, ์จ๋ผ์ธ ์๋ฅ ์ผํ๋ชฐ๊ณผ์ ์ฐ๊ณ๋ฅผ ํตํด ๋น์ฆ๋์ค ๋ชจ๋ธ์ ๊ณ ๋ํํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ด์ด๋์์ต๋๋ค.
![]() |
![]() |
|
---|---|---|
์ด๋ฆ | ๊น์ฑํ | ๊ถ์ค์ |
์ญํ | FE-Lead | TeamMate |
๊ธฐ๋ฅ | * ๋ฉ์ธ์ง๋, ๋ ์จ๋๋กญ ๊ฒ์๋ฌผ ๋ฑ๋ก, ๋ก๊ทธ์ธ ๋ฐ ํ์ํํด, PWA, FCM์๋, ํ๋ก ํธ ๋ฐฐํฌ CI/CD | * ํผ๋ ๋ฆฌ์คํธ ๋ฐ ์์ธ ํผ๋ RUD, 1:1 ์ฑํ ๋ฐ ๋ฆฌ์คํธ, ์ ์ ํ๋กํ, ์ ๋ณด ์์ , ํ๋ก์ฐ, ๋ก๊ทธ์์ |
๊นํ๋ธ | ๊น์ฑํ์ GitHub | ๊ถ์ค์์ GitHub |
- ๊ฐ๋ฐ ๊ธฐ๊ฐ: 2024.02.29 ~ 2024.04.21
โโโ README.md
โโโ components.json
โโโ dist
โโโ index.html
โโโ node_modules
โโโ package-lock.json
โโโ package.json
โโโ postcss.config.js
โโโ public
โโโ src
โ โโโ App.tsx
โ โโโ assets
โ โโโ components
โ โโโ features
โ โ โโโ Chat
โ โ โโโ Feed
โ โ โโโ Home
โ โ โโโ Login
โ โ โโโ Notifications
โ โ โโโ OauthRedirect
โ โ โโโ OptionalInfo
โ โ โโโ Posts
โ โ โโโ Profile
โ โ โโโ Splash
โ โโโ global.css
โ โโโ hooks
โ โโโ lib
โ โโโ main.tsx
โ โโโ mocks
โ โโโ routes
โ โโโ services
โ โโโ store
โ โโโ types
โ โโโ vite-env.d.ts
โโโ svg.d.ts
โโโ svgr.template.cjs
โโโ tailwind.config.js
โโโ tsconfig.json
โโโ tsconfig.node.json
โโโ vite.config.ts
โโโ yarn.lock
ํ์ผ ๊ตฌ์กฐ๋ ํฌ๊ฒ ๋ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์์ต๋๋ค :
- ๊ณตํต
src ๋๋ ํ ๋ฆฌ ๋ฐ๋ก ์๋์ ์์น (์: components, hooks, routes, services, mocks ๋ฑ)
ํ๋ก์ ํธ ์ ์ฒด์ ๊ณตํต์ผ๋ก ์ ์ฉ๋๊ฑฐ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌํ ์ฌํญ์ ๋ก๋๋ค. (components - ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปค์คํ ๋ฐ shadcn ui ์ปดํฌ๋ํธ)
- ๊ธฐ๋ฅ๋ณ ํ์ผ
src/features ๋๋ ํ ๋ฆฌ ์๋์ ์ฃผ์ ๊ธฐ๋ฅ ๊ตฌ๋ถ์ ๋ฐ๋ผ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ๊ด๋ฆฌ ์: Chat, Feed, Home, Notification ๋ฑ ๊ฐ ๊ธฐ๋ฅ ๋๋ ํ ๋ฆฌ ์์๋ api, hooks, store, types ๋ฑ์ ํ์ผ๋ค์ ๋ ์ผ๋ก์จ ๊ธฐ๋ฅ๋ณ๋ก ํนํ๋ ๊ตฌํ ์ฌํญ์ ํ ๋ฐ ๋ชจ์ ๋ชจ๋ํํ์ต๋๋ค.
๊ตฌ์กฐ์ ์ฅ์ :
- ์ฝ๋์ ๋ชจ๋ํ์ ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ
๊ณตํต ํ์ผ ๋ถ๋ฆฌ๋ก ์ฝ๋ ์ค๋ณต ๊ฐ์ ๋ฐ ์ฌ์ฌ์ฉ์ฑ ํฅ์
- ์ ์ง๋ณด์์ฑ ํฅ์
๊ธฐ๋ฅ๋ณ ํ์ผ ๋ถ๋ฆฌ๋ก ํน์ ๊ธฐ๋ฅ ์์ ์ ํ์ผ ๊ฐ ํ์ ์๊ฐ์ ์ค์ด๊ณ , ํ๋ก์ ํธ ๊ท๋ชจ์ ๋ง๋ ํจ์จ์ ์ธ ์ ์ง๋ณด์ ๊ฐ๋ฅ
- ํ์ผ ๊ตฌ์กฐ์ ์ผ๊ด์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ
์ผ๊ด๋ ๊ตฌ์กฐ๋ก ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๋ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์ดํดํ๊ณ ํ์ํ ์ ์์ โ
- ์ฌ์ฉ์ ์์น์ ๋ ์ง ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ์์ ์ ๋ ์จ์ ํจ๊ป ootd ๊ฒ์๋ฌผ์ ํฌ์คํ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ค์ฌ์ผ๋ก ํจ
- ์นด์นด์ค ์ง๋ API, ์นด์นด์ค OAuth 2.0 ์ฌ์ฉ
-
์ ํ ์ ๋ณด ์ ๋ ฅ: ๊ฐ์ธ ๋ง์ถคํ ๊ฒ์๋ฌผ ์ ๊ณต์ ์ํด, ์ต์ด ๊ฐ์ ์ ์ฒดํ, ์ฒด์ง, ์คํ์ผ์ ๋ํ ์ ํ์ ๋ณด ์ ๋ ฅ (๋ง์ดํ์ด์ง์์ ์์ ๊ฐ๋ฅ)
-
์นด์นด์ค ๊ฐํธ ๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ: OAuth 2.0 ํ์ฉ, Access/Refresh Token ์ฟ ํค ์ ์ฅ, ์ธ์ ๊ด๋ฆฌ
-
useCurrentLocation, useKakaoMap ์ปค์คํ ํ ๊ตฌํ : ํ ๊ธฐ๋ฅ์ ์ค๋ณต๋๋ ๋ก์ง์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์
-
tanstack-query์ useQuery๋ฅผ ํตํ ์๋ฒ ๋ฐ์ดํฐ ์ํ ๊ด๋ฆฌ
-
ํ์ฌ ์์น ์ค์๊ฐ ๋ ์จ ์กฐํ: ์๋จ ๋ ์จ ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅ, ํด๋ฆญ์ ํ์ฅ๋์ด ์์ธ ์ ๋ณด ์กฐํ
-
์ง๋๋ฅผ ๋๋๊ทธํ๋ฉฐ ์ ์ ์์น ๊ทผ์ฒ์ ๋ ์จ ๋๋กญ ํ์: ๊ตฌ์ญ๋ณ ๊ฒ์ ๊ฒ์๋ฌผ๋ค์ ๊ทธ๋ฃนํํด ๋ง์ปค๋ก ํ์
-
react hook form์ผ๋ก multi-step form ๊ตฌํ ๋ฐ form data ์ํ ๊ด๋ฆฌ
-
zod๋ก ํ์ ์คํฌ๋ฆฝํธ์ ์ต์ ํ๋ validation
-
์ฌ์ง ๋ฑ๋ก (์ค๋ณต ๋ถ๊ฐ, ์ต๋ 3์ฅ), ์ ๋ก๋ ์์น ์ง์ (draggable marker ์ปค์คํ )
-
์์น ์ง์ ์ผ๋ก ํ์ฌ ๋ ์จ ๋ฐ์ดํฐ๋ ํจ๊ป ์ ์ฅ (OpenWeatherMap API ํ์ฉ)
- useInfiniteQuery๋ก ๋ฌดํ ์คํฌ๋กค ๊ตฌํ
- ํ์ฌ ์์น ๊ธฐ๋ฐ ํผ๋ ๋ฆฌ์คํธ ํ์
- ํผ๋ ์ค์๊ฐ ์ข์์/๋๊ธ CRUD
- ๊ฒ์๊ธ ์์ธ์กฐํ: ๋ ์จ ์ ๋ณด ๋ฐ ์ฌ์ง ์บ๋ฌ์
๋ ์ด์์
-
ํ๋กํ ์ ํ ์ ๋ณด ์์ , ์๋ฆผ ์์ ์ฌ๋ถ ์์
-
ํ๋ก์/ํ๋ก์ ๋ฆฌ์คํธ ์กฐํ ๋ฐ ํ๋ก์ฐ/์ธํ๋ก์ฐ
-
๋ด ํผ๋ ์กฐํ
-
REST API ๊ธฐ๋ฐ ๋ก๊ทธ์์, ํ์ํํด
-
Websocket (stomp/sockjs)์ผ๋ก ์ค์๊ฐ ์ฑํ ๊ตฌํ
-
SSE (Server-Sent-Event)๋ก ์ฌ์ฉ์ ์จ๋ผ์ธ ์ํ ์ค์๊ฐ ์ ๋ฐ์ดํธ
-
์ฑํ ๋ชฉ๋ก์์ ๋ฉ์์ง ์ฝ์ ์ํ ๋ฐ์
-
FCM (Firebase Cloud Messaging)์ผ๋ก ํธ์ ์๋ฆผ ๊ตฌํ
-
์ต์ด ๋ก๊ทธ์ธ ์ ์๋ฆผ ์ค์ ํ์ ์ผ๋ก ๊ถํ ์์ฒญ
-
๋ธ๋ผ์ฐ์ ๊ถํ ํ์ฉ ์ FCM ํ ํฐ ์์ฑ ๋ฐ ๋ฐฑ์๋๋ก ์ ์ก
- ํ๋ก์ ํธ์ ๊ท๋ชจ์ ์๊ตฌ์ฌํญ์ ๊ณ ๋ คํด๋ณด๋ฉด, ๋ณธ ์๋น์ค๋ ์ค์๊ฐ ์ ์ ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ํด๋ผ์ด์ธํธ๋จ์์์ ์ธํฐ๋์ ๋น์ค์ด ๋์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง ๋ฑ Next.js๋ง์ ์ด์ ์ ์๋น์ค์ ์จ์ ํ ๋ น์ฌ๋ด๊ธฐ ์ด๋ ต๋ค๊ณ ํ๋จํ์ต๋๋ค. ๋๋ถ์ด Next.js์ App router๋ ์๋์ ์ผ๋ก ์ต๊ทผ์ ๋ฆด๋ฆฌ์ฆ๋์ด, ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ์ ์๋ฒฝํ ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค. ์ด์ ์ต๋ํ ์์ ์ ์ด๊ณ ์์ฑ๋ ์๋ ์๋น์ค ๊ตฌ์ถ์ ์ํด Next.js๋์ ์ ์ทจ์ํ๊ณ React ํ๋ก์ ํธ๋ก ์งํํ๊ฒ ๋์์ต๋๋ค.
- ์ ์ ํ์ ๊ฒ์ฌ๋ฅผ ํตํด ์ฝ๋์ ์์ ์ฑ ํฅ์, ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ฌ์ฃผ๋ฉฐ, ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฅ์
- ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด์ ์ฝ๋์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ์ฌ ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
- ์น์์ผ(Stomp/SockJS) : ์ฑํ ๊ธฐ๋ฅ ๊ตฌํ ์น์์ผ์ ํตํด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ง์์ ์ธ ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ๋ฉ์์ง๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค.
- SSE : ์ฌ์ฉ์์ ์จ๋ผ์ธ ์ํ ์ ๋ฐ์ดํธ์ ๊ฐ์ด ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก์ ๋จ๋ฐฉํฅ ์ด๋ฒคํธ ์ ์ก์ด ํ์ํ ๊ฒฝ์ฐ SSE๋ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ด๋ฒคํธ๋ฅผ ์ ์กํ๋๋ฐ ์ ํฉํ๋ฉฐ, ์น์์ผ๋ณด๋ค ๊ฐ๋จํ๊ณ ๊ฐ๋ณ์ต๋๋ค.
- ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ ๋๋ค.
- Redux์ ๋นํด ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๊ฐ ์ ์ด ์์ฐ์ฑ ํฅ์์ ์ํด ์ ํํ์ต๋๋ค.
- ์ต์ํ์ ์ค์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์ด๊ธฐ ๋ฆฌ์กํธ ํ๋ก์ ํธ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ํํ์ต๋๋ค. ๋ํ HMR, ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ ์ง์์ผ๋ก ๊ฐ๋ฐ ๊ณผ์ ์์์ ์์ฐ์ฑ์ ํฅ์ํด์ค๋ค๋ ์ ๋ ์ฅ์ ์ด์์ต๋๋ค.
- ์ ์ฐํ ์ปค์คํฐ๋ง์ด์ง, ์ง๊ด์ ์ธ ํด๋์ค ์ด๋ฆ, ๊ทธ๋ฆฌ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ ์๋๊ฐ ์ฅ์ ์ ๋๋ค. ๋ํ shadcn/ui์์ ํธํ์ฑ๋ ๊ณ ๋ ค๋์์ต๋๋ค.
- ์ ๊ทผ์ฑ๊ณผ ๋์์ธ์ด ๊ณ ๋ ค๋ ๊ณ ํ์ง์ UI ์ปดํฌ๋ํธ๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌํ ๊ฐ๋ฅ
- Tailwind CSS์ ์ ํตํฉ๋์ด ์ฌ์ฉ์ด ํธ๋ฆฌํฉ๋๋ค.
- ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณตํ๋ฉฐ
- ๋์ ๋ผ์ฐํ ๊ณผ ์ค์ฒฉ ๋ผ์ฐํ ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
- nalsee ์๋น์ค ํน์ฑ์ ๋ฐ์คํฌํ๋ณด๋ค๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์ ์ฌ์ฉ์ฑ์ด ๋๋๋ฌ์ง ๊ฒ์ด๋ผ๊ณ ํ๋จํ์ต๋๋ค. ์ด์ ์น๊ธฐ๋ฐ ํ๋ก์ ํธ์ด๋ฉด์๋ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์ฑ์ ๋์ด์ฌ๋ฆด ์ ์๋ Progressive Web App์ ๊ตฌํํ์ต๋๋ค. ๋๋ถ์ด ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๋น๊ตํ์ ๋ ์ฌ์ฉ์์ ์๋ ์ ๋ฐ์ดํธ ์์ด๋ ํญ์ ์ต์ ๋ฒ์ ์ ์ ์งํ ์ ์๋ค๋ ์ , ์น ๊ฒ์๋ง์ผ๋ก๋ ์ดํ์ ๋ค์ด๋ฐ์ ์ ์๋ ์ ๊ทผ์ฑ ๋ฑ์ ์ฅ์ ์ด ๊ณ ๋ ค๋์์ต๋๋ค.
- ์์ฒญ๊ณผ ์๋ต์ ์ฝ๊ฒ ์ธํฐ์ ํธํ๊ณ ๋ณํ / ์๋์ผ๋ก JSON ๋ฐ์ดํฐ๋ฅผ ๋ณํ ๋ฐ ์๋ฌ ์ฒ๋ฆฌ ์ฉ์ด
- ๋ฐฑ์๋ API์๋ ๋ ๋ฆฝ์ ์ผ๋ก ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์งํ์ ์ค์ ํต์ ํ๊ฒฝ๊ณผ ์ ์ฌํ ๋ชจํน API๋ฅผ ํตํด ๊ฐ๋ฐ๊ณผ ํ ์คํธ๋ฅผ ์ํํ๊ณ ์ ๋์ ํ์ต๋๋ค.
- ์ ์ ๋ฐฐํฌ ๋๊ตฌ๋ก AWS๋ฅผ, ๋น๋ ๋ฐ S3 ์ฑํฌ๋ถํฐ CDN ํ์ผ invalidate ๊ณผ์ ์ ์๋ํํ๊ธฐ ์ํด Github Actions๋ฅผ ์ฌ์ฉํ์ต๋๋ค. Cloudfront๋ ๋จ์ํ S3๋ง์ ์ฌ์ฉํ์ ๋๋ณด๋ค ๋ณด์์ ์ธ ์ธก๋ฉด์์ ์ฐ์ํ๊ธฐ์ ์ ํํ์ผ๋ฉฐ, ์๋ธ๋๋ฉ์ธ ์ค์ ์ ์ํด Route53์ ํจ๊ป ๋์ ํ๊ฒ ๋์์ต๋๋ค.
- ํฌ๋จํด๋ฆฐ D2hub์์ ๋น๋ ์ ํ๊ฒฝ๋ณ์ ์ค์ ์ด ๋ถ๊ฐ๋ฅํ๋ ๊ด๊ณ๋ก, Docker hub๋ก ์ด๋ฏธ์ง ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๊ต์ฒดํ์ต๋๋ค. ๋ํ ํ๊ฒฝ๋ณ์ ์ฃผ์ ๋ฐ ๋์ปค ์ด๋ฏธ์ง ๋น๋, ํธ์ฌ ๊ณผ์ ์ ์๋ํํ๊ธฐ ์ํด Github Action์ ํจ๊ป ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
-
Backend ํธ๋ฌ๋ธ ์ํ ์ฌ๋ก์์ ์ ์ ์๋ฏ์ด, ์ด๋ฐ์๋ Cross-site ์ฟ ํค์ ๋ํ ์ ์ฝ์ ์ฐํํ๊ณ ์ ํ์ํ ์ค์ ์ ์๋ฃํ์ต๋๋ค. ๊ทธ๋ฌ๋ Safari ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ, ๋ ๊ฐ๋ ฅํ ๋ณดํธ์ ์ฑ ์ ์ ์ฉํ์ฌ cross-site ์ฟ ํค๋ฅผ ์์ฒญ์์ ์ ์ธํฉ๋๋ค. ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๋ฐฉ์์ผ๋ก JWT ํ ํฐ์ ์ฟ ํค์ ๋ด๋ ์ํฉ์์ ๋ฐ๋์ ํด๊ฒฐ๋์ด์ผ ํ๋ ์ํฉ์ด์์ต๋๋ค.
-
mixed-content๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์ ๋ํ Safari๊ฐ ๋ ์๊ฒฉํด, ์นด์นด์ค ๋ก๊ทธ์ธ ํ ๋ถ๋ฌ์ค๋ ํ๋กํ ์ด๋ฏธ์ง๊ฐ ๊นจ์ง๋ ํ์์ด ๋ฐ์ํ์ต๋๋ค.
โ ํด๊ฒฐ
- ์ฟ ํค์ ๊ฒฝ์ฐ, ๋ฐฐํฌ ์๋ธ๋๋ฉ์ธ(CNAME)์ ์ค์ ํด์ค์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
- ์ด๋ฏธ์ง ์์ค url์ ๊ฒฝ์ฐ http โ https๋ก ๊ต์ฒดํ๋ ์ ํธ ํจ์๋ฅผ ์ ์ํด ์ ์ฉํจ์ผ๋ก์จ ํด๊ฒฐํ์ต๋๋ค.
-
์ฌ์ฉ์์ ์์น ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด navigator.geolocation API๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ค์ ์์น๋ฅผ ๋ถ๋ฌ์ค๊ธฐ๊น์ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ ์ด์ ์๊ฐ์ด ์์๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
-
์ง๋๋ฅผ ๋ ๋๋งํ๊ธฐ ์ ๊น์ง ์ง๋ ํ๋ฉด ์ ์ฒด๊ฐ ๋ก๋ฉ ์ํ๋ก ํ์๋์ด, ์ ์ ๊ฒฝํ์ ํด์น๊ณ ์๋น์ค๊ฐ ๋งค๋๋ฝ์ง ๋ชปํ๋ค๋ ์ธ์์ ์ค ์ ์์์ต๋๋ค.
โ ํด๊ฒฐ
- ๊ธฐ๋ณธ ์ขํ๋ฅผ ์ง์ ํด๋๊ณ , ์ด๊ธฐ์๋ ํด๋น ์ขํ๋ฅผ ์ฌ์ฉํด ์ง๋๋ฅผ ์ฐ์ ๋ ๋๋งํฉ๋๋ค.
- ์ค์ ์์น๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ ๊น์ง๋ ํ์ฌ ์์น ๋ง์ปค๋ฅผ ํ์์ผ๋ก, ์์น๊ฐ ์ ์ฉ๋ ํ์๋ ์ปฌ๋ฌ๋ก ํ์ํ์ฌ ์ง๋ ํ๋ฉด ๋ด์์ ์์น ์ํ์ ๋ณํ๋ฅผ ์๊ฐํํ์ต๋๋ค.
- ์ ์ ์ ๋ง์ง๋ง ์ ์ ์์น๋ฅผ localStorage์ ์ ์ฅํ๊ณ , ์ฌ ์ ์์ ํด๋น ๊ฐ์ ๋ถ๋ฌ์ ๋ ๋๋งํฉ๋๋ค.
- ์ด๋ฌํ ๋๊ด์ UI ์ ๋ฐ์ดํธ๋ก ๋ธ๋ผ์ฐ์ ๋ด์ฅ API์ ์ฑ๋ฅ ํ๊ณ๋ฅผ ์ด๋์ ๋ ๊ฐ์ถ ์ ์์์ต๋๋ค.
-
๋ธ๋ผ์ฐ์ ์์๋ ์ฌ์ฉ์์ ์๋ฆผ ๊ถํ ์ค์ ํ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์กฐ์ํ ์ ์๋๋ก ์ ํํด๋๊ณ ์์ต๋๋ค.
-
์ ์ ๊ฐ ์ง์ ๋ธ๋ผ์ฐ์ ์ ์ค์ ์ ์กฐ์ํด์ผํ๊ธฐ ๋๋ฌธ์, ์๋น์ค ๋ด์์ ์๋ ํ์ฑ/๋นํ์ฑํ์ ์๋น์ค์์ปค์ ์ค์ ์ํ์ ๋ธ๋ผ์ฐ์ ์๋ฆผ ๊ถํ ์ํ๊ฐ ๋ถ์ผ์นํ ์ ์๋ค๋ ๋ฌธ์ ์ ์ด ์์์ต๋๋ค.
โ ํด๊ฒฐ
- UX๋ก ์ฐจ์ ์ฑ
์ ๊ตฌํํ์ต๋๋ค.
- ์ต์ด ๊ฐ์ ์ โ์๋ฆผ ํ์ฉํ๊ธฐโ๋ฒํผ์ด ์ถ๊ฐ๋ ํ์ ์ผ๋ก ์ฌ์ฉ์์ ์ง์ ์ ์ธ ์๋ฆผ ์ค์ ์ ์ ๋ํฉ๋๋ค.
- ๋ง์ดํ์ด์ง์์ ์๋ฆผ ์ฌ๋ถ๋ฅผ ์กฐ์ ํ ์ ์๋ ํ ๊ธ์ ์ถ๊ฐํ์ต๋๋ค. ๋ํ ์๋ฆผ์ ํด์ ํ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๊ถํ ์ค์ ์ ๋ฐ๋ก ํด์ค์ผํ๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ํ์ ์ผ๋ก ์๋ดํ๋ฉฐ UX์ ์ธ ํ๋ฆ์ผ๋ก ํ์ด ๊ตฌํํ๊ฒ ๋์์ต๋๋ค.
- UX๋ก ์ฐจ์ ์ฑ
์ ๊ตฌํํ์ต๋๋ค.