- TSBOARD๋ ๋ฌด์์ธ๊ฐ์?
- ์ ๋ง๋ค์๋์?
- TSBOARD๋ง์ ์ฅ์ ์ ๋ฌด์์ธ๊ฐ์?
TSBOARD๋ Type Safety BOARD๋ก, ์ค์ ๊ท๋ชจ์ ์ปค๋ฎค๋ํฐ ์ฌ์ดํธ๋ฅผ ์ ์ํ ์ ์๋ ์์ง์ ๋๋ค.
- ํ๋ก ํธ์๋๋
Vue
์Vuetify
๋ก ์ ์๋์ด ์์ด ์ ๋ คํ๋ฉด์๋ ๋น ๋ฅธ UI ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. - Go์ธ์ด๋ก ์์ ํ ์๋กญ๊ฒ ์ฌ์์ฑ๋
GOAPI
๋ฐฑ์๋๋ก ๋ณด๋ค ์์ ์ ์ธ ์๋น์ค์ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
TSBOARD๋ ์ฌ์ฉ์๋ถ๋ค์ ์ํ ์์ฒด ์ปค๋ฎค๋ํฐ๋ฅผ https://tsboard.dev/ ์ฌ์ดํธ์์ ์ด์ํ๊ณ ์์ต๋๋ค. ์ฌ์ฉํ์๋ฉด์ ๊ถ๊ธํ ์ , ์ด๋ ค์ด ์ ๋ค์ ์ ์ฌ์ดํธ์์ ํธํ๊ฒ ๋ฌธ์ํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
- TSBOARD ์ค์น์ ์ ํฉํ ์๋ฒ ํ๊ฒฝ
- ๋ฏธ๋ฆฌ ์์๋์ด์ผ ํ ์ฌํญ๋ค
- ์ค์น ์งํ ์๋ด
- ์ค์น ํ ์๋ฒ ์ค์
- ์ค์น๊ฐ ์ด๋ ค์ด ๋ถ๋ค๊ป
- ํ๋ก ํธ์๋๋ Vue3 + Vuetify ๊ธฐ๋ฐ์ด๋ฉฐ,
vite
๋ก ์ปดํ์ผ์ ์งํํฉ๋๋ค. (Node.js ์ค์น ํ์)- v1.0.0 ์ด์ ๋ฒ์ ์ ์๊ตฌ๋์๋ JS/TS ๋ฐํ์
Bun
์ ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค. - Node.js๋
npm
์ฌ์ฉ์ ์ํด ์ค์น๊ฐ ํ์ํ๋ฉฐ, v22 ๋ฒ์ ์ด์ ์ต์ ๋ฒ์ ์ ๊ถ์ฅํฉ๋๋ค. - ์ฃผ๋ก ์ฌ์ฉํ๋
npm
๋ช ๋ น์ด๋ ์๋์ ๊ฐ์ต๋๋ค.npm install
: TSBOARD ํ๋ก์ ํธ๋ฅผ ๋ด๋ ค๋ฐ์ ํ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฒ์ ๋ด๋ ค ๋ฐ๋๋ฐ ์ฌ์ฉํฉ๋๋ค.npm run dev
: TSBOARD๋ฅผ ๊ฐ๋ฐ/์์ ํ ๋ ํ์ํ ๊ฐ์ด ์๋ฒ๋ฅผvite
๋ก ๋์ฐ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.npm run build
: TSBOARD์ ํ๋ก ํธ์๋๋ฅผvite
๋ก ์ปดํ์ผ ํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
- v1.0.0 ์ด์ ๋ฒ์ ์ ์๊ตฌ๋์๋ JS/TS ๋ฐํ์
- ๋ฐฑ์๋๋ ์ฌ์ ์ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ด ์ ๊ณต๋๋ฉฐ, ์๋ฒ์
libvips
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.libvips
๋ ์ด๋ฏธ์ง ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ฑฐ๋, ํฌ๋งท์ ๋ณ๊ฒฝํ๋ ๋ฑ์ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.- TSBOARD๊ฐ ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋
goapi-linux
์ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ๋libvips
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. - ๋ง์ฝ ์๋ฒ๋ฅผ ์ง์ ์ด์์ค์ด์๋ผ๋ฉด, ์ฝ๊ฒ ์ค์น ํ์ค ์ ์์ต๋๋ค. ํธ์คํ
์ฌ์ฉ์๋
libvips
์ค์น๋ฅผ ์์ฒญํด๋ณด์ธ์.- Ubuntu linux :
sudo apt install libvips-dev
- Mac :
brew install vips
- Windows :
choco install vips
- Ubuntu linux :
- ์ถ์ฒํ๋ ์ด์ ํ๊ฒฝ์ ์๋์ ๊ฐ์ต๋๋ค.
- OS : Ubuntu linux (ํน์ linux server), 22.04 ์ดํ
- CPU : 2 core ์ด์, core์๊ฐ ๋ง์์๋ก TSBOARD๊ฐ ์ด์ ๋ ์ ํ์ฉํฉ๋๋ค.
- RAM : 2GB ์ด์, ๋์์ ์์๊ฐ ๋ง์ ๊ฒฝ์ฐ
goapi
๊ฐ ~300MB๊น์ง ํ์๋ก ํ ์ ์์ต๋๋ค. - DBMS :
MySQL
ํน์Mariadb
์ต์ ๋ฒ์
- MySQL(Mariadb) ๊ณ์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ ๊ถํ์ ๊ฐ์ง๊ณ ์๊ฑฐ๋, ํน์ ๋ฏธ๋ฆฌ ์์ฑํด๋์ด์ผ ํฉ๋๋ค.
- TSBOARD๋ ์ค์น ๊ณผ์ ์์ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค (๊ธฐ๋ณธ
tsboard
)๋ฅผ ์์ฑํฉ๋๋ค. - ์ค์น ๊ณผ์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค. ๋จ, ๋ฏธ๋ฆฌ ์์ฑํด ๋์ จ๊ฑฐ๋, ์ฌ์ฉ์ ๊ณ์ ์ด ์์ฑ ๊ถํ์ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค.
- TSBOARD๋ ์ค์น ๊ณผ์ ์์ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค (๊ธฐ๋ณธ
libvips
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด ์์ง ์์ ์๋ฒ์์๋ TSBOARD ๋ฐฑ์๋๊ฐ ๋์ํ์ง ์์ต๋๋ค.
- TSBOARD๋ ๋ณ๋์ ์ค์น ํ์ผ๋ค์ ์ ๊ณตํ์ง ์์ผ๋ฉฐ, Git์ ํตํด ์ค์น ๋ฐ ์
๋ฐ์ดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋จผ์ ,
git clone https://github.com/sirini/tsboard tsboard.git
์ ์คํํฉ๋๋ค. - ๊ถ์ฅํ๋ ์ค์น ๊ฒฝ๋ก๋
/var/www/
ํ์ ๊ฒฝ๋ก์ ๋๋ค./root/
๋ ์ถ์ฒํ์ง ์์ต๋๋ค. - ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์น ์
/var/www/tsboard.git/
ํด๋ ์์goapi-linux
ํ์ผ์ด ์กด์ฌํฉ๋๋ค.
- ๋จผ์ ,
- TSBOARD๊ฐ ์์กดํ๋ ํจํค์ง๋ค์ ๋ด๋ ค๋ฐ์ต๋๋ค.
- ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์นํ์
จ๋ค๋ฉด,
/var/www/tsboard.git/
ํด๋ ์์น์์ ์์กด์ฑ ํจํค์ง๋ค์ ์ค์นํฉ๋๋ค. npm install
๋ก ์ค์นํ์ค ์ ์์ต๋๋ค.
- ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์นํ์
จ๋ค๋ฉด,
- ์ฌ์ฉํ์๋ ์๋ฒ์ OS์ ๋ง์ถฐ
goapi-linux
์ฒ๋ผ ๋ฐฑ์๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์คํํฉ๋๋ค. (์คํ ๊ถํ์ ์ฃผ์ ์ผ ํ ์๋ ์์ต๋๋ค)- ์ฒ์ ์คํํ ๊ฒฝ์ฐ, ์ค์น ์๋ด๊ฐ ๋ํ๋๋ฉฐ ๋ช๊ฐ์ง ์ ๋ณด๋ฅผ ์์ฒญ๋๋ฆฝ๋๋ค.
- ์ด ๋ MySQL(Mariadb)์ ์ ์ ์ ๋ณด ๋ฐ ๊ด๋ฆฌ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ฒ ๋ฉ๋๋ค.
- ์ ์ ์ ๋ณด๊ฐ ์ฌ๋ฐ๋ฅด๊ณ DB ์์ฑ (๋ฐ ํ ์ด๋ธ ์์ฑ) ๊ถํ์ด ์๋ค๋ฉด, ๋ฌธ์ ์์ด DB/Table๋ค์ด ์์ฑ๋ฉ๋๋ค.
- ์ค์น๊ฐ ์๋ฃ๋๋ฉด,
.env
ํ์ผ์ด ์๋ก ์์ฑ๋๋ฉฐ ํด๋น ํ์ผ์ ์ฃผ์ ์ค์ ๊ฐ๋ค์ด ์ ์ฅ๋ฉ๋๋ค.
- TSBOARD ์ค์ ํ์ผ์ ์์ ํฉ๋๋ค.
tsboard.config.ts
ํ์ผ์vi
๊ฐ์ ์๋ํฐ๋ก ์ด์ด์ฃผ์ธ์.tsboard.config.ts
์๋ TSBOARD ์ด์์ ํ์ํ ์ค์ ๋ค์ด ๋ค์ด ์์ต๋๋ค.<<< [์์ ํ์]
๋ผ๊ณ ์ ํ ๋ถ๋ถ์ ๋ณธ์ธ์ ์ฌ์ดํธ์ ๋ง๊ฒ ์์ ํ์ ์ผ ํ๋ ๋ถ๋ถ์ ๋๋ค.PROD_URL
: ๋ณธ์ธ์ ์น์ฌ์ดํธ ๋๋ฉ์ธ์ผ๋ก ๋ณ๊ฒฝTSBOARD.SITE.NAME
: ๋ณธ์ธ์ ์น์ฌ์ดํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝTSBOARD.PREFIX
: TSBOARD๊ฐ ํน์ ํด๋ ํ์๋ก ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ ์์ชฝ ํด๋๋ช ์ถ๊ฐ (๋๋ถ๋ถ์ ๋น ์นธ)QUICK_BUTTONS.WRITE
: ๋ชจ๋ฐ์ผ์์ ์ ๊ธ ์์ฑ ๋ฒํผ ํด๋ฆญ ์ ์ด๋ํ ๊ฒ์ํ ID๋ก ์์ QUICK_BUTTONS.UPLOAD
: ๋ชจ๋ฐ์ผ์์ ์ ์ฌ์ง ์ ๋ก๋ ๋ฒํผ ํด๋ฆญ ์ ์ด๋ํ ๊ฐค๋ฌ๋ฆฌ ID๋ก ์์ OAUTH.IS_READY
: ์์ ๋ก๊ทธ์ธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ true ์ค์ (.env
ํ์ผ์์ ๊ฐ ์์ ๋ก๊ทธ์ธ ๋ณ API ์ ๋ณด ๊ธฐ์ ํ์)POLICY.NAME
: ์ฌ์ดํธ ๊ด๋ฆฌ์ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝ ํ์POLICY.EMAIL
: ์ฌ์ดํธ ๊ด๋ฆฌ์์ ์ด๋ฉ์ผ ์ฃผ์๋ก ๋ณ๊ฒฝ ํ์
- ์๋ก ์์ฑ๋
.env
ํ์ผ์ ๋ง์ฐฌ๊ฐ์ง๋กvi
๋ฑ์ผ๋ก ์ด์ด์tsboard.config.ts
์ค์ ๊ณผ ๋ง์ถฐ ์์ ํด ์ค๋๋ค..env
ํ์ผ์ผ์๋tsboard.config.ts
์ ์ค๋ณต๋๋ ์ค์ ํญ๋ชฉ๋ค์ด ์์ต๋๋ค.- ๋ ํ์ผ ๋ชจ๋์์ ๋์ผํ ์ค์ ๊ฐ์ด ์ ์ฉ๋๋๋ก ํด์ฃผ์ธ์. (์: ๋ฐฑ์๋ ์๋ฒ ํฌํธ ๋ฒํธ๋ฅผ ๋ ๋ค
3003
์ผ๋ก ๋ณ๊ฒฝ) .env
ํ์ผ ์ ๋ด์ฉ์ด ์ธ๋ถ๋ก ์ ์ถ๋์ง ์๋๋ก ๊ฐ๋ณํ ์ฃผ์ํด์ฃผ์ธ์.- ์ด ํ์ผ์ด ์ญ์ ๋๋ฉด TSBOARD๋ ๋ค์ ์ค์น ํ๋ฉด๋ถํฐ ๋ํ๋ฉ๋๋ค.
index.html
ํ์ผ๋ ์๋ํฐ๋ก ์ด์ด์<title>
ํ๊ทธ์ ๋ณธ์ธ์ ์ฌ์ดํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์.- ๊ฒ์ ์์ง๋ค์ ์์ธ ์์
์ ๋๊ธฐ ์ํด
public/robots.txt
ํ์ผ์ ์๋ํฐ๋ก ์ด์ด ์ฌ์ดํธ ์ฃผ์๋ฅผ ์์ ํด ์ฃผ์ธ์.robots.txt
ํ์ผ์๋ ๊ธฐ๋ณธ์ผ๋ก TSBOARD ๊ณตํ ์ฃผ์๊ฐ ์ ํ ์์ต๋๋ค. ๋ฐ๋์ ์ฌ๋ฌ๋ถ์ ์ฃผ์๋ก ๋ณ๊ฒฝํด ์ฃผ์ธ์!
src/pages/home/HomePage.vue
ํ์ผ์ ์๋ํฐ๋ก ์ด์ด ๋ณธ์ธ ์ฌ์ดํธ์ ๋ง๊ฒ ๋ฏธ๋ฆฌ ์์ ํด ์ฃผ์ธ์.
// HomeTitle ๋ถ๋ถ์ ๋ณธ์ธ์ ์ฌ์ดํธ์ ๋ง๊ฒ ์์ ํ์
์ผ ํฉ๋๋ค
import HomeTitle from "./components/static/TsboardHomeTitle.vue"
- ์ด์ ์์ ํด์ผ ํ ๊ฒ๋ค์ ๋ชจ๋ ์๋ฃํ์์ต๋๋ค. TSBOARD๋ฅผ
build
ํฉ๋๋ค!- ์ฌ๋ฌ๋ถ์ด ๋ฐ์ผ์ TSBOARD๋ ์ด์
vite
๋ฅผ ํตํดbuild
๊ฐ ๊ฐ๋ฅํฉ๋๋ค. npm run build
๋ฅผ ์คํํฉ๋๋ค. ๋น๋๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋๋ฉด, tsboard ํด๋ ์์dist/
ํด๋๊ฐ ์์ฑ๋ฉ๋๋ค.
- ์ฌ๋ฌ๋ถ์ด ๋ฐ์ผ์ TSBOARD๋ ์ด์
- TSBOARD๋ ๊ตฌ๊ธ ๊ณ์ ์ ์ฑ ๋น๋ฐ๋ฒํธ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ
GMAIL
๋ฐ์ก์ด ๊ฐ๋ฅํฉ๋๋ค.- ๋ฉ์ผ ๋ฐ์ก์ ํตํด ์ต์ด ํ์๊ฐ์ ์ ์ด๋ฉ์ผ ์ธ์ฆ์ ์งํํ ์ ์์ต๋๋ค.
- ๋น๋ฐ๋ฒํธ ์ด๊ธฐํ๋ ๋ฑ๋ก๋ ๋ฉ์ผ๋ก ์ง์ ๊ฐ๋ฅํ๋ฏ๋ก, ๊ฐ๋ฅํ๋ฉด ๊ธฐ๋ฅ ํ์ฑํ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
- TSBOARD ์ค์น ๊ฒฝ๋ก์
.env
ํ์ผ์ ์ด์ด์ ๋ณธ์ธ์ ๊ตฌ๊ธ ๊ณ์ ๊ณผ ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฑ๋กํด์ฃผ์ธ์.
# .env
# ๊ตฌ๊ธ ์ฑ๋น๋ฐ๋ฒํธ for GMAIL ๋ฐ์ก
# ์ฐธ๊ณ ) https://velog.io/@seul06/nodemailer
[email protected]
GMAIL_APP_PASSWORD=passwordfromgoog
๊ตฌ๊ธ ๊ณ์ ๊ณ ๊ฐ์ผํฐ์ ๋ฑ๋ก๋ ์ด ๊ธ์ ํตํด ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด๋ป๊ฒ ์ป์ ์ ์๋์ง ํ์ธ ํ์ค ์ ์์ต๋๋ค. https://support.google.com/accounts/answer/185833?hl=ko
- TSBOARD๋ ๊ตฌ๊ธ, ๋ค์ด๋ฒ ๋ฐ ์นด์นด์ค ๋ก๊ทธ์ธ์ ์ง์ํฉ๋๋ค.
- ํด๋น ๋ก๊ทธ์ธ ์๋น์ค ์ ๊ณต์ ์ฒด์์ ์๊ตฌํ๋ ๊ฐ๋ฐ์ ๋ฑ๋ก ๋ฐ OAuth ํด๋ผ์ด์ธํธ ID, ๋น๋ฐ๋ฒํธ๋ฑ์ ์ง์ ์ค๋นํ์ ์ผ ํฉ๋๋ค.
- ์ด๋ฏธ ํด๋น ์ ๋ณด๋ค์ ๊ฐ์ง๊ณ ๊ณ์ ๋ถ๋ค์
.env
ํ์ผ์์ ID, Secret ์ ๋ณด๋ฅผ ์ ๋ ฅํ์๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. - ์ถ๊ฐ๋ก,
tsboard.config.ts
ํ์ผ์์OAUTH
ํญ๋ชฉ์ ํตํด ์ฌ์ฉํ ์์ ๋ก๊ทธ์ธ์ ๊ฐ๋ณ์ ์ผ๋ก ์ ํํ์ค ์ ์์ต๋๋ค. (์ฌ์ฉ์ ์์น ์์ผ์๋ฉดIS_READY
ํญ๋ชฉ์false
๋ก ๋ณ๊ฒฝ ํ ์ ์ฅํ์๋ฉด ๋ฉ๋๋ค.)tsboard.config.ts
ํ์ผ์ ์์ ํ์ ๊ฒฝ์ฐnpm run build
๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผbuild
ํด์ฃผ์ธ์!- ๊ทธ ํ TSBOARD ์ค์น ๊ฒฝ๋ก (์:
/var/www/tsboard.git/
)์์goapi-linux
๋ก ๋ฐฑ์๋๋ฅผ ์คํํด ์ฃผ์ธ์.
# .env
# ๊ตฌ๊ธ OAuth ํด๋ผ์ด์ธํธ
OAUTH_GOOGLE_CLIENT_ID=your_google_client_id_from_https://console.cloud.google.com
OAUTH_GOOGLE_SECRET=your_google_client_secret_from_https://console.cloud.google.com
# ๋ค์ด๋ฒ OAuth ํด๋ผ์ด์ธํธ
OAUTH_NAVER_CLIENT_ID=your_naver_client_id_from_https://developers.naver.com
OAUTH_NAVER_SECRET=your_naver_client_secret_from_https://developers.naver.com
# ์นด์นด์ค OAuth ํด๋ผ์ด์ธํธ
OAUTH_KAKAO_CLIENT_ID=your_kakao_client_id_from_https://developers.kakao.com
OAUTH_KAKAO_SECRET=your_kakao_client_secret_from_https://developers.kakao.com
OpenAI์ API Key๊ฐ ์๋๋ผ๋ TSBOARD ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ฌ์ฉ์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. AI๋ฅผ ํ์ฉํ๋ ๊ธฐ๋ฅ๋ค๋ง ๋นํ์ฑํ ๋ฉ๋๋ค.
- TSBOARD๋ OpenAI์
ChatGPT-4o
๋ชจ๋ธ์ ํ์ฉํ์ฌ ์ด๋ฏธ์ง ์ค๋ช ๊ธ ์ถ์ถ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ค ์ ์์ต๋๋ค.- ์ด ๊ธฐ๋ฅ์ ์์ ๋ก๊ทธ์ธ์ฒ๋ผ ์ํ์ค ๊ฒฝ์ฐ์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. (OpenAI์ API Key ๊ฐ์ด ํ์ํฉ๋๋ค.)
- ๊ธฐ๋ฅ ํ์ฑํ๋ฅผ ์ํด์๋
.env
ํ์ผ์OPENAI_API_KEY
๋ถ๋ถ์ ์ ๋ฐ์ดํธ ํ์ ์ผ ํฉ๋๋ค. - OpenAI์ API ๋ฐ๊ธ์ ๋ฌด๋ฃ๊ฐ ์๋๋๋ค! TSBOARD๋ OpenAI๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํ์ฉํ ๋ฟ์ ๋๋ค.
# .env
# OpenAI API Key
OPENAI_API_KEY=your_openai_api_key_from_https://openai.com/index/openai-api/
์ด ์๋ด๋ Visual Studio Code (vscode)๋ฅผ ์ด๋ฏธ ์ฌ์ฉํด ๋ณด์ ๋ถ๋ค์ ๋์์ผ๋ก ํฉ๋๋ค. Go ์ธ์ด๋ก ์์ฑ๋ ๋ฐฑ์๋๋ ์ง์ ์์ ์ ์ํ์ค ๊ฒฝ์ฐ https://github.com/sirini/goapi ํ๋ก์ ํธ๋ฅผ clone ํ์ ์ ์์ ํ์๋ฉด ๋ฉ๋๋ค. ์ด ๋ Go ์ธ์ด ํด์ฒด์ธ/์ปดํ์ผ๋ฌ๊ฐ ์ฌ์ฉํ์๋ ๊ธฐ๊ธฐ์ ๋ฏธ๋ฆฌ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
- TSBOARD๋ฅผ ๋ณธ์ธ์ Linux PC or Mac ์ ๋จผ์ ์ค์นํ์ฌ ๊ฐ๋ฐ ๋ชจ๋๋ก ์ฌ์ฉํด ๋ณด์ค ์๋ ์์ต๋๋ค.
vscode
๋ฅผ ์คํ ํ TSBOARD ํด๋๋ฅผ ์ฌ์ ๋ค์, ํฐ๋ฏธ๋์ 2๊ฐ ๋์๋๋ค.- ๋จผ์ TSBOARD ํด๋ ๋ด
tsboard.config.ts
ํ์ผ์ ์ด๊ณ ,IS_DEV
ํญ๋ชฉ์true
๋ก ์์ ํฉ๋๋ค. - ํฐ๋ฏธ๋์ ์ด๊ณ
npm run dev
๋ฅผ ์คํํ์ฌvite
๊ฐ TSBOARD์ ํ๋ก ํธ์๋๋ฅผ ๋ณด์ฌ์ค ์ ์๋๋ก ํฉ๋๋ค. - ๋ค๋ฅธ ํฐ๋ฏธ๋์ ์ด๊ณ
goapi-linux
๋ฅผ ์คํํ์ฌ TSBOARD์ ๋ฐฑ์๋๋ฅผ ์คํํ๋๋ก ํฉ๋๋ค.- Linux๊ฐ ์๋ ๋ค๋ฅธ ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ์ค ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด Mac์ผ ๊ฒฝ์ฐ
goapi-mac
์ ์คํํด ์ฃผ์ธ์. - ๊ฒฝ์ฐ์ ๋ฐ๋ผ์, ๋ฐฑ์๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์คํํ๊ธฐ ์ํ ์คํ ๊ถํ ๋ถ์ฌ๋ฅผ ํ์
์ผ ํ ์ ์์ต๋๋ค.
chmod +x ./goapi-linux
- Linux๊ฐ ์๋ ๋ค๋ฅธ ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ์ค ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด Mac์ผ ๊ฒฝ์ฐ
- ๋ธ๋ผ์ฐ์ ์์
http://localhost:3000
์ฃผ์๋ก ์ ์ํ๋ฉด TSBOARD ์ฒซํ๋ฉด์ ๋ณด์ค ์ ์์ต๋๋ค.
์ ๋ฐ์ดํธ ์ ์ ๊ธฐ์กด TSBOARD๋ ๋ ๋ค๋ฅธ ๊ฒฝ๋ก์ ๋ฐฑ์ ํ๋ ๊ฑธ ๊ถ์ฅํฉ๋๋ค. DB์ ๊ฒฝ์ฐ์๋
mysqldump
ํ๋ก๊ทธ๋จ์ ํตํด ๋ฐฑ์ ํ์๊ณ ์์ ์ ์งํํ์ธ์!
- ์ค์น ํ TSBOARD๋ฅผ ์
๋ฐ์ดํธ ํ๊ณ ์ ํ ๋
git pull
๋ฅผ ์คํํ์๋ฉด ๋ฉ๋๋ค.git pull
์งํ ์ ์ฌ๋ฌ๋ถ์ด ์ง์ ์์ ํ์ ํ์ผ๊ณผ, TSBOARD์์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ์ถฉ๋๋ ์ ์์ต๋๋ค.- ์ด ๋๋ ๋ณธ์ธ์ ์์ ๋ด์ฉ๊ณผ TSBOARD ๋ณ๊ฒฝ์ฌํญ์ ์ง์
merge
ํ์ ์ผ ํฉ๋๋ค. - ๋ณ๊ฒฝ์ฌํญ์ด ๋ง์ด ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ค์ธ ๋๋, ์์
ํ์ ๋ด์ฉ์ ๋จผ์ ๋ฐฑ์
ํ ์ดํ ํ๋์ฉ
merge
ํด์ฃผ์ธ์. git stash
๋ช ๋ น์ด๋ฅผ ํตํด ๋ฐ๋ก ์์ ํ์ ๋ด์ฉ์ ์ ์ ์น์ด ํ, ๋ณ๊ฒฝ์ฌํญ์ ์ ๋ฐ์ดํธํ๊ณ ๋ค์ ์ด์ ์์ ์ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.- ๊ฐ๋ฅํ๋ฉด
git pull
๋ช ๋ น์ด๋ฅผ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ์์๋ก ์ ๋ฐ์ดํธ ํ ์ ์๋๋ก ๊ด๋ฆฌํด ์ฃผ์ธ์!
git pull
์ดํ์๋npm run build
๋ช ๋ น์ด๋ก ํ๋ก์ ํธ๋ฅผbuild
ํฉ๋๋ค!- ๋น๋ ํ๊ธฐ ์ ์
tsboard.config.ts
ํ์ผ์ด๋index.html
ํน์public/robots.txt
๊ฐ ์ ๋๋ก ์์ ๋์๋์ง ํ์ธํด ๋ณด์ธ์! src/pages/home/HomePage.vue
ํ์ผ์ ๋ฐ์ํ์ ์์ ๋ค์ด ์์ ๊ฒฝ์ฐ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ ํ์ธํด ๋ณด์ธ์.- ์ด ๋ฐ์ ์์ ํ์ ํ์ผ๋ค์ด
git pull
์ดํ์๋ ์ ๋๋ก ๋ณ๊ฒฝ์ฌํญ์ ์ ์งํ๊ณ ์๋์ง ํ์ธ์ด ํ์ํฉ๋๋ค.
- ๋น๋ ํ๊ธฐ ์ ์
- ์ฌ์ฉํ์๋ ์๋ฒ์ ์ด์์ฒด์ ์ ๋ง์ถฐ์ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์คํํ์๋ฉด ๋ฉ๋๋ค.
goapi-linux
์ฒ๋ผ ์คํํ์๋ฉด ๋๋ฉฐ, ๊ฐ๊ธ์ tmux
๋screen
๊ณผ ๊ฐ์ ๋ณ๋์ ์ธ์ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ ํตํด์ ์คํ์ ๊ถ์ฅํฉ๋๋ค.- ๊ทธ๋ฅ ์คํํ์๋ฉด, ํฐ๋ฏธ๋์ ๋ซ์ผ์ค ๊ฒฝ์ฐ TSBOARD์ ๋ฐฑ์๋ ์๋ฒ๋ ๋ฐ๋ก ์ข ๋ฃ๋ฉ๋๋ค!
- ๊ฒฝ์ฐ์ ๋ฐ๋ผ, ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์คํ ๊ถํ์ ๋ถ์ฌํด ์ฃผ์
์ผ ํ ์๋ ์์ต๋๋ค:
chmod +x ./goapi-linux
์ฒ๋ผ์!
TSBOARD๋ ๋ณด์์ ์ํด
SSL
์ ์ฉ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
Ubuntu 22.04์์ Nginx ์ํธํํ๊ธฐ https://velog.io/@mero/ubuntu-22.04%EC%97%90%EC%84%9C-Nginx-%EC%95%94%ED%98%B8%ED%99%94%ED%95%98%EA%B8%B0 ํน์ ๋ฌด๋ฃ SSL ์ธ์ฆ์์ธ letsencrypt ์ค์น ๋ฐฉ๋ฒ์ ๊ฒ์ํ์ ํ ์ด์ํ์๋ ์๋ฒ์ ์ ์ฉํด ๋ณด์ธ์.
- ์ถํํฉ๋๋ค! ์ฌ๋ฌ๋ถ์
git clone
โnpm install
โ./goapi-linux
๊ณผ์ ๊น์ง ๋ฌด์ฌํ ๋ง์ณค์ต๋๋ค. ์ด์ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ๋ด ์๋ค! - ์๋ ๋จ๊ณ์์๋ Ubuntu server ์
Nginx
๊ฐ ์ค์น๋์ด ์๋ ๊ฒ์ผ๋ก ๊ฐ์ ํฉ๋๋ค. (๋ง์ฝapache2
๊ฐ ์ค์น๋์ด ์๋๋ผ๋, ์๋ฅผ ๋ค์ด/etc/apache2/sites-enabled/000-default
ํ์ผ์ ์์ ํ์๋ฉด ๋ฉ๋๋ค.) Nginx
์ ์ค์ ํ์ผ ๋ด์ฉ์ ์ผ๋ถ ์์ ํด์ผ ํฉ๋๋ค.vi /etc/nginx/sites-enabled/default
๋ฅผ ์คํํฉ๋๋ค.server { ... }
์ฌ์ด์ ๋ด์ฉ๋ค์ ์์ ํด์ผ ํฉ๋๋ค. TSBOARD๊ฐ ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์น๋ ๊ฑธ๋ก ๊ฐ์ ํฉ๋๋ค.
# /etc/nginx/sites-enabled/default
#
# TSBOARD๊ฐ ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์น๋์ด ์๊ณ ,
# ํ์ฌ ์ด์์ค์ธ ์น์ฌ์ดํธ์ ๋๋ฉ์ธ์ด tsboard.dev ์ธ๊ฑธ ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
# ์์ธ๋ฌ, tsboard.config.ts ํ์ผ์์๋ API_PORT ๊ฐ์ด 3003์ผ๋ก ๋์ด ์๋ ๊ฑธ ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
# .env ํ์ผ์์๋ GOAPI_PORT ๊ฐ์ด 3003์ผ๋ก ๋์ด ์๋ ๊ฑธ ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
# (๋ง์ฝ ํฌํธ ๋ฒํธ ๋ณ๊ฒฝ์ด ํ์ํ๋ค๋ฉด, API_PORT, GOAPI_PORT ๋ ๋ค ๋์ผํ ๊ฐ์ผ๋ก ์ ์ฅํ์
์ผ ํฉ๋๋ค!)
#
server {
root /var/www/tsboard.git/dist; # TSBOARD_์ค์น๊ฒฝ๋ก_์์/dist
index index.html index.htm;
server_name tsboard.dev; # ์ฌ์ฉํ์๋ ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝ ํ์
# ์ต๋ ์
๋ก๋ ํ์ฉ ํฌ๊ธฐ, tsboard.config.ts ํ์ผ์ SIZE.MAX_FILE ์ฃผ์ ์ฐธ์กฐ
client_max_body_size 20M;
location /upload {
root /var/www/tsboard.dev; # TSBOARD_์ค์น๊ฒฝ๋ก_์์, ์ด ํด๋ ์๋์ upload ํด๋ ์์น
try_files $uri $uri/ =404;
}
location / {
try_files $uri $uri/ /index.html; # Vue Router ํ์ฉ์ ์ํ ์ค์ (CSR)
}
# v1.0.0๋ถํฐ ๊ธฐ์กด /tsapi ๊ฐ /goapi ๋ก ๋ณ๊ฒฝ๋จ (ํ ๋ฐฑ์๋์ ์ถฉ๋ ๋ฐฉ์ง)
location /goapi {
# tsboard.config.ts ์์ PORT_PROD ๊ฐ๊ณผ ์๋ 3003๊ณผ ๋์ผํด์ผ ํจ
proxy_pass http://127.0.0.1:3003/goapi;
proxy_buffering off;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# ์ด๋ฏธ SSL ์ค์ ์ ํ์
จ๋ค๋ฉด ๋ณดํต ํ๋จ์ ๊ด๋ จ ๋ด์ฉ์ด ๋ํ๋ฉ๋๋ค.
}
- ์ถ๊ฐ๋ก,
apache2
์น์๋ฒ๋ฅผ ์ฌ์ฉ์ค์ด์ ๋ถ๋ค์ ์๋ ๋ด์ฉ์ ์ฐธ์กฐํด ์ฃผ์ธ์! (์ฐธ๊ณ : https://enginnersnack.tistory.com/15)
#
# /etc/apache2/site-available/000-default.conf
#
# apache2 ์น์๋ฒ ์ฌ์ฉ ์ TSBOARD ์ค์ ์์์
๋๋ค. ์ ์ฐธ๊ณ ํ์ด์ง๋ ํ์ธํด๋ณด์ธ์!
#
<VirtualHost *:443>
DocumentRoot /var/www/tsboard.git/dist # TSBOARD_์ค์น๊ฒฝ๋ก_์์/dist
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# tsboard.config.ts ์์ PORT_PROD ๊ฐ๊ณผ ์๋ 3003 ์ด ๋์ผํด์ผ ํจ
ProxyPass /goapi http://127.0.0.1:3003/goapi
ProxyPassReverse /goapi http://127.0.0.1:3003/goapi
</VirtualHost>
- ์ค์น ๊ณผ์ ์์์ ์ด๋ ค์์ ์ด๊ฒจ๋ด๊ณ ์ ํ๋ ์ฌ๋ฌ๋ถ๋ค์ ์์ํฉ๋๋ค!
- ์ด๋ ค์์ ํจ๊ป ๋ ผ์ํด๋ณด๊ณ ์ถ๋ค๋ฉด https://tsboard.dev ์ฌ์ดํธ์ ์์ฃผ์ธ์.
- ๋ฏผ๊ฐํ ๋ด์ฉ์ ๋น๋ฐ๊ธ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์!
์๋๋ถํฐ๋ ์์๋๋ฉด ์ธ์ ๊ฐ ์ธ๋ชจ๊ฐ ์์์๋ ์๋ ๋ด์ฉ๋ค์ ๋๋ค. ํน์ TSBOARD์ ์ด์งธ์ ๋ณ๋๋ก ์คํจ์ ์ ํํ๋ ๋ฉ๋ด๊ฐ ์๋์ง ๊ถ๊ธํ์ ๋ถ๋ค์ 3๋ฒ ์ปค์คํ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํด ์ฃผ์ธ์!
- ์ ์ฒด ๊ตฌ์กฐ
- ํ ์ด๋ธ ๊ตฌ์กฐ
- ์ปค์คํ ๊ฐ์ด๋
- ํ๋ก ํธ์๋๋
Vue
,Vuetify
,Vue Router
,Pinia
๊ทธ๋ฆฌ๊ณ ์๋ํฐ์tiptap
์ด ์ฌ์ฉ๋ฉ๋๋ค. .vue
ํ์ผ์์ UI๋ ๋๋ถ๋ถVuetify
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฑธ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. ๋๋ถ๋ถ<v-card>
์ฒ๋ผv-
์ ๋์ฌ๋ฅผ ๊ฐ์ง๋๋ค.- ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋,
.vue
ํ์ผ์ด ๋ธ๋ผ์ฐ์ ์ ๋ถ๋ ์์ ์ ์ด๊ธฐํ ์์ ๋ค์ ํด์ผ ํ ๋๋ Pinia๋ก ์ ์ํ ์คํ ์ด๋ค์import
ํ ํ ํ์ํ ํจ์๋ค์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ์ต๋๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ UI์ชฝ ๋ก์ง๋ค, ํนํ ์๋ฒ์ชฝ์ ์์ฒญ์ ๋ณด๋ด๋ ํจ์๋ค์src/store/
๋ด ํ์ผ๋ค์ ์ฐธ์กฐํ์๋ฉด ๋ฉ๋๋ค. - ํ์ด์ง ์ด๋์ ํญ์ Vue Router ๊ธฐ์ค์
๋๋ค.
- ๋ง์ฝ ๊ธฐ์กด์ ๊ฒ์ํ ๋ชฉ๋ก๋ณด๊ธฐ ํ์ด์ง์ธ
src/pages/board/List.vue
์ ๊ทธ๋๋ก ๋ ์ํ์์, ๋ค๋ฅธ ๋์์ธ์ ๋ชฉ๋ก๋ณด๊ธฐ ํ์ด์ง๋ฅผ ์๋ฅผ ๋ค์ดsrc/pages/something_new_board/AwesomeList.vue
๊ฒฝ๋ก์ ๋ง๋ค์๋ค๊ณ ํฉ์๋ค. - ๊ฒ์ํ ๋ชฉ๋ก์ ์๋ก ๋ง๋ ๋์์ธ์ผ๋ก ๋ณด๊ธธ ์ํ๋ค๋ฉด, ์ถ๊ฐ๋ก
src/router/board.ts
ํ์ผ์ ์ด์ด์@/pages/board/List.vue
๋ก ์ ํ ๋ถ๋ถ์ ๋ชจ๋@/pages/something_new_board/AwesomeList.vue
๋ก ์์ ํด์ผ ํฉ๋๋ค. - TSBOARD๋ Client Side Rendering ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ ์ ๊ฒฝ๋ก๋ ๋ฐ๋์
src/router/index.ts
๋ฅผ ํตํด ๊ฒฐ์ ๋ฉ๋๋ค.
- ๋ง์ฝ ๊ธฐ์กด์ ๊ฒ์ํ ๋ชฉ๋ก๋ณด๊ธฐ ํ์ด์ง์ธ
- ์ด์ฉ๋ฉด ๊ฐ์ฅ ๊ถ๊ธํ์ค ์ ์๋ ๋ถ๋ถ์ธ๋ฐ, TSBOARD๋ Client Side Rendering ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
- TSBOARD ๊ฐ๋ฐ ์ด๊ธฐ๋ถํฐ, ๊ฐ๋ฅํ๋ฉด ์๋ฒ์ ๋ถ๋ด์ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ ํ์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ฑ๋ฅ์ ๊ณ์ํด์ ๊ฐ์ ๋๊ณ ์๊ณ , ๋คํธ์ํฌ๋ ์ ์ ๋นจ๋ผ์ง๋ฉด์ ์ด์ ๋ ์ง์ง ํด๋ผ์ด์ธํธ๊ฐ ์ข ๋ ๋ถ๋ด์ค๋ฐ ์์ ๋ค์ ๋ง์ด ํด๋ ๊ด์ฐฎ๊ฒ ๋ค๊ณ ์๊ฐํ์๊ฑฐ๋ ์.
- ๊ทธ๋ฆฌ๊ณ , SEO(Search Engine Optimization) ๊ด๋ จํ ๋์ฑ ์ ์๋ ๋ณ๋์ ์ ์์ ์ค๋ช ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
-
๊ฒ์ ์์ง ์ต์ ํ๋ฅผ ์ํด TSBOARD๋
public/robots.txt
ํ์ผ์ ์ง์ ๋Sitemap:
๊ฒฝ๋ก๋ฅผ ํตํด ์๋ฒ์์ ๋ ๋๋งํ main.html ํ์ด์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. (v0.8.40 ์ด์ ๋ฒ์ ๋ถํฐ ์ง์)- ๊ธฐ๋ณธ ๊ฒฝ๋ก๋
https://tsboard.dev/goapi/seo/sitemap.xml
์ด๋ฉฐ, ์ค์น ์๋ด์์tsboard.dev
๋ถ๋ถ์ ๋ณธ์ธ์ ๋๋ฉ์ธ์ผ๋ก ์์ ํด์ผ ํ๋ค๊ณ ๋ง์๋๋ฆฐ ์ ์ด ์์ต๋๋ค!
- ๊ธฐ๋ณธ ๊ฒฝ๋ก๋
-
์๋
sitemap.xml
์์ ๋ด์ฉ์ ๋๋ค.<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://tsboard.dev/goapi/seo/main.html</loc> <changefreq>daily</changefreq> <priority>1.0</priority> <lastmod>2024-06-02</lastmod> </url> <url> <loc>https://tsboard.dev/goapi/seo/about.html</loc> <changefreq>monthly</changefreq> <priority>0.3</priority> <lastmod>2024-06-02</lastmod> </url> <url> <loc>https://tsboard.dev/board/free</loc> <changefreq>daily</changefreq> <priority>1.0</priority> <lastmod>2024-06-02</lastmod> </url> <url> <loc>https://tsboard.dev/board/photo</loc> <changefreq>daily</changefreq> <priority>1.0</priority> <lastmod>2024-06-02</lastmod> </url> </urlset>
-
์ ์์์์ ๊ฐ์ฅ ์ค์ํ ๋งํฌ๋
https://tsboard.dev/goapi/seo/main.html
์ ๋๋ค. ํฌ๋กค๋ฌ๊ฐ ํด๋น ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด, ์ฌ๋ฌ๋ถ์ ์๋ฒ์์ TSBOARD๊ฐ ์ค๋นํ html ํ์ด์ง๋ฅผ ๋ง๋๊ฒ ๋ฉ๋๋ค. -
ํด๋น ํ์ด์ง์์๋
src/pages/home/HomePage.vue
์์ ๋ณด์ฌ์ง๋ ๊ฒ์๊ธ๋ค ๋ฐ ๋๊ธ๋ค์ด ์ถ๋ ฅ๋ฉ๋๋ค. ์ผ๋ง๋ ๋ง์ด ์ถ๋ ฅํด์ ํฌ๋กค๋ฌ์๊ฒ ์ ๊ณตํ ์ง๋tsboard.config.ts
์SEO
ํญ๋ชฉ์ ํตํด ์กฐ์ ํ์ค ์ ์์ต๋๋ค. -
ํฌ๋กค๋ฌ๊ฐ ์์งํ๋ ๋ด์ฉ ์ค์ ๊ฒ์๊ธ ๋งํฌ๋ ์ฌ์ดํธ ๋งํฌ์ ๊ฒฝ์ฐ ๊ธฐ์กด ํ์ด์ง๋ก ๋งํฌ๊ฐ ๊ฑธ๋ฆฝ๋๋ค. ๋ฐ๋ผ์ ๊ฒ์์ ํตํด ํด๋น
main.html
ํ์ด์ง๋ฅผ ์ด๋ํ ์ฌ์ฉ์๋ ์ด๋ค ๋งํฌ๋ฅผ ํด๋ฆญํ๋ ์๋ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๊ฒ ๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๋ ์์
main.html
ํ์ด์ง๋ฅผ ํตํด ๊ฒ์์ ํ์ํ ๋ฐ์ดํฐ๋ค์ ์ป๊ณ , ์ฌ์ฉ์๋ ๊ฒ์ ์์ง์ด ์์งํmain.html
ํ์ด์ง๋ฅผ ํตํด ๋ค์ ๊ธฐ์กด์ CSR ํ์ด์ง๋ก ์ ์ ๋๋ ์ ์ ๋๋ค.
- TSBOARD๋ v1.0๋ถํฐ
Go
์ธ์ด๋ก ์์ฑ๋goapi
๋ฐฑ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.- ์ด๋ฅผ ํตํด, ๋ฐฑ์๋์์ Bun๊ณผ ๊ฐ์ JS/TS ๋ฐํ์์ ๋ํ ์์กด์ฑ์ ์ค์ด๊ณ , ์ด๋์๋ ๋์ ๊ฐ๋ฅํ๋๋ก ์ง์ํ๊ณ ์ ํฉ๋๋ค.
- ๋ํ ๋ ํจ์จ์ ์ผ๋ก ์๋ฒ ์์์ ํ์ฉํ ์ ์๋๋ก ๊ฐ์ ํ๊ณ , ์์ ์ฑ์ ๊ฐ์ ํ๊ณ ์ ํฉ๋๋ค.
- ํ์ฌ๊น์ง์ ์์ฒด ๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
- ๊ธฐ์กด
Bun
๋ฐํ์ ๊ธฐ๋ฐ ๋ฐฑ์๋๋ฅผ 100%๋ก ๋๊ณ ๋ณผ ๋, ๋์ ์๋๋ 90% ~ 95% ์์ค์ ๋๋ค. ๋๋ถ๋ถ์ ์์ ์ด DB ์ ์ถ๋ ฅ๊ณผ ๊ด๊ณ๊ฐ ์์ด์ ์๋ ์ธก๋ฉด์์๋ ์คํ๋ ค ๊ธฐ์กดBun
๋ฐํ์์ด ์ฐ์ธํฉ๋๋ค. ์ฑ๋ฅ ํฅ์์ ์ํ ์ถ๊ฐ์ ์ธ ํ๋์ v1.0 ์ถ์ ํ ์งํ ์์ ์ ๋๋ค. - CPU ์ฌ์ฉ๋์ ๋์ ์ ์ 100๋ช ์ด์ ๊ธฐ์ค์ผ๋ก ์ฝ 300%~500% ๊ฐ๊น์ด ๋์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ ์ ๊ฒฝ์ฐ ์ฝ 60% ~ 70% ์์ค์ด๋ฉฐ, ๊ณ ๋ถํ ์กฐ๊ฑด์ด ์๋ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ผ์ด 20% ~ 30% ์์ค๊น์ง ๋จ์ด์ง๋๋ค.
- ๊ธฐ์กด
Go์ธ์ด๋ก ์ฌ์์ฑ๋ ๋ฐฑ์๋๋ https://github.com/sirini/goapi ์์ ์ ์ฒด ์ฝ๋๋ฅผ ํ์ธํด ๋ณด์ค ์ ์์ต๋๋ค. ์ด๋ฏธ์ง ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋
bimg
๊ฐlibvips
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ก ์ธํด, ์๋ฒ์libvips
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ ์ ์ค์นํด ๋์ ์ผ ํฉ๋๋ค.
- TSBOARD๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ทํ๋ ํ
์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์งํฅํ์ง๋ง,
SELECT
์ฟผ๋ฆฌ์ ํ์๋ฅผ ์ค์ด๊ธฐ ์ํด์๋ ํน์ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ๋ณด๋ค ํธํ๊ฒ ํ๊ธฐ ์ํด ์ผ๋ถ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.- ์๋ฅผ ๋ค์ด,
post
/post_hashtag
/post_like
/comment_like
/file
/image
ํ ์ด๋ธ์์ ๊ณตํต์ ์ผ๋ก ๋ค์ด๊ฐ๋board_uid
์ปฌ๋ผ์ ๊ฒฝ์ฐ ๊ฒ์ํ ๋จ์๋ก ํต๊ณ๋ฅผ ๋ฝ์๋ณด๊ฑฐ๋, ์ญ์ ๋ฑ์ ์ฒ๋ฆฌ๋ฅผ ๋ณด๋ค ํธํ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ค์ ์์ด๋ ๋๋ ์ปฌ๋ผ์ ์ผ๋ถ๋ก ์ถ๊ฐํ ๊ฒ์ ๋๋ค. - ์ ์ ํฌ๊ธฐ๋งํผ์ ๋น์ฉ์ ์ถ๊ฐ๋ก ์ง๋ถํ๊ณ , ๋์ ๊ด๋ฆฌ์ ํธ์์ฑ์ ๋์ธ ์ ์ ๋๋ค.
- ๋ฐ๋ฉด,
post
ํ ์ด๋ธ์hit
์ปฌ๋ผ๊ณผ ๋๋ถ์ด ์์ด์ผ ํ ๊ฒ ๊ฐ์reply_count
๋like_count
์ปฌ๋ผ์ ์กด์ฌํ์ง ์์ต๋๋ค. ๊ฐ๊ฐ ์ฐ๊ด ํ ์ด๋ธ์ ๊ฒ์ํด์ ํ์ํ ๋๋ง๋ค ์นด์ดํ ์ ํ์ฌ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ ์๋ํ ๊ฒ์ผ๋ก, ๊ฒ์๊ธ์ ์ ์ฅํ๋ ํ ์ด๋ธ์post
ํ ์ด๋ธ ํ๋๋ง ์ง์ ํ ๋์ , ๋๊ธ์ด ์์ฑ/์ญ์ ๋๊ฑฐ๋ ์ข์์๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฆ์UPDATE
๊ฐ ์ผ์ด๋์ง ์๋๋ก ํ๊ธฐ ์ํจ์ ๋๋ค. ๋ํpost
,comment
ํ ์ด๋ธ์ด ๊ฐ๋ฅํ ์์ ํฌ๊ธฐ๋ฅผ ์ ์งํ ์ ์๋๋ก ํ๊ธฐ ์ํด์์ด๊ธฐ๋ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด,
- ๊ฐ์ฅ ๊ถ๊ธํดํ์ค ๋ถ๋ถ, ์ ๊ฒ์ํ์ ์์ฑํ ๋๋ง๋ค ํ
์ด๋ธ์ ์๋ก ๋ง๋ค์ง ์๊ณ post, comment ํ
์ด๋ธ์ ๊ฐ๊ฐ ํ๋๋ก ์ ์งํ๋ ์ ํ์ ํ๋์ง ์ค๋ช
๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
- TSBOARD๋ ํ ์ด๋ธ๋ค์ ์ธ๋ฑ์ค์ ๋น์ฉ์ ์ข ๋ ์ง๋ถํ๊ณ , ๋์ ํ ์ด๋ธ ์์ฒด๋ฅผ ๊ฒ์ํ ์์ฑ์ ๋ง์ถฐ ๋ ๋ง๋ค๊ฑฐ๋ ์ค์ด์ง ์์์ผ๋ก์ ์ ์ฒด ๊ฒ์์ด๋ ๊ฒ์๊ธ ์ด๋๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ตฌํํ๊ณ ์ ํ์ฌ ๊ตฌ์กฐ๋ฅผ ์ ํํ๊ฒ ๋์์ต๋๋ค.
post
,comment
ํ ์ด๋ธ์ด ํ๋๋ก ๊ณ ์ ๋์ง๋ง, ๋ณด๊ดํ๋ ๋ฐ์ดํฐ์ ๋๋ถ๋ถ์ ์ฌ์ค ์ธ๋ถ ํค์ด๋ฉฐ ๋๋จธ์ง๋ ๋๋ถ๋ถ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋ ์ ์ํ ์ปฌ๋ผ์ ๋๋ค. ์ด๋ฅผ ํตํด ํ ์ด๋ธ์ ๊ฐํด์ง๋ ๋ถ๋ด์ ์ค์์ต๋๋ค.- ์ด๋ฌํ ๋์์ธ์ ์ ํํ ๋์ , ๋ณด๋ค ๊ทนํ์ ์ธ๋ฑ์ค ํ์ฉ์ ์ํด TSBOARD๋ ๊ฒ์๊ธ์ ์ญ์ ํด๋ ์ค์ ๋ก
DELETE
์์ ๋์ ์ํ๊ฐ๋ง ๋ณ๊ฒฝํ๋ ์์ผ๋ก ํด์ ์ธ๋ฑ์ค๊ฐ ํญ์ hit ๋๋๋ก ํ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก TSBOARD๋ ๊ฒ์ํ์ ์ผ๋ง๋ ๋ง์ด ๋ง๋ค๋๋ผ๋ DB์ ๊ฐํด์ง๋ ๋ถ๋ด์์ด ์ฌ์ ํ ๋น ๋ฅด๊ฒ ๋์ ๊ฐ๋ฅํฉ๋๋ค.
# ์ ์ฒด ํ
์ด๋ธ ๋ชฉ๋ก์ ์๋์ ๊ฐ์ต๋๋ค. (`tsb_` ๋ถ๋ถ์ ์ค์น ๋จ๊ณ์์ ๋ณ๊ฒฝ ๊ฐ๋ฅ)
+-----------------------+
| TSBOARD Table list |
+-----------------------+
| tsb_board |
| tsb_board_category |
| tsb_chat |
| tsb_comment |
| tsb_comment_like |
| tsb_exif |
| tsb_file |
| tsb_file_thumbnail |
| tsb_group |
| tsb_hashtag |
| tsb_image |
| tsb_image_description |
| tsb_notification |
| tsb_point_history |
| tsb_post |
| tsb_post_hashtag |
| tsb_post_like |
| tsb_report |
| tsb_user |
| tsb_user_access_log |
| tsb_user_black_list |
| tsb_user_permission |
| tsb_user_token |
| tsb_user_verification |
+-----------------------+
v0.8.40
์ด์ ๋ฒ์ ๋ถํฐ TSBOARD์ ํ ์ด๋ธ ๊ฐ ์์กด ๊ด๊ณ๋ฅผ ๋ช ํํ ํ๋๋ก ์ธ๋ ํค(FOREIGN KEY) ์ค์ ์ด ์ ์ฉ๋์์ต๋๋ค.
- ๋ณดํต ๊ฒ์ํ ํ๋ฉด ๋ ์ค๋ฅด๋ ์คํจ ํน์ ํ
๋ง๋, ๋์ผํ ๊ธฐ๋ฅ์ ํ๋ฉด์๋ ์๋ก ๋ค๋ฅธ ๋์์ธ์ ์ ๊ณตํ๊ณ ์ ํ ๋ ํ์ํฉ๋๋ค. TSBOARD๋ ์ฒ์์ ์คํจ ์์คํ
์ ๊ตฌํํ๋ ค๊ณ ํ์์ผ๋, ์๋์ ๊ฐ์ ์ด์ ๋ก ์คํจ ์์คํ
์ ํฌ๊ธฐํ๊ณ ์ปค์คํ
๊ฐ์ด๋๋ฅผ ์ ๊ณตํ๊ธฐ๋ก ํ์์ต๋๋ค.
- ์คํจ์ด๋ ํ ๋ง๋ ์ฌ์ฉ์์ ๊ท๋ชจ๊ฐ ์ด๋ ์ ๋ ๋๋ฉด์, ๋์์ ๋์์ด๋๋ถ์ด ํด๋น ํ๋ซํผ์ ๋ํด ์ด๋ ์ ๋ ์์ ์ด ๊ฐ๋ฅํ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. TSBOARD๋ ์์ฝ๊ฒ๋ ๋ ๋ค ํด๋น๋์ง ์์ต๋๋ค.
- ์ ์ด์ ๊ฐ๋ฐํ ๋๋ถํฐ ๋์์ธ์
Vuetify
์ ์์กดํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ฌด๋ฆฌํ๊ฒ ์คํจ ์์คํ ์ ๋ฃ์ง ์๊ธฐ๋ก ํ์์ต๋๋ค. ์ฌ์ค ๊ณ ๋ คํด์ผ ํ ์ฌํญ๋ค์ด ๋ง์์์ด๊ธฐ๋ ํฉ๋๋ค. - ์คํจ ์์คํ ์ด ์๋๋ผ๋ ์ง์ ๋์์ธ์ ์์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฑด ๋น๊ต์ ์ฝ์ต๋๋ค. ์๋์ ์ด์ด์ง๋ ๋ด์ฉ๋ค์ ์ฐธ์กฐํด ์ฃผ์ธ์!
์ปค์คํ ์์ ์ ํ๋ ค๋ฉด ๋ด Linux PC or Mac ์์ ๊ฐ๋ฐ ๋ชจ๋๋ก ์์ ํ์๋ ๊ฒ ํธํฉ๋๋ค. ์์์ ๊ฐ๋ฐ๋ชจ๋๋ก ์คํํ๊ธฐ ๋ถ๋ถ์ ์ฐธ์กฐํ์ธ์!
- ์์ ๊ธ์์
src/pages/board/List.vue
๋ฅผsrc/pages/something_new_board/AwesomeList.vue
๋ก ๋ฐ๊ฟ์ ๋ณด์ฌ์ฃผ๋ ๊ฑธ ์ค๋ช ๋๋ ธ์๋๋ฐ, ์ฌ๊ธฐ์ ํต์ฌ์ ๊ธฐ์กด์src/pages/board/List.vue
ํ์ผ์ ์์ ํ์ง ์๊ณ , ํด๋น ํ์ผ์src/pages/something_new_board/AwesomeList.vue
์์น๋ก ๋ณต์ฌํ ๋ค์ ์์ ํ๊ณ Vue Router ๊ฒฝ๋ก๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ ๋๋ค. - ๊ทธ๋ฅ
src/pages/board/List.vue
ํ์ผ์ ์์ ํด์ ์ฐ๋ฉด ์๋ ๊น์? Vue Router ๋ฅผ ์์ ํ ํ์๋ ์์ผ๋ ๋ ๊ฐํธํด ๋ณด์ ๋๋ค. ํ์ง๋ง ์๋์ ์ด์ ๋ค๋ก ์ธํด ์ปค์คํ ์ ํ์ค ๋๋ ๋ฐ๋์ ๊ธฐ์กด ํ์ผ์ ๋จผ์ ๋ณต์ฌํ ํ์ ์งํํ์๋ ๊ฑธ ๊ถ์ฅํฉ๋๋ค.- ๊ธฐ์กด ํ์ผ (์๋ฅผ ๋ค์ด ๊ฒ์ํ ๋ชฉ๋ก๋ณด๊ธฐ๋ฅผ ์์ ํ๋ค๊ณ ์น๋ฉด
src/pages/board/List.vue
)์ ์์ ํ ๊ฒฝ์ฐ, ์ถํ TSBOARD๊ฐ ์ ๋ฐ์ดํธ ๋์์ ๋ ์ถฉ๋์ด ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์์ ํ์ ๋ถ๋ถ์ ์๋ก ๋ณ๊ฒฝ๋ ์ฌํญ๋ค๊ณผ ์ผ์ผํ ๋์กฐํด์ ์ ๋ฐ์ดํธ ํด์ผ ํฉ๋๋ค. - ์๋ก์ด ํ์ผ์ ๋ง๋ค๊ณ Vue Router ๋ง ์
๋ฐ์ดํธ ํ๊ฒ๋๋ฉด, TSBOARD ์
๋ฐ์ดํธ ์ Vue Router (์ง๊ธ ์์ ๊ธฐ์ค์ด๋ฉด
src/router/board.ts
) ๋ง ๋ค์ ์ดํด๋ณด๊ณ ํ์์ ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋ฉ๋๋ค. - ๋ฌด์๋ณด๋ค, ์ง๊ธ ์์ ๊ธฐ์ค์ผ๋ก ์ปค์คํ ํ ๊ฒ์ํ ๋ชฉ๋ก๋ณด๊ธฐ์ ๋ญ๊ฐ ์ด์์ด ์๊ฑฐ๋ ๊ธฐ๋ฅ์ด ์ ๋๋ก ๋์ํ์ง ์์๋ ๋์กฐํด๋ณผ ์ ์๋ ๊ธฐ์ค(์์ ํ์ผ)์ด ์๋ ๊ฒ ์ข์ต๋๋ค.
- ๊ธฐ์กด ํ์ผ (์๋ฅผ ๋ค์ด ๊ฒ์ํ ๋ชฉ๋ก๋ณด๊ธฐ๋ฅผ ์์ ํ๋ค๊ณ ์น๋ฉด
- ๊ฒ์ํ์ ๊ธฐ์ค์ผ๋ก ์๋ก์ด ์ปค์คํ
๋์์ธ์ ๊ฒ์ํ์ ๋ง๋๋ ํ๋ก์ธ์ค๋ ์๋์ ๊ฐ์ต๋๋ค.
- ๋จผ์
src/pages/board/
ํด๋๋ฅผ ๋ณต์ฌํด์src/pages/custom_board/
๊ฒฝ๋ก์ ๋ถ์ฌ๋ฃ์ต๋๋ค. ํด๋ ๊ฒฝ๋ก๋ ์ฌ๋ฌ๋ถ๋ค์ด ์ํ์๋๋๋ก ํ์ ๋ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด,src/pages/custom/board/
์ฒ๋ผ ํ์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค. - ๋ค์์ผ๋ก, Vue Router ์์ ๊ฒฝ๋ก๋ฅผ ์๋ก ๋ณต์ฌํ ๊ฒฝ๋ก๋ก ์์ ํฉ๋๋ค. ์ง๊ธ ์์ ๊ธฐ์ค์ด๋ฉด
src/router/board.ts
ํ์ผ์ ์ด๊ณ ,import("@/pages/board/List.vue")
์ฒ๋ผ ๋์ด ์๋ ๋ถ๋ถ์์/board/
๋ฅผ/custom_board/
๋ก ์์ ํฉ๋๋ค. ๊ฐ๋ฐ ๋ชจ๋๋ก ์คํ์ค์ด๋ผ๋ฉดvite
์๋ฒ๊ฐ ์ฌ์คํ๋๋ฉด์ ์ด์ ๊ฒ์ํ ๋ชฉ๋ก์ ๋ณผ ๋ ์๋ก์ด ๊ฒฝ๋ก๋ก ์ ๊ทผํฉ๋๋ค. - ๋ง์ง๋ง์ผ๋ก,
src/pages/custom_board/
์List.vue
,View.vue
,Write.vue
ํ์ผ๋ค์ ์ ๋ง์ ๋ง๊ฒ ์์ ํฉ๋๋ค. ํ์ผ๋ช ๋ ๋ฐ๊พธ๊ธธ ์ํ์ ๋ค๋ฉด (์๋ฅผ ๋ค์ดList.vue
๋์AwesomeList.vue
์ฒ๋ผ) ๋ฐ๊พธ์ ๋ ๋ฉ๋๋ค๋ง, ๊ถ์ฅ์ฌํญ์ ํด๋๋ช ๋ง ๋ฐ๊ฟ์ ์ฌ์ฉํ์๋ ๊ฒ์ ๋๋ค. - ์ฐธ๊ณ ๋ก,
List.vue
,View.vue
,Write.vue
ํ์ผ๋ค์ ๋ชจ๋src/components/board/
๊ฒฝ๋ก ์๋์ ์๋ ์ฌ๋ฌ Vue ์ปดํฌ๋ํธ๋ค์ ์ฐธ์กฐํ๊ณ ์์ต๋๋ค. - ๋ง์ฝ ์ฐธ์กฐํ๋ ์ปดํฌ๋ํธ๋ค๊น์ง ๋ชจ๋ ์ปค์คํ
ํ๊ณ ์ถ๋ค๋ฉด,
src/pages/custom_board/components
๊ฒฝ๋ก์ ์ปค์คํ ํ ํด๋์ ํ์ผ๋ค์ ๋ณต์ฌํ ๋ค์, ์์ ํ๊ณList.vue
์ฒ๋ผ ํด๋น ์ปดํฌ๋ํธ๋ค์import
ํ๋ ํ์ผ๋ค์ ๊ฒฝ๋ก๋ ์์ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
- ๋จผ์
- TSBOARD ํ๋ก์ ํธ๋ ์ฌ๋ฌ๋ถ๋ค์ ์ฐธ์ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค! ์๋ก ๋ง๋์ ์ปค์คํ
๊ฒ์ํ ํน์ ๊ฐค๋ฌ๋ฆฌ๊ฐ ์๋ค๋ฉด ์ธ์ ๋ ์ง
Pull Request
๋ฅผ ํตํด ์๋ ค์ฃผ์๊ณ ๊ณต์ ํด์ฃผ์ธ์! - ๋ํ TSBOARD ํ์ฉ์ ํ์ํ ์ปค์คํ ๋ค์ด ์์ ๊ฒฝ์ฐ, https://tsboard.dev ์ฌ์ดํธ์์ ์ธ์ ๋ ์ง ์ ์ ๋ถํ๋๋ฆฝ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก, ์ด์์ค์ด์ ์ฌ์ดํธ์ ๋ฑ ํ์ํ ์ปค์คํ ์ด ์์ผ์ ๊ฒฝ์ฐ ์ ๋นํ ๋๊ฐ๋ฅผ ์ง๋ถํ๊ณ ๊ฐ๋ฐ์์ ์๊ฐ์ ์ฌ๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์๋ก์ด ์น์๋น์ค ๊ฐ๋ฐ์ ์๊ฐํ๊ณ ๊ณ์ ๊ฐ์? ์ปค๋ฎค๋ํฐ, ์ผํ๋ชฐ, ๋ธ๋ก๊ทธ... ๊ทธ ์ด๋ค ๊ฒ์ด๋ ๊ฐ๋ฅํฉ๋๋ค. ์ฒ์๋ถํฐ ๊ฐ๋ฐํ์ค ํ์ ์์ต๋๋ค. ์ด์ TSBOARD๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น ๋ฅด๊ฒ ์ฌ๋ฌ๋ถ๋ง์ ํ๋ก์ ํธ๋ฅผ ์์ํด ๋ณด์ธ์! ๋ณด๋ค ์์ ํ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ ํ์ค ์ ์๋๋ก, TSBOARD๊ฐ ํจ๊ป ํ๊ฒ ์ต๋๋ค.
v0.8.z
(์ด๊ธฐ ๋ฒ์ )v0.9.z
- ๋ธ๋ก๊ทธ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฐ ๊ฐ์ ์์ ์ด ๋ฐ์๋ฉ๋๋ค.
- CSR ๋ฐฉ์ ๊ธฐ๋ฐ์์ SEO๋ฅผ ์ข ๋ ๊ฐ์ ํ๊ธฐ ์ํ ์ถ๊ฐ ์์ ๋ค์ด ๋ฐ์๋ฉ๋๋ค.
v1.0.0
(ํ์ฌ)- ๋ฐฑ์๋๋ฅผ
Bun
๋ฐํ์์์Go
์ธ์ด๋ก ์ฌ์์ฑํ ์์ฒด ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก ๋์ฒดํฉ๋๋ค.
- ๋ฐฑ์๋๋ฅผ
v1.0.z
- ๋ฐฑ์๋ ์๋ฒ์ ์์ ์ฑ ๋ฐ ์๋ ๊ฐ์ ์ ์ํ ํ๋์ ์งํํฉ๋๋ค.
v1.1.0
- ๋ ๋ค์ํ ๊ฒ์ํ/๋ธ๋ก๊ทธ/๊ฐค๋ฌ๋ฆฌ ํ ๋ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
1.2.0
- ์ผํ๋ชฐ ํ ๋ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ฌ๊ณ ํํฉ/๊ด๋ฆฌ ๋ฑ๋ ์ถ๊ฐ๋ฉ๋๋ค.
- ํ ์ค, ๋ค์ด๋ฒํ์ด์ ์ฐ๋ํฉ๋๋ค.
2.0.0
- TBD
๋ก๋๋งต์ ๊ฐ๋ฐ์์ ์ฌ์ ์ ๋ฐ๋ผ ์ธ์ ๋ ์ง ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค!
- ํ ์คํธ๋ ๋ง์ด ํด๋ณด์๊ณ , ๋ถํธํ ์ ์ ์ธ์ ๋ ์ง ๋ง์ํด์ฃผ์ธ์!
- ์น ์ํ๊ณ์ ์๊ฒ๋๋ง ๋ณดํฌ์ด ๋ ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
- ์ธ์ ๊ฐ TSBOARD๋ก ๋ง๋ค์ด์ง ๋ฉ์ง ์ปค๋ฎค๋ํฐ๋ฅผ ๋ง๋๋ ๊ทธ ๋ ์ ๊ฟ๊ฟ๋ด ๋๋ค!
๊ถ๊ธํ์ ์ ์ด ์์ผ์๋ค๋ฉด ์ธ์ ๋ ์ง https://tsboard.dev ์ฌ์ดํธ์ ์์ฃผ์ธ์!