- TSBOARD๋ ๋ฌด์์ธ๊ฐ์?
- ์ ๋ง๋ค์๋์?
- TSBOARD๋ง์ ์ฅ์ ์ ๋ฌด์์ธ๊ฐ์?
TSBOARD๋ Type Safety BOARD๋ก, TypeScript ์ธ์ด๋ก ์์ฑ๋ ์ปค๋ฎค๋ํฐ ๋น๋์ ๋๋ค.
- ์ ๋ ์น ํ๋ก๊ทธ๋จ์
PHP
๋ก ์์ํ๊ณ , ์ ๋ก๋ณด๋์ ๊ทธ๋๋ณด๋ ์์ ์ ๊ฒช์ (์ด์ ๋ ์์ฌ) ๊ฐ๋ฐ์์ ๋๋ค. - 10๋ ๋๊ฒ ์น ๊ฐ๋ฐ์ ์ํ๋ค๊ฐ, ์ฐ์ฐํ TypeScript ์ธ์ด๋ฅผ ๋ง๋ ์ฝ๋ฉ์ ์ฆ๊ฑฐ์์ ๋ง๋ฝํ์ต๋๋ค.
- ๊ทธ๋์ ์ด์์ด๋ฉด ์ด ์ธ์ด๋ก ์ฌ๋ฐ๋ ํ๋ก์ ํธ๋ฅผ ํด๋ณด๊ณ ์ถ์ด์ ์์ํ๊ฒ ๋์์ต๋๋ค.
- TSBOARD๋ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๋ชจ๋
TypeScript
์ธ์ด๋ก ์์ฑ๋์ด ํ์ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค. - ํ๋ก ํธ์๋๋
Vue
์Vuetify
๋ก ์ ์๋์ด ์์ด ์ ๋ คํ๋ฉด์๋ ๋น ๋ฅธ UI ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. - JS/TS ๋ฐํ์์ผ๋ก
Bun
, ์น ํ๋ ์์ํฌ๋ก Bun ๊ธฐ๋ฐ์ElysiaJS
๋ฅผ ์ ํํ์ฌ ๋ณด๋ค ๋น ๋ฅธ ๋์์ด ๊ฐ๋ฅํฉ๋๋ค.
TSBOARD๋ ์ฌ์ฉ์๋ถ๋ค์ ์ํ ์์ฒด ์ปค๋ฎค๋ํฐ๋ฅผ https://tsboard.dev/ ์ฌ์ดํธ์์ ์ด์ํ๊ณ ์์ต๋๋ค. ์ฌ์ฉํ์๋ฉด์ ๊ถ๊ธํ ์ , ์ด๋ ค์ด ์ ๋ค์ ์ ์ฌ์ดํธ์์ ํธํ๊ฒ ๋ฌธ์ํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
- TSBOARD ์ค์น์ ์ ํฉํ ์๋ฒ ํ๊ฒฝ
- ๋ฏธ๋ฆฌ ์์๋์ด์ผ ํ ์ฌํญ๋ค
- ์ค์น ์งํ ์๋ด
- ์ค์น ํ ์๋ฒ ์ค์
- ์ค์น๊ฐ ์ด๋ ค์ด ๋ถ๋ค๊ป
- TSBOARD๋ JS/TS ๋ฐํ์์ผ๋ก Bun (https://bun.sh)์ ํ์๋ก ํฉ๋๋ค.
- ๋ํ, ๋ณด๋ค ์์ ์ ์ธ ํจํค์ง ๊ด๋ฆฌ๋ฅผ ์ํด
Node.js
(๋ฐnpm
) ์ค์น๋ ๊ถ์ฅํ๊ณ ์์ต๋๋ค.- ์๋
Bun
์ ํจํค์ง ๊ด๋ฆฌ๊น์ง ์ฌ์ธ์์ผ๋ก ์ง์ํ๋ฏ๋ก, ํฅํ Bun๋ง ํ์ํ ๊ฒ์ ๋๋ค.
- ์๋
- Cafe24๋ฑ ์นํธ์คํ
์
์ฒด์ ์๋น์ค๋ฅผ ์ด์ฉํ์ค ์์ ์ด๋ผ๋ฉด, ์๋ ์ฌํญ๋ค์ ์ฐธ์กฐํด ์ฃผ์ธ์.
- PHP ๊ฒ์ํ์ด๋ ์๋ํ๋ ์ค ์ค์น ๋ฑ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ํํ ์ ํ๋ ์นํธ์คํ ์์ ํ์ฉ์ด ์ด๋ ต์ต๋๋ค.
- ์นํธ์คํ ์ด ์๋, ์๋ฒ ํธ์คํ ์ ๊ฒฝ์ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ, ๊ฐ์ CPU๋ก ์ด์๋๋ (๋ณดํต ์ ๋ ดํ) ๊ฐ์ ์๋ฒ ์๋น์ค์์๋ ์ ๋๋ก ๋์ํ์ง ์์ต๋๋ค.
AWS, Azure, GCP์์๋ Bun ์ฌ์ฉ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. ๋ง์ฝ ์ฌ์ฉํ์๋ ํด๋ผ์ฐ๋ ํ๋ซํผ์์ ์ค์น๊ฐ ์๋์๋ ๋ถ๋ค์ https://tsboard.dev ์ฌ์ดํธ๋ก ์ ๋ณด ๋ถํ๋๋ฆฝ๋๋ค!
- MySQL(Mariadb) ๊ณ์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ ๊ถํ์ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค.
- TSBOARD๋ ์ค์น ๊ณผ์ ์์ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค (๊ธฐ๋ณธ
tsboard
)๋ฅผ ์์ฑํฉ๋๋ค. - ๋ง์ฝ MySQL(Mariadb) ์ ์ ๊ณ์ ์ ํด๋น ๊ถํ์ด ์๋ค๋ฉด ์ค์น๋ ์คํจํฉ๋๋ค.
- ์ ๋ชจ๋ฅด์๊ฒ ๋ค๋ฉด ์ญ์ ์ค์น๊ฐ ์ด๋ ค์ด ๋ถ๋ค๊ป ํญ๋ชฉ์ ์ฝ์ด์ฃผ์ธ์.
- TSBOARD๋ ์ค์น ๊ณผ์ ์์ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค (๊ธฐ๋ณธ
- Bun์ https://bun.sh/ ์ฌ์ดํธ์์
Bun
์ ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์ค์นํ๋์ง ๋ฑ์ ํ์ธํ์ค ์ ์์ต๋๋ค.- ๋จผ์ ,
curl -fsSL https://bun.sh/install | bash
๋ช ๋ น์ด๋กBun
์ ์ค์นํฉ๋๋ค. - ์ค์น ์ ํจํค์ง ์์กด์ฑ ๊ด๋ จ ๋ฉ์์ง๋ค์ด ๋์ฌ ์ ์์ต๋๋ค. (
curl
,unzip
๋ฑ) ๋จผ์ ์ค์นํด์ฃผ์ธ์. - ์ค์น ํ
source .bashrc
๋ฑ์ ์ถ๊ฐ์ ์ผ๋ก ์คํํดBun
ํ๊ฒฝ๋ณ์๋ฅผ ๋ฑ๋ก ํ,bun --help
๋ฅผ ์คํํด ๋ด ๋๋ค.
- ๋จผ์ ,
Bun์ ๋ฏฟ๊ธฐ์ง ์์ ์ ๋๋ก ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค๋ง, ๊ทธ ๋์ ๊ฐ์ CPU์์์์ ๋์์ ๋ณด์ฅํ์ง ์์ต๋๋ค. TSBOARD๋ ๋น ๋ฅด๊ฒ ๋์ํ๋ ๊ฒ์ ๋ชฉํ๋ก ๊ฐ๋ฐ๋์ด ์์ผ๋ฉฐ, Bun์ด ์ค์น๋์ง ์์ ์๋ฒ์์๋ ๋์ํ์ง ์๋ ์ ๋ค์ ์๋ ค๋๋ฆฝ๋๋ค.
- TSBOARD๋ ๋ณ๋์ ์ค์น ํ์ผ๋ค์ ์ ๊ณตํ์ง ์์ผ๋ฉฐ, Git์ ํตํด ์ค์น ๋ฐ ์
๋ฐ์ดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋จผ์ ,
git clone https://github.com/sirini/tsboard tsboard.git
์ ์คํํฉ๋๋ค. - ๊ถ์ฅํ๋ ์ค์น ๊ฒฝ๋ก๋
/var/www/
ํ์ ๊ฒฝ๋ก์ ๋๋ค./root/
๋ ์ถ์ฒํ์ง ์์ต๋๋ค. - ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์น ์
/var/www/tsboard.git/
ํด๋ ์์setup.ts
ํ์ผ์ด ์กด์ฌํฉ๋๋ค.
- ๋จผ์ ,
- TSBOARD๊ฐ ์์กดํ๋ ํจํค์ง๋ค์ ๋ด๋ ค๋ฐ์ต๋๋ค.
- ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์นํ์
จ๋ค๋ฉด,
/var/www/tsboard.git/
ํด๋ ์์น์์ ์์กด์ฑ ํจํค์ง๋ค์ ์ค์นํฉ๋๋ค. - ์ด ํจํค์ง๋ค์ (Node.js ๊ฐ ์ค์น๋์ด ์๋ ๊ฒฝ์ฐ)
npm i
ํน์npm install
๋ก ์ค์นํฉ๋๋ค. - Bun ๋ง ์ค์นํ์ ๊ฒฝ์ฐ,
bun install
๋ก ๋์ผํ๊ฒ ์ค์นํ์ค ์ ์์ต๋๋ค.
- ๊ถ์ฅ ์ค์น ๊ฒฝ๋ก์ ์ค์นํ์
จ๋ค๋ฉด,
bun setup.ts
๋ฅผ ์คํํ์ฌ ํ๋ฉด์ ์๋ด์ ๋ฐ๋ผ TSBOARD ์ค์น๋ฅผ ์งํํฉ๋๋ค.- ์ด ๋ MySQL(Mariadb)์ ์ ์ ์ ๋ณด ๋ฐ ๊ด๋ฆฌ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ฒ ๋ฉ๋๋ค.
- ์ ์ ์ ๋ณด๊ฐ ์ฌ๋ฐ๋ฅด๊ณ DB ์์ฑ (๋ฐ ํ ์ด๋ธ ์์ฑ) ๊ถํ์ด ์๋ค๋ฉด, ๋ฌธ์ ์์ด DB/Table๋ค์ด ์์ฑ๋ฉ๋๋ค.
bun setup.ts
๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ, ๊นํ๋ธ ์ด์ ํน์ https://tsboard.dev ๋ก ์๋ ค์ฃผ์ธ์!
- TSBOARD ์ค์ ํ์ผ์ ์์ ํฉ๋๋ค.
tsboard.config.ts
ํ์ผ์vi
๊ฐ์ ์๋ํฐ๋ก ์ด์ด์ฃผ์ธ์.tsboard.config.ts
์๋ TSBOARD ์ด์์ ํ์ํ ๋๋ถ๋ถ์ ์ค์ ๋ค์ด ๋ค์ด ์์ต๋๋ค.SITE
,QUICK_BUTTONS
๊ทธ๋ฆฌ๊ณAPI
ํญ๋ชฉ ๋ฑ์ ํ์ธํ์๊ณ , ๊ทธ ๋ฐ์ ๋ค๋ฅธ ํญ๋ชฉ๋ค๋ ์ ๋ฐ์ดํธ ํด์ฃผ์ธ์.
index.html
ํ์ผ๋ ์๋ํฐ๋ก ์ด์ด์<title>
ํ๊ทธ์ ๋ณธ์ธ์ ์ฌ์ดํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์.- ๊ฒ์ ์์ง๋ค์ ์์ธ ์์
์ ๋๊ธฐ ์ํด
public/robots.txt
ํ์ผ์ ์๋ํฐ๋ก ์ด์ด ์ฌ์ดํธ ์ฃผ์๋ฅผ ์์ ํด ์ฃผ์ธ์.robots.txt
ํ์ผ์๋ ๊ธฐ๋ณธ์ผ๋ก TSBOARD ๊ณตํ ์ฃผ์๊ฐ ์ ํ ์์ต๋๋ค. ๋ฐ๋์ ์ฌ๋ฌ๋ถ์ ์ฃผ์๋ก ๋ณ๊ฒฝํด ์ฃผ์ธ์!
Sitemap: https://tsboard.dev/tsapi/seo/sitemap.xml
src/pages/home/HomePage.vue
ํ์ผ์ ์๋ํฐ๋ก ์ด์ด ๋ณธ์ธ ์ฌ์ดํธ์ ๋ง๊ฒ ๋ฏธ๋ฆฌ ์์ ํด ์ฃผ์ธ์.- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฌ๋ถ์ ์ปค๋ฎค๋ํฐ ์ฌ์ดํธ์๋
WhatIsTsboard.vue
๋ด์ฉ์ด ํ์ ์์ผ๋ฏ๋ก, ์๋ ๋ด์ฉ์ ์ ๊ฑฐํ์๋ฉด ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฌ๋ถ์ ์ปค๋ฎค๋ํฐ ์ฌ์ดํธ์๋
<v-col :cols="home.cols" v-if="home.isMobile === false">
<what-is-tsboard></what-is-tsboard>
</v-col>
- ์ด์ ์์ ํด์ผ ํ ๊ฒ๋ค์ ๋ชจ๋ ์๋ฃํ์์ต๋๋ค. TSBOARD๋ฅผ
build
ํฉ๋๋ค!- ์ฌ๋ฌ๋ถ์ด ๋ฐ์ผ์ TSBOARD๋ ์ด์
vite
๋ฅผ ํตํดbuild
๊ฐ ๊ฐ๋ฅํฉ๋๋ค. - (Node.js ์ค์น ์)
npm run build
ํน์bun run build
๋ฅผ ์คํํ์ฌbuild
๋ฅผ ์งํํฉ๋๋ค. - ์ด ๋ TSBOARD์ ํ๋ก ํธ์๋ ์ฝ๋๋ค(TypeScript)์ด JavaScript๋ก ๋ณํ๋๋ฉฐ, ํ์ผ๋ค๋ ์ต์ ํ๋ฉ๋๋ค.
- ์ฌ๋ฌ๋ถ์ด ๋ฐ์ผ์ TSBOARD๋ ์ด์
- TSBOARD๋ ๊ตฌ๊ธ ๊ณ์ ์ ์ฑ ๋น๋ฐ๋ฒํธ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ
GMAIL
๋ฐ์ก์ด ๊ฐ๋ฅํฉ๋๋ค.- ๋ฉ์ผ ๋ฐ์ก์ ํตํด ์ต์ด ํ์๊ฐ์ ์ ์ด๋ฉ์ผ ์ธ์ฆ์ ์งํํ ์ ์์ต๋๋ค.
- ๋น๋ฐ๋ฒํธ ์ด๊ธฐํ๋ ๋ฑ๋ก๋ ๋ฉ์ผ๋ก ์ง์ ๊ฐ๋ฅํ๋ฏ๋ก, ๊ฐ๋ฅํ๋ฉด ๊ธฐ๋ฅ ํ์ฑํ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
- TSBOARD ์ค์น ๊ฒฝ๋ก์
.env
ํ์ผ์ ์ด์ด์ ๋ณธ์ธ์ ๊ตฌ๊ธ ๊ณ์ ๊ณผ ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฑ๋กํด์ฃผ์ธ์.
๊ตฌ๊ธ ๊ณ์ ๊ณ ๊ฐ์ผํฐ์ ๋ฑ๋ก๋ ์ด ๊ธ์ ํตํด ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด๋ป๊ฒ ์ป์ ์ ์๋์ง ํ์ธ ํ์ค ์ ์์ต๋๋ค. 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
ํน์bun run build
๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผbuild
ํด์ฃผ์ธ์!- ๊ทธ ํ TSBOARD ์ค์น ๊ฒฝ๋ก (์:
/var/www/tsboard.git/
)์์bun server/index.ts
๋ก ๋ฐฑ์๋๋ฅผ ์คํํด ์ฃผ์ธ์. - ๋ฐฑ์๋ ์๋ฒ๋ฅผ ์์ํ๊ธฐ ์ , ๋ฐ๋์ ๊ธฐ์กด์ ๋์์ค์ธ ๋ฐฑ์๋ ์๋ฒ๋ ์ข
๋ฃํด ์ฃผ์ธ์.
Node.js
๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ์ ๋ถ๋ค์pm2
ํ๋ก์ธ์ค ๋งค๋์ ์ฌ์ฉ์ด ์ต์ํ์คํ ๋ฐ, Bun๋pm2
๋ฅผ ์ง์ํ๋ฏ๋ก ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ์ฐธ์กฐํด ๋ณด์ธ์! (https://bun.sh/guides/ecosystem/pm2)
pm2 reload --interpreter ~/.bun/bin/bun server/index.ts
OpenAI์ API Key๊ฐ ์๋๋ผ๋ TSBOARD ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ฌ์ฉ์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. AI๋ฅผ ํ์ฉํ๋ ๊ธฐ๋ฅ๋ค๋ง ๋นํ์ฑํ ๋ฉ๋๋ค.
- TSBOARD๋ OpenAI์
ChatGPT-4o
๋ชจ๋ธ์ ํ์ฉํ์ฌ ์ด๋ฏธ์ง ์ค๋ช ๊ธ ์ถ์ถ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ค ์ ์์ต๋๋ค.- ์ด ๊ธฐ๋ฅ์ ์์ ๋ก๊ทธ์ธ์ฒ๋ผ ์ํ์ค ๊ฒฝ์ฐ์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. (OpenAI์ API Key ๊ฐ์ด ํ์ํฉ๋๋ค.)
- ๊ธฐ๋ฅ ํ์ฑํ๋ฅผ ์ํด์๋
.env
ํ์ผ์OPENAI_API_KEY
๋ถ๋ถ์ ์ ๋ฐ์ดํธ ํ์ ์ผ ํฉ๋๋ค. - OpenAI์ API ๋ฐ๊ธ์ ๋ฌด๋ฃ๊ฐ ์๋๋๋ค! TSBOARD๋ OpenAI๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํ์ฉํ ๋ฟ์ ๋๋ค.
์ด ์๋ด๋ Visual Studio Code (vscode)๋ฅผ ์ด๋ฏธ ์ฌ์ฉํด ๋ณด์ ๋ถ๋ค์ ๋์์ผ๋ก ํฉ๋๋ค.
- TSBOARD๋ฅผ ๋ณธ์ธ์ Linux PC or Mac ์ ๋จผ์ ์ค์นํ์ฌ ๊ฐ๋ฐ ๋ชจ๋๋ก ์ฌ์ฉํด ๋ณด์ค ์๋ ์์ต๋๋ค.
vscode
๋ฅผ ์คํ ํ TSBOARD ํด๋๋ฅผ ์ฌ์ ๋ค์, ํฐ๋ฏธ๋์ 2๊ฐ ๋์๋๋ค.- ๋จผ์ TSBOARD ํด๋ ๋ด
tsboard.config.ts
ํ์ผ์ ์ด๊ณ ,IS_DEV
ํญ๋ชฉ์true
๋ก ์์ ํฉ๋๋ค.LOCALHOST
ํญ๋ชฉ์localhost
์ผ๋ก ์์ ํด ์ฃผ์ธ์.
- ํฐ๋ฏธ๋์ ์ด๊ณ
npm run dev
๋ฅผ ์คํํ์ฌvite
๊ฐ TSBOARD์ ํ๋ก ํธ์๋๋ฅผ ๋ณด์ฌ์ค ์ ์๋๋ก ํฉ๋๋ค. - ๋ค๋ฅธ ํฐ๋ฏธ๋์ ์ด๊ณ
npm run dev:server
๋ฅผ ์คํํ์ฌ TSBOARD์ ๋ฐฑ์๋๋ฅผ ์คํํ๋๋ก ํฉ๋๋ค. - ๋ธ๋ผ์ฐ์ ์์
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
ํน์bun run build
๋ช ๋ น์ด๋ก ํ๋ก์ ํธ๋ฅผbuild
ํฉ๋๋ค!- ๋น๋ ํ๊ธฐ ์ ์
tsboard.config.ts
ํ์ผ์ด๋index.html
ํน์public/robots.txt
๊ฐ ์ ๋๋ก ์์ ๋์๋์ง ํ์ธํด ๋ณด์ธ์! src/pages/home/HomePage.vue
ํ์ผ์ ๋ฐ์ํ์ ์์ ๋ค์ด ์์ ๊ฒฝ์ฐ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ ํ์ธํด ๋ณด์ธ์.- ์ด ๋ฐ์ ์์ ํ์ ํ์ผ๋ค์ด
git pull
์ดํ์๋ ์ ๋๋ก ๋ณ๊ฒฝ์ฌํญ์ ์ ์งํ๊ณ ์๋์ง ํ์ธ์ด ํ์ํฉ๋๋ค.
- ๋น๋ ํ๊ธฐ ์ ์
- ์
๋ฐ์ดํธ์ ๋ฐ๋ผ์ ๊ฐํน
bun update.ts
์คํ์ ์๊ตฌํ ๋๊ฐ ์์ต๋๋ค. ์ด๋๋ ํฐ๋ฏธ๋์์ ํ ๋ฒ ์คํํ์๋ฉด ๋ฉ๋๋ค.- ์คํ ์ ์ ์๋ํฐ๋ก
update.ts
ํ์ผ์ ์ด์ด์ ์ด๋ค ๋ณ๊ฒฝ์ฌํญ๋ค์ด ์๋์ง ํ์ธํด๋ณด์ธ์. - ์ด์ ์ ๋ฐ์ดํธ๋ ์ฃผ์์ผ๋ก ์คํ๋์ง ์๋๋ก ์ฒ๋ฆฌ๋์ด ์์ต๋๋ค. ๋ง์ฝ ํด๋น ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ํ์ง ์์๋ค๋ฉด, ํด๋น ๋ถ๋ถ๋ง ์ฃผ์์ ํด์ ํ๊ณ ์ ์ฅํ ๋ค ์คํํ์๋ฉด ๋ฉ๋๋ค.
- ์คํ ์ ์ ์๋ํฐ๋ก
build
์ดํ์๋ ๋ฐฑ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์คํํด์ผ ํฉ๋๋ค. ์คํ์ค์ธbun
ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ณ ๋ค์bun server/index.ts
ํน์pm2
๋ฅผ ์ด์ฉํด์reload
ํด์ฃผ์ธ์.- ์ฌ๋ฌ๋ถ์ ํฐ๋ฏธ๋ ํ๋ก๊ทธ๋จ์ด ๋ซํ๋ TSBOARD ๋ฐฑ์๋๊ฐ ๊ณ์ ๋์ํด์ผ ํ๋ฏ๋ก, ๊ฐ๋ฅํ๋ฉด
pm2
๊ฐ์ ํ๋ก์ธ์ค ๋งค๋์ ํ์ฉ์ ๊ถ์ฅํฉ๋๋ค. - ํน์,
tmux
๋screen
๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ ํด๋น ์ธ์ ์ ๊ณ์ ์ด์ด๋๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์ฌ๋ฌ๋ถ์ ํฐ๋ฏธ๋ ํ๋ก๊ทธ๋จ์ด ๋ซํ๋ TSBOARD ๋ฐฑ์๋๊ฐ ๊ณ์ ๋์ํด์ผ ํ๋ฏ๋ก, ๊ฐ๋ฅํ๋ฉด
- TSBOARD๋ Bun ๋ฐํ์์ ์ด์ฉํด์
server/index.ts
๋ฅผ ์คํํ๋ฉด ๋ฐฑ์๋๊ฐ ๋์ํ๊ฒ ๋ฉ๋๋ค. pm2
๋ฅผ ์ด์ฉํด์ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ฑฐ๋, ํน์ ํฐ๋ฏธ๋ ์ธ์ ์ด ์ข ๋ฃ๋์ด๋ ์คํ ์ํ๊ฐ ๊ณ์ ์ ์ง๋๋๋กtmux
์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌbun server/index.ts
๋ก ์คํํ์ธ์.
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
โbun install
โbun setup.ts
๊ณผ์ ๊น์ง ๋ฌด์ฌํ ๋ง์ณค์ต๋๋ค. ์ด์ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ๋ด ์๋ค! - ์๋ ๋จ๊ณ์์๋ 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 ํ์ผ์ 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)
}
# v0.8.18๋ถํฐ ๊ธฐ์กด /api ๊ฐ /tsapi ๋ก ๋ณ๊ฒฝ๋จ (ํ ๋ฐฑ์๋์ ์ถฉ๋ ๋ฐฉ์ง)
location /tsapi {
# tsboard.config.ts ์์ PORT_PROD ๊ฐ๊ณผ ์๋ 3100 ์ด ๋์ผํด์ผ ํจ
proxy_pass http://127.0.0.1:3100/tsapi;
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 ์ค์น ๊ฒฝ๋ก
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# tsboard.config.ts ์์ PORT_PROD ๊ฐ๊ณผ ์๋ 3100 ์ด ๋์ผํด์ผ ํจ
ProxyPass /tsapi http://127.0.0.1:3100/tsapi
ProxyPassReverse /tsapi http://127.0.0.1:3100/tsapi
</VirtualHost>
- TSBOARD ์ค์น๋ฅผ ๋์ ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ๋ณธ์ธ์ด ์ด์ํ์๋ ์๋ฒ๊ฐ ์์ผ์๊ณ ,
SSH
์ ์ ๊ถํ์ ๊ณต์ ํด ์ฃผ์ค ์ ์์ผ์๋ค๋ฉดsirini@gmail.com
์ผ๋ก ์์ฒญ ๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์. - ๋จ, ์๋ฒ์ ๋ฏธ๋ฆฌ
Node.js
์Bun
์ ์ค์นํด ๋์ ์ผ ํฉ๋๋ค. ๋ ๋ฐํ์ ์ค์น๊ฐ ์๋์ด ์์ผ๋ฉด ๋์์ ๋๋ฆฌ๊ธฐ ์ด๋ ต์ต๋๋ค! - ๊ธฐ์กด์ ์ด์ํ์๋ ์๋น์ค๋ฅผ TSBOARD๋ก ์ ํํ๊ธธ ์ํ์๋ ๋ถ๋ค์ https://tsboard.dev ์ฌ์ดํธ์ ๊ด๋ จ ๋ด์ฉ๋ค์ ๊ณต์ ํด์ฃผ์ธ์. (๊ธฐ์กด์ ์ด๋ค ๊ฒ์ํ์ ์ฐ์
จ๋์ง, ๋ฐ๋ก ์ปค์คํ
ํ์ ๊ฑด ์์ผ์ ์ง ๋ฑ, v0.8.18๋ถํฐ ์ ๊ณต๋๋
converter.sample.ts
ํ์ผ๋ ์ฐธ๊ณ ํด ๋ณด์ธ์!)
- ๋ณธ์ธ์ด ์ด์ํ์๋ ์๋ฒ๊ฐ ์์ผ์๊ณ ,
- ์ค์น ๊ณผ์ ์์์ ์ด๋ ค์์ ์ด๊ฒจ๋ด๊ณ ์ ํ๋ ์ฌ๋ฌ๋ถ๋ค์ ์์ํฉ๋๋ค!
- ์ด๋ ค์์ ํจ๊ป ๋ ผ์ํด๋ณด๊ณ ์ถ๋ค๋ฉด 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/tsapi/seo/sitemap.xml
์ด๋ฉฐ, ์ค์น ์๋ด์์tsboard.dev
๋ถ๋ถ์ ๋ณธ์ธ์ ๋๋ฉ์ธ์ผ๋ก ์์ ํด์ผ ํ๋ค๊ณ ๋ง์๋๋ฆฐ ์ ์ด ์์ต๋๋ค!
- ๊ธฐ๋ณธ ๊ฒฝ๋ก๋
-
์๋
sitemap.xml
์์ ๋ด์ฉ์ ๋๋ค.<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://tsboard.dev/tsapi/seo/main.html</loc> <changefreq>daily</changefreq> <priority>1.0</priority> <lastmod>2024-06-02</lastmod> </url> <url> <loc>https://tsboard.dev/tsapi/seo/about.html</loc> <changefreq>monthly</changefreq> <priority>0.3</priority> <lastmod>2024-06-02</lastmod> </url> <url> <loc>https://tsboard.dev/tsapi/seo/policy.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/tsapi/seo/main.html
์ ๋๋ค. ํฌ๋กค๋ฌ๊ฐ ํด๋น ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด, ์ฌ๋ฌ๋ถ์ ์๋ฒ์์ TSBOARD๊ฐ ์ค๋นํ html ํ์ด์ง๋ฅผ ๋ง๋๊ฒ ๋ฉ๋๋ค. -
ํด๋น ํ์ด์ง์์๋
src/pages/home/HomePage.vue
์์ ๋ณด์ฌ์ง๋ ๊ฒ์๊ธ๋ค ๋ฐ ๋๊ธ๋ค์ด ์ถ๋ ฅ๋ฉ๋๋ค. ์ผ๋ง๋ ๋ง์ด ์ถ๋ ฅํด์ ํฌ๋กค๋ฌ์๊ฒ ์ ๊ณตํ ์ง๋tsboard.config.ts
์SEO
ํญ๋ชฉ์ ํตํด ์กฐ์ ํ์ค ์ ์์ต๋๋ค. -
ํฌ๋กค๋ฌ๊ฐ ์์งํ๋ ๋ด์ฉ ์ค์ ๊ฒ์๊ธ ๋งํฌ๋ ์ฌ์ดํธ ๋งํฌ์ ๊ฒฝ์ฐ ๊ธฐ์กด ํ์ด์ง๋ก ๋งํฌ๊ฐ ๊ฑธ๋ฆฝ๋๋ค. ๋ฐ๋ผ์ ๊ฒ์์ ํตํด ํด๋น
main.html
ํ์ด์ง๋ฅผ ์ด๋ํ ์ฌ์ฉ์๋ ์ด๋ค ๋งํฌ๋ฅผ ํด๋ฆญํ๋ ์๋ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๊ฒ ๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๋ ์์
main.html
ํ์ด์ง๋ฅผ ํตํด ๊ฒ์์ ํ์ํ ๋ฐ์ดํฐ๋ค์ ์ป๊ณ , ์ฌ์ฉ์๋ ๊ฒ์ ์์ง์ด ์์งํmain.html
ํ์ด์ง๋ฅผ ํตํด ๋ค์ ๊ธฐ์กด์ CSR ํ์ด์ง๋ก ์ ์ ๋๋ ์ ์ ๋๋ค.
- TSBOARD์ ๋น ๋ฅธ ํผํฌ๋จผ์ค์ ํ์
์์ ์ฑ์
Bun
๊ณผElysiaJS
๋๋ถ์ ๋๋ค.- ํนํ TSBOARD๋
ElysiaJS
์ ๊ณต์ ํ๋ฌ๊ทธ์ธ์ธedenTreaty
์ ํฌ๊ฒ ์์กดํ๊ณ ์์ต๋๋ค. edenTreaty
๋ฅผ ํตํด, TSBOARD๋ ํ๋ก ํธ์๋์ ์คํ ์ด์์๋ถํฐ ์๋ฒ๊น์ง ๊ฒฌ๊ณ ํ ํ์ ์์ ์ฑ์ ๊ฐ์ง๋๋ค.
- ํนํ TSBOARD๋
- ๋ฐฑ์๋ ๊ตฌ์กฐ๋ ๋จ์ํฉ๋๋ค.
routers
์์ API ๊ฒฝ๋ก ๋ผ์ฐํ ์,database
์์ CRUD ์์ ์ ๋ด๋นํฉ๋๋ค.- ๋ผ์ฐํ
์ฒ๋ฆฌ๋ ๋ชจ๋
server/routers/
๊ฒฝ๋ก ์๋์ ์๋ ํ์ผ๋ค์ ํ์ธํ์๋ฉด ๋ฉ๋๋ค. - ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ์ฒ๋ฆฌ๋ค์ ๋ชจ๋
server/database/
๊ฒฝ๋ก ์๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ฆฌ๋์ด ์์ต๋๋ค. - ์ต์์ ํด๋๋ช
์ ์ ์ธํ๋ฉด
routers
์database
๋ด๋ถ์ ํด๋ ๊ตฌ์กฐ๋ ํ์ผ๋ช ์ด (๋๋ถ๋ถ) ๋์ผํฉ๋๋ค. ์ด๋ ์๋ํ ๊ฒ์ผ๋ก, ๋์ผํ ํด๋๋ช ์๋์ ์๋ ๋์ผํ ํ์ผ๋ช ์ ์๋ก ๊ฐ์ ๋ชฉ์ ์ ์ํด ์์ฑ๋ ์ฝ๋์ด๋ฉฐ ๋จ์ง ์ญํ ์ ๋ฐ๋ผ ์์น๋ง ๋ฌ๋ฆฌํ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ๋ผ์ฐํ
์ฒ๋ฆฌ๋ ๋ชจ๋
- TSBOARD๋ ์ ํต์ ์ธ RDBMS์ด์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ MySQL(Mariadb)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ํ ๋ด๋ถ์ ์ผ๋ก SQL์ ํ์ฉํ๋ฉฐ,
Prisma
๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ฌผ๋ก ํน๋ณํ ์ด์ ๋ ์๊ณ ์ ๋ DB ์์ ์ ์ฌ์ ํ SQL ์ฟผ๋ฆฌ๊ฐ ๋ ํธํ๊ธฐ ๋๋ฌธ์ ๋๋ค. - ๋ชจ๋ ์ฟผ๋ฆฌ๋ฌธ์
server/database/common.ts
์ ์ ์๋ 4๊ฐ์ ํจ์ (select
,update
,insert
,remove
) ๋ฅผ ํตํด์ ํ ์ ์์ต๋๋ค. ์ด๋ ์๋ํ ๊ฒ์ผ๋ก, ์ฟผ๋ฆฌ ์คํ์ ๋ถํ์ํtry { ... } catch { ... } finally { ... }
๋ฐ๋ณต์ ์ค์ด๊ณ ์ถ์ด์ ์ ๋๋ค.
- ๋ํ ๋ด๋ถ์ ์ผ๋ก SQL์ ํ์ฉํ๋ฉฐ,
- ํ
์ด๋ธ ๊ตฌ์กฐ๋
install/table/query.ts
ํ์ผ์ ํตํด ํ์ธ ํ์ค ์ ์์ต๋๋ค. - 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์ ๊ฐํด์ง๋ ๋ถ๋ด์์ด ์ฌ์ ํ ๋น ๋ฅด๊ฒ ๋์ ๊ฐ๋ฅํฉ๋๋ค.
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.0
(~ 24.09.30)- ๋ธ๋ก๊ทธ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฐ ๊ฐ์ ์์ ์ด ๋ฐ์๋ฉ๋๋ค.
- CSR ๋ฐฉ์ ๊ธฐ๋ฐ์์ SEO๋ฅผ ์ข ๋ ๊ฐ์ ํ๊ธฐ ์ํ ์ถ๊ฐ ์์ ๋ค์ด ๋ฐ์๋ฉ๋๋ค.
v1.0.0
(~ 24.12.30)- ๋ธ๋ก๊ทธ ๊ธฐ๋ฅ ์์ ํ ํ ๊ณต๊ฐ ์์ ์ ๋๋ค.
- ์ฑํ ์ ์ค์๊ฐ ์ฑํ ์ ์ง์ํ ์์ ์ ๋๋ค. (ํ์ฌ๋ ์ชฝ์ง์ฒ๋ผ ๋์ํฉ๋๋ค.)
v1.5.0
(~ 25.06.30)- ์ผํ๋ชฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์์ ์ ๋๋ค.
- ๊ฒฐ์ ๋ชจ๋๊น์ง ๋ถ์ฌ์ ์ค์ ๋ก ์ ํ ๋ฑ๋ก ๋ฐ ํ๋งค๊น์ง ๊ฐ๋ฅํ๋๋ก ๊ตฌ์ฑํ ์์ ์ ๋๋ค.
v2.0.0
(~ 25.12.30)v3.0.0
(~ 27)
๋ก๋๋งต์ ๊ฐ๋ฐ์์ ์ฌ์ ์ ๋ฐ๋ผ ์ธ์ ๋ ์ง ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค!
- ํ ์คํธ๋ ๋ง์ด ํด๋ณด์๊ณ , ๋ถํธํ ์ ์ ์ธ์ ๋ ์ง ๋ง์ํด์ฃผ์ธ์!
- ์น ์ํ๊ณ์ ์๊ฒ๋๋ง ๋ณดํฌ์ด ๋ ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
- ์ธ์ ๊ฐ TSBOARD๋ก ๋ง๋ค์ด์ง ๋ฉ์ง ์ปค๋ฎค๋ํฐ๋ฅผ ๋ง๋๋ ๊ทธ ๋ ์ ๊ฟ๊ฟ๋ด ๋๋ค!