๋ฐ๊ธ๋ฐ๊ธ
sli.do์์ ์์ด๋์ด๋ฅผ ์๊ฐ ๋ฐ์ ์ค์๊ฐ ์ง์์๋ต ๋ฐ ํฌํ ๊ณต์ ์น ์๋น์ค
๋ฐฐํฌ ๋งํฌ
๋ฐ๋ชจ ์์
์ฃผ์ ๊ธฐ๋ฅ
- 2๊ฐ์ง ์ฌ์ฉ์ ๋ชจ๋ ์ ๊ณต (Host: ์ด๋ฒคํธ๋ฅผ ์ฃผ๊ดํ๋ ์ฌ์ฉ์, Guest: ์ด๋ฒคํธ์ ์ฐธ๊ฐํ์ฌ ์ง๋ฌธํ๋ ์ฌ์ฉ์)
- ์ค์๊ฐ ์ง์์๋ต(Guest ๋ชจ๋)
- ์ค์๊ฐ ์ง๋ฌธํ ์ ์์
- ์ง๋ฌธ์ ์ข์์๋ฅผ ๋๋ฅผ ์ ์์ (์ข์์๊ฐ ๋ง์ผ๋ฉด ์ธ๊ธฐ์ง๋ฌธ Tab ์๋จ์ชฝ์ ๋ ธ์ถ๋จ)
- ์ง๋ฌธ์ ์ด๋ชจ์ง๋ฅผ ์ถ๊ฐํ ์ ์์
- ์ง๋ฌธ์ ๋๊ธ์ ๋ฌ ์ ์์
- ์ค์๊ฐ ์ง์์๋ต (Host ๋ชจ๋)
- ์ค์๊ฐ ์ง๋ฌธ์ ๊ฒ์ดํ์ฌ ํน์ ์ง๋ฌธ์ ์ญ์ ํ ์ ์์
- ํน์ ์ง๋ฌธ์ ์๋จ์ ๊ณ ์ ์ํฌ ์ ์์
- ๋ต๋ณํ ์ง๋ฌธ์ ์ค์๊ฐ์ง๋ฌธ Tab์์ ์ง๋ฌธ์ ์ฅ์๋ก ์ด๋์ํฌ ์ ์์
- ์ค์๊ฐ ํฌํ
- ํฌํ ์ข ๋ฅ: N์ง์ ๋ค(๋ณต์์ ํ ์ง์), ๋ณ์ ์ฃผ๊ธฐ
- Host๋ ํฌํ๋ฅผ ์์ฑํ์ฌ Guest๋ค์๊ฒ ์ค์๊ฐ ํฌํ ์ฐธ์ฌ๋ฅผ ์์ฒญํ ์ ์์
- Guest๋ค์ ํฌํ๋ฅผ ํ ์ ์๊ณ , ํฌํ ์ํฉ์ ์ค์๊ฐ ๊ณต์ ๋จ
์ํค ๋งํฌ
ํ์
๊ธฐ์ ์คํ
- Front-end: React, Apollo
- Back-end: nodejs, MySQL2, Sequelize, GraphQL(Yoga), socket.io, Oauth, Docker
- Env & etc: Eslint, babel, webpack, prettier, yarn, github, slack
DataFlow
๊ธฐ์ ์ ํน์ง
- Express, socket.io, grpahQL, MySQL ์ด 4๊ฐ์ง ์๋ฒ๊ฐ Docker ์์์ ์ํธ์์ฉํ๋ฉฐ ๋์
- ๊ฐ๊ฐ์ ์๋ฒ๋ ์๋ก ์์กด์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์์ง ์๊ณ ๋ ๋ฆฝ์ ์ธ ์ฑ๊ฒฉ์ ๋๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์ ๋ฐ ์๋ฌ ์ํฉ ๋์ฒ์ ์ ์ฐ
- ๊ฐ ์๋ฒ๋ ๊ฐ๊ฐ์ ์ธ์ฆ ๋ก์ง์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ๋ก๋ถํฐ์ ๊ฐ๋ณ์ ๊ทผ์ ์ฐจ๋จ
- ํธ์คํธ ์ฑ๊ณผ ๊ฒ์คํธ ์ฑ์ด ๋๋์ด์์ง๋ง ์๋ก๊ฐ ์ค์๊ฐ์ผ๋ก ์ฐ๋
- ์ค์๊ฐ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ฉฐ ์ฑํ ๋ฟ ์๋๋ผ ์ฑํ ๊ฒ์ด ๋ฐ ์๋จ ๊ณ ์ ๋ฑ์ด ์ฆ๊ฐ์ ์ผ๋ก ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ๋ฐ์
- ์ค์๊ฐ ํฌํ๋ฅผ ํตํด ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ํฌํ ๊ฒฐ๊ณผ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ฐ์
- ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ๊ณ ๋ คํ ๋ชจ๋ฐ์ผ First
- React ์ปดํฌ๋ํธ ์ต์ ํ๋ฅผ ํตํ ํด๋ผ์ด์ธํธ ๋ฐ์์ฑ ์ต์ ํ
- Google OAuth ๋ก๊ทธ์ธ
์ฌ์ฉ์ ์ง๋จ
- ์ปจํผ๋ฐ์ค/์ธ๋ฏธ๋/์์ ์ฐธ๊ฐ์ ๋ฐ ์ด์์
๊ธฐํ ๋ฐฐ๊ฒฝ ๋ฐ ํ์์ฑ
- ์์ , ๊ฐ์ฐ, ํ ๋ก ์ค ์ค์๊ฐ ์ง์์๋ต ๋ฐ ํฌํ๋ฅผ ํตํ ์ฒญ์ค์ ๋ฅ๋์ ์ฐธ์ฌ๋ฅผ ์ ๋ํจ
- ์๋ฒฝํ ํ๊ธํ ์ง์ โ ์ด์ฉ์ ์ฐ๋ น์ธต ํ๋ (์ค์ฅ๋ /์๋)
- Front-end, back-end๊ฐ ์ ์ ํ๊ฒ ๋ฐฐ๋ถ, 4๋ช ์ด ๋์ ์ ์ผ๋ก ๊ฐ๋ฐํ ๋งํ ๋ถ๋
๋์ ์ ๊ธฐ๋ฅ
- ์ง๋ฌธ์ ๋๊ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํจ
- Realtime & Robust: ์ค์๊ฐ ์ง๋ฌธ ๊ณต์ , ์ค์๊ฐ ํฌํ ๋ฐ ์์ ์ ์๋ฒ/ํด๋ผ์ด์ธํธ ๋์
- Localization: ํ๊ตญ์ธ์๊ฒ ์น์ํ UI ๊ฐ๋ฐ (์นดํก์ ํฌํ UI, ๋ค์ํ ํ๊ธํฐํธ ์ถ๊ฐ ๋ฑ)
- Mobile first: Guest ๋ชจ๋๋ ์ค๋งํธํฐ์ ์ต์ ํ๋ UI ๊ฐ๋ฐ, ์ต์ ํ ์์ ์งํ
- Emoji ์ ์ฉ