- ํ๋ก์ ํธ ์๊ฐ ์์ : https://youtu.be/a1mq1rUVoYg
"๊ฐ์ธ๊ณผ ํ์ ์กฐํ๋ฅผ ์ํ ์ค๋งํธํ ์ค์ผ์ค๋ง"
PlanDing์ ๊ฐ์ธ์ ์ผ์ ๊ด๋ฆฌ์ ํ ํ๋ก์ ํธ์ ํ์ ์ ํ๊ณณ์์ ์ฐ๊ฒฐํ์ฌ ํจ์จ์ ์ธ ์ํต์ ๋๋ ์ค์๊ฐ ์ผ์ ํ๋ซํผ์ ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก๋ ์ฒด๊ณ์ ์ธ ํ๋๋๋ก, ํ์ผ๋ก๋ ๊ฐ๋ ฅํ ํ์ ๋๊ตฌ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
| Category | Technologies |
|---|---|
| Frontend | React, Redux, TailwindCSS |
| State | Redux Toolkit |
| Communication | Axios, StompJS, EventSource-Polyfill (SSE) |
| Utils | Day.js, Eslint, Prettier |
- ์ฃผ๊ฐยท์ผ๊ฐ ํ์ํ ์ด๋ธ: ํ๋ฃจ ์ผ์ ์ ์ง๊ด์ ์ผ๋ก ํ์ธํ๊ณ ๋๋๊ทธ ์ค ๋๋กญ์ผ๋ก ์์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ค์๊ฐ ๊ณต์ : ์์ฑํ ์ผ์ ์ ํ์๋ค๊ณผ ์ค์๊ฐ์ผ๋ก ๊ณต์ ํ๊ณ ์กฐ์จํ์ฌ ํ์ ํจ์จ์ ๊ทน๋ํํฉ๋๋ค.
- ์ด๋ ์์คํ : ๊ทธ๋ฃน์ ์์ฑํ๊ณ ํ์์ ์ด๋ํ์ฌ ์ฐ๋ฆฌ๋ง์ ํ์ ์คํ์ด์ค๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
- ์ ์ฉ ์ฑํ : ๊ทธ๋ฃน ๋ด ์ฑํ ๊ธฐ๋ฅ์ ํตํด ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ด๋ ์ค์ ๊ณต์ง๋ฅผ ์ฆ๊ฐ์ ์ผ๋ก ๊ณต์ ํฉ๋๋ค.
src
โโโ assets # ์ด๋ฏธ์ง, ํฐํธ ๋ฑ ์ ์ ๋ฆฌ์์ค
โโโ components # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ
โ โโโ GroupPage
โ โโโ ListPage
โ โโโ LoginPage
โ โโโ LoginProgressPage
โ โโโ Modal # ๊ฐ์ข
๋ชจ๋ฌ ์ปดํฌ๋ํธ ๋ชจ์
โ โโโ PersonalPage
โ โโโ ToDoPage
โ โโโ CustomCalendar.jsx
โโโ hooks # ์ปค์คํ
React Hooks
โโโ pages # ๋ผ์ฐํธ ํ์ด์ง ์ปดํฌ๋ํธ
โ โโโ GroupPage.jsx
โ โโโ ListPage.jsx
โ โโโ LoginPage.jsx
โ โโโ LoginProgressPage.jsx
โ โโโ PersonalPage.jsx
โ โโโ ToDoPage.jsx
โโโ redux # Redux ์ํ ๊ด๋ฆฌ (Slices, Store)
โโโ services # API ์์ฒญ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง
โโโ styles # ์ ์ญ ์คํ์ผ ๋ฐ ํ
๋ง
โโโ utils # ์ ํธ๋ฆฌํฐ ํจ์
โโโ App.jsx # ๋ฉ์ธ ์ฑ ์ปดํฌ๋ํธ
โโโ main.jsx # ์ง์
์ (Entry Point)1. STOMP ๋์ ์ ํตํ ๋ฉ์์ง ๊ตฌ์กฐ ์ต์ ํ
๋จ์ผ WebSocket ์ฐ๊ฒฐ์์ ์ฑํ , ์ผ์ ์ ๋ฐ์ดํธ, ์๋ฆผ ๋ฑ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ค ๋ณด๋ ํ๋ก ํธ์๋์ ๋ฉ์์ง ๋ถ๊ธฐ ๋ก์ง์ด ์ง๋์น๊ฒ ๋น๋ํด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ก์ต๋๋ค.
STOMP (Simple Text Oriented Messaging Protocol) ํ๋กํ ์ฝ์ ๋์ ํ์ฌ ๊ธฐ๋ฅ๋ณ(์ฑํ , ์ผ์ , ์๋ฆผ)๋ก ๋ ๋ฆฝ๋ ๊ตฌ๋ ์ฑ๋(Topic)์ ์ค๊ณํ์ต๋๋ค.
๋ค์ค ์ฑ๋ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ฉ์์ง ์ฒ๋ฆฌ ๋ก์ง์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ํ์ฅ์ฑ์ ๊ฐํํ๊ณ ์ฝ๋ ๊ฐ๋ ์ฑ์ ๋ํญ ๊ฐ์ ํ์ต๋๋ค.
2. ๋ฒ๋ค ์ต์ ํ: Moment.js์์ Day.js๋ก ์ ํ
์ด๊ธฐ ๋ก๋ฉ ์๋ ๋ถ์ ๊ฒฐ๊ณผ, ๋ ์ง ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๋ Moment.js๊ฐ ์ ์ฒด ๋ฒ๋ค ํฌ๊ธฐ์ ์ฝ 55%(288KB)๋ฅผ ์ฐจ์งํ๋ฉฐ ์ฑ๋ฅ ์ ํ์ ์ฃผ ์์ธ์ผ๋ก ํ์ ๋์์ต๋๋ค.
Moment.js์ API ํธํ์ฑ์ด ๋์ผ๋ฉด์๋ Tree-shaking์ ์ง์ํ๋ ๊ฒฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Day.js๋ก ์ ๊ฒฉ ๊ต์ฒดํ์์ต๋๋ค.
๋ ์ง ์ฒ๋ฆฌ ๊ด๋ จ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ 99% ์ด์(288KB โ 2KB) ์ค์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ์ต๋๋ค.
- ์ฑ๋ฅ ์ค์ฌ์ ๊ฐ๋ฐ ๋ง์ธ๋: ๋จ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ ๋์ด, ๋ฒ๋ค ์ฌ์ด์ฆ ๋ถ์์ ํตํด ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ (Day.js ๋์ )ํ๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ต์ ํํ๋ ๊ณผ์ ์ ๊ฒฝํํ์ต๋๋ค.
- ์ค์๊ฐ ๋ฐ์ดํฐ ๋๊ธฐํ์ ์ดํด: WebSocket๊ณผ STOMP, SSE๋ฅผ ํ์ฉํ์ฌ ์ฑํ ๊ณผ ์ผ์ ๊ณต์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉฐ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ๊ณผ ๋จ๋ฐฉํฅ ์ด๋ฒคํธ ์คํธ๋ฆผ์ ์ฐจ์ด ๋ฐ ์ ์ฌ์ ์ ํ์ฉ๋ฒ์ ์ตํ์ต๋๋ค.
- ํ์ ๊ณผ ์ปค๋ฎค๋์ผ์ด์ : Jira์ Confluence๋ฅผ ํ์ฉํ ์ฒด๊ณ์ ์ธ ์ผ์ ๊ด๋ฆฌ์ ๋ฌธ์ํ๋ฅผ ํตํด, 4์ธ ํ ํ๋ก์ ํธ๋ฅผ 7๊ฐ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ด๋๋ฉฐ ํ์ ์ ์ค์์ฑ์ ์ฒด๊ฐํ์ต๋๋ค.
| ๋ฐ์ฒ ํ | ๊น์์ด | ๋ฐ๋ฏผ์ | ์ด๋ฏผ๊ท |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Web (Team Leader) | Backend | Android | Design |
| @hyeon | @SangWoon123 | @comst19 | @22 |

