์ฃผ์ ๋๊ธฐ
์ฃผ์ ๊ธฐ๋ฅ
1. ์ค์๊ฐ ์ฑํ
๊ณผ ๋ฉ์์ง์ ๋๊ธ(thread)
![](https://i.imgur.com/XBO24mt.gif)
2. ๋ฌดํ ์คํฌ๋กค๋ง
![](https://i.imgur.com/koIyz5S.gif)
3. ํ์ผ ๊ณต์
![](https://i.imgur.com/z0UO54I.gif)
4. ์ํฌ์คํ์ด์ค๋ง๋ค ํ๋กํ ์ค์
![](https://i.imgur.com/kgm6I5k.gif)
5. ์ฌ์ฉ์ ์ด๋
![](https://i.imgur.com/OJtcqMZ.gif)
6. ๊ณต๊ฐ/๋น๋ฐ ์ฑ๋
![](https://i.imgur.com/SGfuMfU.gif)
ํ๋ก์ ํธ ๊ตฌ์กฐ
Workflow
![](https://i.imgur.com/Ua1UNv9.png)
์๋ฆผ ๊ตฌ์กฐ
![](https://i.imgur.com/cvXOo6D.png)
Clean Architecture
![](https://i.imgur.com/B4j7S9Q.png)
ERD
![](https://i.imgur.com/4pH0XZL.png)
ํ๋ก์ ํธ ์์ํ๊ธฐ (Getting Started)
์ค๋น
MySql Version 8+
๊ฐ๋ฐ
.env.local ํ๊ฒฝ๋ณ์ ์ค์ ํด์ผ ํฉ๋๋ค.
cd /client && npm install && npm start
cd /server && npm install && npm start
๋ฐฐํฌ
.env.production ํ๊ฒฝ๋ณ์ ์ค์ ํด์ผ ํฉ๋๋ค.
sh deploy/deploy.sh
ํ์๋ผ์ธ
![](https://i.imgur.com/DtgiOyn.png)
์ฃผ์ ๊ธฐ์
- Bcrypt
- Infinite Scrolling
- JWT
- MySql
- NodeMailer
- Object Storage
- SocketIO
- Typescript
- TypeOrm
์ฐธ์ฌ ๊ฐ๋ฐ์
์ฃผ ์ญํ
- ํ๋ก ํธ์๋์์ ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๋ฐ
- Snug ํ์๋ค์ด ์ธ์ ํ Super Code Reviewer
- ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋๋ฅผ ๊ณ ๋ฏผํ๋ ๊ฐ๋ฐ์
- ์ ์๋ฏธํ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ ๋
ธ๋ ฅ
- ํ๋ก ํธ์๋์์ ๋ฐ์ดํฐ ํ๋ฆ ๊ณ ๋ฏผ
- TypeOrm ๊ธฐ๋ฐ์ Model ์ถ์ํ
- ์๋ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ
- Web Socket Event ๋ฌธ์ํ ์ถ์ง ๋ฐ ์ ๋ฆฌ
- "Post ID", "์ต์ ๋ ์ง" ๊ธฐ์ค ์ ๋ต์ ๋ฐ๋ฅธ ํ์ด์ง๋ค์ด์
๊ตฌํ
- Token ๋ฐ๊ธ ๊ธฐ๋ฅ์ Template Method ํจํด ์ ์ฉ
- HTTPS ์ ์ฉ
์ฃผ ์ญํ
- ํจ๊ณผ์ ์ธ ๋ฐฑ์๋ ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ฏผ
- Web socket์ ์ด์ฉํ์ฌ multiplexing๊ณผ demultiplexing์ ๊ตฌํ
- ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ผ ์
๋ก๋ ๊ฐ์ฒด ๊ตฌํ ๋ฐ object storage ์ฐ๊ฒฐ
- ERD ์ค๊ณ ๋ฐ typeorm entity ์ ์
- ํด๋ผ์ด์ธํธ์์ workspace ์ ๊ทผ ๊ถํ ๊ตฌํ
- ๋งค์ผ ์ ์ด๋ 1%์ฉ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์
- ํ๋ก ์ง์ ๊ณต์ ๋ฌ
์ฃผ ์ญํ
- Snug ํ๋ก์ ํธ๋ฅผ ์งํํ๋ MC, ํญ์ ํ๋ก์ ํธ์ ์ฅ์์ ๋ฃ์ด์ฃผ๋ ๋๋ฌด๊พผ
- ์ง๋ฌธํ๋ ๊ฐ๋ฐ์
- ํ์๋ค์ด ์ธ์ ํ ์์ฐ์ฑ ์ข์ ๊ฐ๋ฐ์
- ํ๋ก ํธ์๋ ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๋ฐ
- React๋ฅผ ํ์ฉํ Component ๊ธฐ๋ฐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ
- React Hook๊ณผ Context API๋ฅผ ํตํ ๋ฐ์ดํฐ ํ๋ฆ๊ด๋ฆฌ
- Typescript๋ฅผ ์ด์ฉํ์ฌ Clean ์ํคํ
์ณ ์ ์ฉ
- Client์์ Socket์ ํตํ ํต์ ๋ชจ๋ ๊ตฌํ
- ๋์์ธ๊ณผ UI interaction ๊ฐ๋ฐ
- token์ ํ์ฉํ ์ฌ์ฉ์ ์ธ์ฆ๊ด๋ฆฌ(ํ๋ก ํธ, ๋ฐฑ)
์ฃผ ์ญํ
- ํ๋ก ํธ์๋์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Component๋ฅผ ๊ณ ๋ฏผ
- ํ๋ก ํธ์๋์์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ํ์ฌ ๊ณ ๋ฏผ
- ํ๋ก ํธ์๋์์ ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๋ฐ
- ํ๋ก ํธ์๋์์ ํจ๊ณผ์ ์ธ Web Socket ํ์ฉ ๋ฐฉ๋ฒ์ ๋ํ์ฌ ๊ณ ๋ฏผ
- TypeOrm Migration ์ด์ฉํ Entity Versioning
- API ๋ฐ Entity ๋ฌธ์ํ ์์
์ถ์ง ๋ฐ ์งํ