ํ๋ค๋ง์ผ์ ์ผ๋ฐ์ธ๋ค์ด ์์ ์ ์ค๊ณ ๋ฌผํ์ ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ์ ํตํด ์ง์ ๊ฒฝ๋งคํ ์ ์๋ ์น ์ฌ์ดํธ์ ๋๋ค.
๐ Deploy Address: https://www.pandamarket.live/(Closed now)
๐ ์๋ฎฌ๋ ์ด์ ๊ฐ์ด๋ ์์ : https://www.youtube.com/watch?v=hcTGFmjfqOs
๐ ๋ผ์ด๋ธ ์ค๊ณ ๊ฒฝ๋งค ์์ฐ ์์(ํ๋ก์ ํธ ๋ฐํ ไธญ) : https://youtu.be/jMw5MIxLY3o?t=6597
- Motivation
- Features
- Tech Stack
- Requirements
- Installation
- Deploy
- How to use
- Project Schedule
- Challenge & Focus point
- Things to do
- ํ์ฌ ์ค๊ณ ๋๋ผ ๊ฐ์
์ ์(๋น๊ทผ๋ง์ผ, ๋ฒ๊ฐ์ฅํฐ ์ ์ธ)๋ง 2์ฒ ๋ง๋ช
์ด ๋์ ์ ๋๋ก ์ค๊ณ ๊ฑฐ๋์ ๋ํ ์ ๊ตญ๋ฏผ์ ์ธ ์์๊ฐ ๋์ต๋๋ค. ์ด์ฒ๋ผ ์ ๋ํ ํ์์ ๋ง์ด ์ด์ฉํ๋ ์ค๊ณ ๊ฑฐ๋์
์์ฅ์ฑ
์ ํญ์ ์ฃผ๋ชฉํ๊ณ ์์์ต๋๋ค. - ์์ง๊น์ง ํ๋งค์๊ฐ ๊ฐ๊ฒฉ์ ์ ํ๊ณ , ๊ตฌ๋งค์๋ ์ ํด์ง ๊ฐ๊ฒฉ์ผ๋ก ๊ตฌ๋งคํ๋ ์ ํต์ ์ธ ๋ฐฉ์์ ์ค๊ณ ๊ฑฐ๋๊ฐ ์ฃผ๋ฅผ ์ด๋ฃจ๊ณ ์์ต๋๋ค. ํ์ง๋ง ํ๋งค์๊ฐ ๋ผ์ด๋ธ ๋ฐฉ์ก์ผ๋ก ์ค๊ณ ๋ฌผํ์ ๊ฒฝ๋งคํ๋ ์๋น์ค๋ ๊ฑฐ์ ์ ๋ฌดํ๊ธฐ ๋๋ฌธ์, ํด๋น ์๋น์ค๋ฅผ ๊ฐ์ํ๋ค๋ฉด
์ ์ ํจ๊ณผ
๋ฅผ ์ป์ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. - ๊ธฐ์กด ์ค๊ณ ๊ฑฐ๋์์๋ ํ๋งค์์ ๋๋ฉดํ๊ธฐ๊น์ง ๋ง์ฐํ ๋๋ ค์์ ๊ฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค. ํ๋งค์์ ์ผ๊ตด์ ๋ฏธ๋ฆฌ ํ์ธํด๋ณผ ์ ์๋ ๋ผ์ด๋ธ ์ค๊ณ ๊ฒฝ๋งค๋ฅผ ํตํด ํด๋น ๋ถ๋ถ์ ์์์ํค๊ณ , ์ค๊ณ ๊ฑฐ๋์ ๋ํ
์ ๋ขฐ์ฑ
์ฆ๊ฐ๋ฅผ ๋๋ชจํ๊ณ ์ ํ์์ต๋๋ค. - ์ด๋ฏธ ์ธ์คํ๊ทธ๋จ๊ณผ ๊ฐ์ ์์
ํ๋ซํผ์์ ๋ผ์ด๋ธ ์ค๊ณ ๊ฑฐ๋๊ฐ ๊ฐ๊ฐํ ์ด๋ฃจ์ด์ง๊ณ ์์ง๋ง, ํน์ influencer์๊ฒ๋ง ์ํฅ๋ ฅ์ด ๋ฐํ๋ฉ๋๋ค. ์ดํ ์์ผ๋ก ๋๋ํ ๋น๋๋ฉด ์๋ ํ๋ฆ์ ๋ง์ถ์ด ์ผ๋ฐ์ธ๋ค๋ ์ฝ๊ฒ ์ฐธ์ฌํ ์ ์๋
๋์ค์
์ด๊ณํน์ฑํ
๋ ๋ผ์ด๋ธ ์ค๊ณ ๊ฒฝ๋งค ํ๋ซํผ์ ๋ง๋ค๊ณ ์ถ์์ต๋๋ค.
- ๊ฒฝ๋งค๋ฅผ ์ํ๋ ์ค๊ณ ๋ฌผํ์ ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ์ํ๋ ์๊ฐ ๋์ ๊ฒฝ๋งค๋ฐฉ์ ๊ฐ์คํ์ฌ, ์ค์๊ฐ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ํตํด ๊ฒฝ๋งค๋ฅผ ์งํํ ์ ์์ต๋๋ค.
- ๊ตฌ๋งค๋ฅผ ์ํ๋ ์ค๊ณ ๋ฌผํ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ๊ฒฝ๋งค๋ฐฉ์ ์ฐธ์ฌํ์ฌ, ๊ฒฝ๋งค์ค์ธ ๋ฌผํ์ ๋ํด ์ํ๋ ๊ฐ๊ฒฉ๋๋ก ์ค์๊ฐ ๋ฐฐํ ์ ํ ์ ์์ต๋๋ค.
- ๊ฒฝ๋งค ์ผ์, ๊ฒฝ๋งค ์ฐธ์ฌ ๋ฑ ์์ฝ์ ๋ํ ๋ฉ์ผ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ง์ด ํ์ด์ง๋ฅผ ํตํด ๋ฑ๋กํ ๊ฒฝ๋งค, ์์ฝํ ๊ฒฝ๋งค ์ ๋ณด๋ฅผ ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
- ES2015+
- React for component-based-architecture
- Redux for state management(Redux-toolkit)
- Redux Thunk for managing asynchronous operation
- Styled Component
- Socket.io
- Web RTC for real time communication
- Jest for unit-test
- Enzyme for component-test
- Node.js
- Express
- MongoDB / MongoDB Atlas for data persistence
- Mongoose
- JSON Web Token Authentication
- AWS S3 for uploading data file
- Socket.io
- Node mailer / Node-schedule for reservation service
- Chai / Mocha / SuperTest for unit-test
- ํฌ๋กฌ ํ๊ฒฝ์์์ ์คํ์ ๊ถ์ฅํฉ๋๋ค.
Local ํ๊ฒฝ์์ ์คํ์ ์ํด ํ๊ฒฝ ๋ณ์ ์ค์ ์ด ํ์ํฉ๋๋ค.
Root ๋๋ ํ ๋ฆฌ์ .envํ์ผ์ ์์ฑ ํ ์๋์ ๊ฐ์ด ํ๊ฒฝ๋ณ์ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
// in .env in Root directory
REACT_APP_GOOGLE_CLIENT_ID=<YOUR_GOOGLE_CLIENT_ID>
git clone https://github.com/maxlchan/PandaMarket-frontend.git
cd PandaMarket-frontend
npm install
npm start
Root ๋๋ ํ ๋ฆฌ์ .envํ์ผ์ ์์ฑ ํ ์๋์ ๊ฐ์ด ํ๊ฒฝ๋ณ์ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
// in .env in Root directory
PORT=<YOUR_PORT_NUMBER>
DB_URL=<YOUR_MONGODB_URL>
JWT_SECRET=<YOUR_JWT_SECRET>
AWS_ACCESS_KEY=<YOUR_AWS_ACCESS_KEY>
AWS_SECRET_KEY=<YOUR_AWS_SECRET_KEY>
NODE_MAILER_EMAIL=<YOUR_GMAIL_ADDRESS>
NODE_MAILER_PASSWORD=<YOUR_GMAIL_PASSWORD>
git clone https://github.com/maxlchan/PandaMarket-backend.git
cd Rice-coco-backend
npm install
npm run dev
- Netlify๋ฅผ ์ด์ฉํ Client ๋ฐฐํฌ https://www.pandamarket.live/
- AWS Elastic Beanstalk (EB)
- AWS Code Pipeline for Deployment automation
[ํ๋งค์]
- ์์ ๋ก๊ทธ์ธ ํ, ๋ฉ์ธ ํ๋ฉด ํ๋จ์ [๋ด ์ค๊ณ ๋ฌผํ ๊ฒฝ๋งคํ๊ธฐ] ๋ฒํผ์ ๋๋ฆ ๋๋ค.
- ์ํ ์ฌ์ง ~ ๊ฒฝ๋งค ์ผ์๊น์ง ์๊ตฌ์ฌํญ์ ๋ชจ๋ ์ฑ์ด ํ [๊ฒฝ๋งค ๋ฑ๋กํ๊ธฐ] ๋ฒํผ์ ๋๋ฆ ๋๋ค.
- ๊ฒฝ๋งค๋ฅผ ๋ฐ๋ก ์์ํ๊ณ ์ถ์ ๊ฒฝ์ฐ, [๊ฒฝ๋งค ๋ฐ๋ก ์์] ๋ฒํผ์ ๋๋ฆ ๋๋ค.
- ๊ฒฝ๋งค ์ผ์๊ฐ ๋ค๋ค๋ฅผ ๊ฒฝ์ฐ, ํ๋งค์์ ๋ฉ์ผ๋ก ์ ์ก๋๋ ๊ฒฝ๋งค๋ฐฉ ๋งํฌ๋ฅผ ํตํด ๊ฒฝ๋งค๋ฐฉ์ ๊ฐ์คํ ์ ์์ต๋๋ค.
- ์ฐธ์ฌ์๊ฐ ๊ฒฝ๋งค๋ฐฉ ์ ์ฅ ํ ์ผ์ ๊ธ์ก์ ๋ฐฐํ ํ๋ฉด, [์นด์ดํธ ๋ค์ด Start] ๋ฒํผ์ด ํ์ฑํ๋ฉ๋๋ค.
- [์นด์ดํธ ๋ค์ด Start] ๋ฒํผ์ ๋๋ฅด๋ฉด, 10์ด์ ์นด์ดํธ ๋ค์ด์ด ์์๋ฉ๋๋ค.
- 10์ด ๋์ ์ต๊ณ ๊ฐ์ ๋ฐฐํ ์ด ๋์ค์ง ์์ผ๋ฉด 1๋ฑ ๊ตฌ๋งค์์์ ๊ฐ์ธ ๋ํ์ฐฝ์ผ๋ก ์ด๋ํฉ๋๋ค.
[๊ตฌ๋งค์]
- ์์ ๋ก๊ทธ์ธ ํ, ํ ํ๋ฉด์ [๋ฐ๋ก ์ฐธ์ฌํ๊ธฐ] ๋ฒํผ์ ๋๋ฌ ํ์ฌ ๊ฒฝ๋งค์ค์ธ ๊ฒฝ๋งค๋ฐฉ์ผ๋ก ์ ์ฅํ ์ ์์ต๋๋ค.
- [๊ฒฝ๋งค์ํ] ํญ์ ํตํด ํ์ฌ ์์ฝ์ค์ธ ๊ฒฝ๋งค ์ํ๋ค์ ๋๋ฌ ๋ณผ ์ ์์ผ๋ฉฐ, ๊ฒ์ํ ์ ์์ต๋๋ค.
- [์์ธ๋ณด๊ธฐ]์ [๊ฒฝ๋งค ์์ฝํ๊ธฐ] ๋ฒํผ์ ๋๋ฌ ํด๋น ๊ฒฝ๋งค๋ฅผ ์์ฝํ ์ ์์ต๋๋ค.
- ํ๋งค์๊ฐ ๊ฒฝ๋งค๋ฅผ ์์ํ ๊ฒฝ์ฐ, ๊ตฌ๋งค์ ๋ฉ์ผ๋ก ์ ์ก๋๋ ๊ฒฝ๋งค๋ฐฉ ๋งํฌ๋ฅผ ํตํด ๊ฒฝ๋งค๋ฐฉ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
- ๊ฒฝ๋งค๋ฐฉ ์ ์ฅ ํ ๊ฐ๊ฒฉ์ ๋ฐฐํ ํ ์ ์์ผ๋ฉฐ, ์ต๊ณ ๊ฐ๋ณด๋ค ๋์ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐฐํ ํ ๊ฒฝ์ฐ 1์ ๊ตฌ๋งค์๋ก ๋ฑ๊ทนํฉ๋๋ค.
- ๋ง์ฝ ๊ฒฝ๋งค๋ฐฉ์ ๋๊ฐ๊ฒ ๋ ๊ฒฝ์ฐ, ์๋์ผ๋ก 2์๊ฐ 1์๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
- 10์ด ๋์ ์ต๊ณ ๊ฐ์ ๋ฐฐํ ์ด ๋์ค์ง ์์ผ๋ฉด ํ๋งค์์์ ๊ฐ์ธ ๋ํ์ฐฝ์ผ๋ก ์ด๋ํฉ๋๋ค.
[๊ณตํต]
- [๋ด์ ๋ณด] ํญ์ ํด๋ฆญํ๋ฉด '๋ด๊ฐ ๋ฑ๋กํ ๊ฒฝ๋งค', '๋ด๊ฐ ์์ฝํ ๊ฒฝ๋งค'๋ฅผ ๊ตฌ๋ถํ์ฌ ์ ํ์ ๋ค์ ํ์ธํ ์ ์์ผ๋ฉฐ, ๊ฒฝ๋งค์์ ํน์ ๊ฒฝ๋งค ์ฐธ์ฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ ์ฒด ๊ธฐ๊ฐ 2020. 11. 30(์) ~ 2020. 12. 18(๊ธ) ์ด 3์ฃผ ์งํ
- ์์ด๋์ด ํ์ + ๊ธฐ์ ์คํ ๊ฒํ
- Figma๋ฅผ ํตํ Mockup ์์
- LucidChart๋ฅผ ํ์ฉํ MongoDB Database Schema Modeling
- Notion Todo๋ฅผ ํ์ฉํ Task Management
- GitHub Repository Setting(Client / Server ๋ถ๋ฆฌ)
- Social Login & JWT ํ ํฐ ๋ก๊ทธ์ธ ๊ตฌํ
- ์ค๊ณ ๊ฒฝ๋งค ๋ฌผํ ๋ฑ๋ก ์ ๋ณด MongoDB ์ ์ฅ ๋ฐ ์ฌ์ง ํ์ผ AWS S3 ์ ๋ก๋
- ๋ฑ๋ก๋ ์ค๊ณ ๊ฒฝ๋งค ์ํ list-up, categorizing, ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ
- Web RTC๋ฅผ ํตํ one-to-many Peer Connection ๊ตฌํ
- ์ค์๊ฐ ์ฑํ ๋ฐ ๊ฒฝ๋งค ์ ๋ณด ๊ณต์ ๋ฅผ ์ํ Socket ์ฐ๊ฒฐ
- nodeMailer & nodeScheduler ๋ฅผ ํตํ ๊ฒฝ๋งค ์์ฝ ๊ธฐ๋ฅ ๊ตฌํ
- ๋ฌผํ ๋ฑ๋ก ๋ฐ ์์ฝ ์ด๋ ฅ ํ์ธ์ ์ํ ๋ง์ดํ์ด์ง ํญ ์ถ๊ฐ
- Refactoring & Styling & Debugging
- Netlify ํ๋ก ํธ ๋ฐฐํฌ
- AWS Elastic Beanstalk ๋ฐฑ์๋ ์๋ฒ ๋ฐฐํฌ
- Frontend & Backend Test code ์์ฑ
์ด๋ฒ ํ๋ก์ ํธ๋ ๋น๋ก ๊ท๋ชจ๋ ์์ง๋ง ์ฌ์ฌ์ฉ ํ ์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง์ด ๋ง๋ค์ด๋ณด๊ณ ์ฌ์ฌ์ฉ๋ ๋ง์ด ํด๋ณด์! ๋ผ๋ ๋ชฉํ๋ฅผ ์ ํ๊ณ ํ๋ก์ ํธ์ ์ํ์์ต๋๋ค. ์ด์ ์ํ๊ด๋ฆฌ ๋ก์ง์ ์ต๋ํ ์ปจํ ์ด๋์์ ์ด๋ฃจ์ด์ง๋๋กํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ์ต๋ํ ๊ฒฝ๋ํ์ํค๊ณ ์ ํ์๊ณ , ํฐ ๋จ์๋ผ๊ณ ์๊ฐ๋์ด์ง๋ ๋ชจ๋ฌ์ฐฝ ํน์ ์นด๋ฃจ์ ์นด๋์์๋ถํฐ ๋ค๋น๊ฒ์ด์ Tab ๋ฑ ์์ ๋จ์์ ์์๋ค๊น์ง ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๊ณ ์ ๋ ธ๋ ฅํ์์ต๋๋ค.
ํด๋น ๋ถ๋ถ์ ์ง์คํ๋ฉด์ ๋๋ ์ฅ์ ์ ์ฒซ๋ฒ์งธ, Redux์ ์ํตํ๋ ์ปจํ ์ด๋์ ๋ก์ง์ด ๊ธธ์ด์ง๊ณ ๋ณตํฉํ๊ฒ ์ ๋ฐ์ดํธ ๋๋๋ผ๋ Concern ๋ถ๋ฆฌ๊ฐ ๋ช ํํด์ง์ ๋ฐ๋ผ ๊ฐ๋ ์ฑ์ด ํฌ๊ฒ ๋จ์ด์ง์ง ์์์ต๋๋ค. ๋๋ฒ์งธ๋ก ์ปดํฌ๋ํธ ํจ์๊ฐ ์์ํด์ง์ ๋ฐ๋ผ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ํํ์ต๋๋ค.
๊ต์ฅํ ์์ ๋จ์๊น์ง ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํ๋ค๋ ๊ฒ์ด ๊ต์ฅํ ์ด๋ฐ์๋ ๋ฒ๊ฑฐ๋กญ๊ณ ์๊ฐ์ด ๋ง์ด ์์๋๋ ์์ ์ด์์ง๋ง, ์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ ๋์๋ ๋ฆฌ์กํธ์ ์ผ๋ก ์ฌ๊ณ ํด์ผํ๊ณ , ์์ํจ์๋ฅผ ์์ฑํด์ผํ๋ ๊ฒ์ด ์ค์ํ์ง์ ๋ํด ์กฐ๊ธ์ด๋๋ง ๋ฐฐ์ธ ์ ์์์ต๋๋ค.
1์ฐจ ํ๋ก์ ํธ ๋น์ ํ ์ปจํ ์ด๋ ๋ด๋ถ์์ ๋ชจ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง์ด ํ๊บผ๋ฒ์ ์์ฑ๋์ด์๋ค๋ณด๋, ์ฝ๋๊ฐ ๋๋ฌด ์ฅํฉํด์ง ๋๋์ ๋ฐ์์ต๋๋ค. ํด๋น ๋ถ๋ถ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ด๋ฒ ํ๋ก์ ํธ์์๋ redux-thunk ๋ฏธ๋ค์จ์ด๋ฅผ ์ ์ฉํด๋ณด์์ต๋๋ค. thunk ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํด๋ณธ ๊ฒฐ๊ณผ, ์๋ ์ธ๊ฐ์ง ์ ๋์ ์ฅ์ ์ ์ฒด๊ฐํ์์ต๋๋ค.
์ฒซ๋ฒ์งธ ์ปจํ ์ด๋ ์ ์ฅ์์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ์ก์ ์ ๋ํด์๋ thunk์ ์์ํ๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋ ํจ์๊ฐ ์ข๋ ๊ฐ๊ฒฐํด์ง๊ณ ๊ด์ฌ ๋ถ๋ฆฌ๋ ์๋๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋ ์์ฑ์ด ์ด๋ฃจ์ด์ง ์ ์์์ต๋๋ค.
๋๋ฒ์งธ, ํน์ ๋น๋๊ธฐ ์์ ์ ๋ํ pending, success, failure ๋จ๊ณ๊ฐ ๋ฆฌ๋์ค ์ํ๋ก ๋ช ํํ๊ฒ ๋ถ๋ฆฌ๋ ์ ์์์ผ๋ฉฐ, ์ด์ ๋ฐ๋ผ ๋น๋๊ธฐ Loading์ด๋ Error์ ๋ํ ๋ถ๋ถ์ ๊ด๋ฆฌํ๊ฑฐ๋ UI ์์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๋ฐ ์ฉ์ดํ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, thunk ๋ด๋ถ์์ 1)ํ์ฌ ๋ฆฌ๋์ค state๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ค๋ ์ง, 2)๋ค๋ฅธ ์ก์ ๋ค์ ์ฐ๋ฌ์ ํธ์ถํ ์ ์๋ค๋ ์ง, 3)๋น๋๊ธฐ ์ฒ๋ฆฌ ํ์ ํน์ URL๋ก ๋ผ์ฐํ ์ ํ๋ค๋ ์ง ๋ฑ ์์ ๋๊ฐ ๋์์ ๊ฐ๋ฐํ๊ธฐ์ ๊ต์ฅํ ํธ๋ฆฌํ์ต๋๋ค.
ํ์ง๋ง thunk๊ฐ ๋ฐํํ๋ ํจ์๊ฐ '์์ํ์ง ์๋ค'๋ผ๋ ๊ฒ์ ๋๊ผ์ต๋๋ค. thunk ๋ด๋ถ์์ ๋๋ฌด ์ฌ๋ฌ๊ฐ์ง ์ผ์ ํ๋ค๋ณด๋, ์ 3์๊ฐ ๋ณด์์ ๋ ์ ํจ์๊ฐ ๋์ฒด ์ญํ ์ ํ๋ ํจ์์ธ์ง์ ๋ํด ์ดํดํ ์ ์๋ ์ฌ์ง๊ฐ ๋ง์๊ณ , ๊ฒฐ๋ก ์ ์ผ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๊ฐ ๋์ถ๋์์ต๋๋ค. Functional Programming์ ์งํฅํ๋ React ์ํ๊ณ์์ redux-thunk๋ณด๋ค redux-saga๊ฐ ์ ๋ ์ค๋ฌด์์ ๋ง์ด ์ฐ์ด๋ ๊ฒ์ธ์ง ๊นํ ์ดํดํ๊ฒ ๋์๊ณ , redux-saga์ ๋ํด์๋ ๊ณต๋ถ๋ฅผ ํด๋ณผ ์์ ์ ๋๋ค.
ํด๋น ํ๋ก์ ํธ์์ ๊ฐ์ฅ ์ค์ ์ ์ผ๋ก ์๊ฐํ๋ ๋ถ๋ถ์ '์ด ์ํฉ์์ ์ฌ์ฉ์๊ฐ ์ด๋ค ํน์ด ํ๋์ ์ทจํ ์ ์์ผ๋ฉฐ, ๊ทธ Edge Case์ ์ด๋ป๊ฒ ๋๋นํด์ผํ ๊น?'์ ๋ํ ๊ฒ์ด์์ต๋๋ค. ๊ทธ ์ค ํ๋๊ฐ 1๋ฑ ๊ตฌ๋งค์๊ฐ ๊ฒฝ๋งค ๋์ค์ ๋ฐฉ์ ๋๊ฐ๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ์์ต๋๋ค. ์ฒ์ redux๋ฅผ ์ค๊ณํ ๋์๋ currentWinner๋ผ๋ 1๋ฑ ๊ตฌ๋งค์๋ง์ ๋ํ๋ด๋ state๋ฅผ ๊ฐ์ง๊ณ ์์๊ธฐ ๋๋ฌธ์ ์ด์ ๋์ํ์ง ๋ชปํ์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 1๋ฑ์ด ์ ๋ฐ์ดํธ ๋ ๋๋ง๋ค, 1๋ฑ์ ์ ๋ณด๋ฅผ ์์์ฌ๋ฆฌ๋ stack ์๋ฃ๊ตฌ์กฐ ํํ๋ก currentWinnerList๋ผ๋ state๋ฅผ ๊ด๋ฆฌํ์๊ณ , 1๋ฑ ๊ตฌ๋งค์๊ฐ ๋ถ๋์ดํ๊ฒ ๊ฒฝ๋งค๋ฐฉ์ ๋๊ฐ ๊ฒฝ์ฐ ํด๋น ๋ฐฐ์ด์์ ์ ๊ฑฐํด์ฃผ์ด ์๋์ผ๋ก 1๋ฑ์ด ๋ณ๊ฒฝ๋๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ์์ต๋๋ค.
์ด์ธ์๋ ๋ค๋ฅธ Edge case(๊ฒฝ๋งค ๋์ค ์๋ก๊ณ ์นจ ์ peerConnection ์ ์ง, ๊ฒฝ๋งค ์ข ๋ฃ ํ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ํตํด ๋ค์ ๊ฒฝ๋งค๋ฐฉ์ ์ ์ฅํ๋ ์ํฉ ๋ฐฉ์ง ๋ฑ)๋ค์ ๋ํด์๋ ๋ชจ๋ ์ํฉ์ ์๋ฒฝํ๊ฒ๋ ์๋์ง๋ง ์ต๋ํ ๋์ํ ์ ์๋๋ก ๊ตฌํํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ์์ต๋๋ค.
- ์ํ๋ ๋ฌผํ๊ณผ ๊ฐ๊ฒฉ์ ๋ฑ๋กํ๋ฉด, ์ฐจํ ์กฐ๊ฑด์ ํด๋นํ๋ ๋ฌผํ์ด ๋ฑ๋ก๋์์ ๋ ๋ฉ์ผ ์๋์ด ์ค๋ ์๋น์ค
- ์ค์ ๊ฒฝ๋งค๊ฐ ๋์ฐฐ๋์์ ๋ ๊ตฌ๋งค์์ ํฌ์ธํธ๊ฐ ์ ๊ฒฐ์ ๋๋ ๊ฑฐ๋ ์์คํ
- ๊ฒฝ๋งค์ ๋ค์ฑ๋ก์ด animationํจ๊ณผ, ๋ฐ์ํ ๋ฑ ๋์ฑ Interactive ํ UI ๊ตฌํ