May 14, 2026
๐ก๏ธ GladiaTalk
๐ก๏ธ GladiaTalk
์ ์ฅ์: octxxiii/gladiatalk ๐ก๏ธ Words are your weapons, wisdom your shield - Real-time debate platform with enhanced security
๐ก๏ธ GladiaTalk
Words are your weapons, wisdom your shield
๊ธ๋๋์์ดํฐ ์ ์ ์ผ๋ก ํ ๋ก ์ ์๋ ๋์์ ์งํ๋ฅผ ๊ฒจ๋ฃจ๋ ํ๋ซํผ
๐ ํ๋ก์ ํธ ๊ฐ์
GladiaTalk์ ์ค์๊ฐ ํ ๋ก ๊ณผ ํฌํ๋ฅผ ํตํด ์งํ๋ฅผ ๊ฒจ๋ฃจ๋ ์์ ํ๋ซํผ์ ๋๋ค. ์ฌ์ฉ์๋ค์ ๋ค์ํ ์ฃผ์ ์ ๋ํด ๋ ๊ฐ์ง ์ ํ์ง ์ค ํ๋๋ฅผ ์ ํํ๊ณ , ์ค์๊ฐ์ผ๋ก ํ ๋ก ํ๋ฉฐ ํฌํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
โจ ์ฃผ์ ๊ธฐ๋ฅ
- ๐ฅ ์ค์๊ฐ ํ ๋ก : ํ๋ฐํ ํ ๋ก ํ๊ฒฝ์์ ์งํ๋ฅผ ๊ฒจ๋ฃจ์ธ์
- ๐ณ๏ธ ํฌํ ์์คํ : ๋ ๊ฐ์ง ์ ํ์ง ์ค ํ๋๋ฅผ ์ ํํ๊ณ ์ค๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ๐ ์ค์๊ฐ ๋ญํน: ์ฑํผ์ธ ๋ญํน ์์คํ ์ผ๋ก ๊ฒฝ์์ ์ฆ๊ฒจ๋ณด์ธ์
- ๐ฐ ํ ๋ก ๊ฒฝ์ : ํ ๋ก ์ฝ์ธ์ผ๋ก ๊ฐ์์ฑ์ ๋์ด๊ณ ํน๋ณํ ๊ธฐ๋ฅ์ ํด๊ธ
- ๐ก๏ธ ์์ ํ ํ๊ฒฝ: AI ๋ชจ๋๋ ์ด์ ๊ณผ ์ปค๋ฎค๋ํฐ ๊ฐ์ด๋๋ผ์ธ
- ๐ฑ ํฌ๋ก์ค ํ๋ซํผ: ์น, ๋ชจ๋ฐ์ผ, ๊ด๋ฆฌ์ ํจ๋ ์ง์
๐๏ธ ๊ธฐ์ ์คํ
Backend
- Fastify: ๊ณ ์ฑ๋ฅ ์น ํ๋ ์์ํฌ
- tRPC: ํ์ ์์ ํ API
- Prisma: ๋ฐ์ดํฐ๋ฒ ์ด์ค ORM
- PostgreSQL: ๋ฉ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Redis: ์บ์ฑ ๋ฐ ์ค์๊ฐ ๊ธฐ๋ฅ
- WebSocket: ์ค์๊ฐ ํต์
Frontend
- Next.js: ์น ์ ํ๋ฆฌ์ผ์ด์ (PWA)
- React Native: ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
- Tailwind CSS: ์คํ์ผ๋ง
- TypeScript: ํ์ ์์ ์ฑ
DevOps & Security
- Docker: ์ปจํ ์ด๋ํ
- Nginx: ๋ฆฌ๋ฒ์ค ํ๋ก์
- Prometheus + Grafana: ๋ชจ๋ํฐ๋ง
- Helmet: ๋ณด์ ํค๋
- Rate Limiting: API ๋ณดํธ
- Fail2ban: ๋ฌด์ฐจ๋ณ ๋์ ๋ฐฉ์ง
๐ ๋น ๋ฅธ ์์
ํ์ ์๊ตฌ์ฌํญ
- Node.js 18+
- npm ๋๋ yarn
- Docker (์ ํ์ฌํญ)
- PostgreSQL
- Redis
์ค์น ๋ฐ ์คํ
- ์ ์ฅ์ ํด๋ก
git clone https://github.com/yourusername/gladiatalk.git
cd gladiatalk
- ์์กด์ฑ ์ค์น
npm install
- ํ๊ฒฝ ๋ณ์ ์ค์
cp .env.development .env
# .env ํ์ผ์ ํธ์งํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ์ ๊ตฌ์ฑํ์ธ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์
npm run db:generate
npm run db:push
npm run db:seed
- ๊ฐ๋ฐ ์๋ฒ ์์
npm run dev
Docker๋ฅผ ์ฌ์ฉํ ์คํ
# ๊ฐ๋ฐ ํ๊ฒฝ
docker-compose -f docker-compose.dev.yml up
# ํ๋ก๋์
ํ๊ฒฝ
docker-compose -f docker-compose.prod.yml up
๐ ํ๋ก์ ํธ ๊ตฌ์กฐ
gladiatalk/
โโโ apps/
โ โโโ web/ # Next.js ์น ์ ํ๋ฆฌ์ผ์ด์
โ โโโ mobile/ # React Native ๋ชจ๋ฐ์ผ ์ฑ
โ โโโ admin/ # ๊ด๋ฆฌ์ ํจ๋
โ โโโ server/ # Fastify API ์๋ฒ
โโโ packages/
โ โโโ api/ # tRPC API ์ ์
โ โโโ db/ # Prisma ์คํค๋ง ๋ฐ ๋ง์ด๊ทธ๋ ์ด์
โ โโโ ui/ # ๊ณต์ UI ์ปดํฌ๋ํธ
โ โโโ proto/ # ๊ณต์ ํ์
์ ์
โโโ scripts/
โ โโโ security-setup.sh # ๋ณด์ ์ค์ ์คํฌ๋ฆฝํธ
โ โโโ environment-setup.sh # ํ๊ฒฝ ์ค์ ์คํฌ๋ฆฝํธ
โ โโโ test-automation.sh # ํ
์คํธ ์๋ํ ์คํฌ๋ฆฝํธ
โโโ nginx/ # Nginx ์ค์
โโโ monitoring/ # ๋ชจ๋ํฐ๋ง ์ค์
โโโ docs/ # ๋ฌธ์
๐ก๏ธ ๋ณด์
GladiaTalk์ ์ํฐํ๋ผ์ด์ฆ๊ธ ๋ณด์์ ์ ๊ณตํฉ๋๋ค:
์์คํ ๋ณด์
- ๋ฐฉํ๋ฒฝ ์ค์ (UFW)
- SSH ๋ณด์ ๊ฐํ
- Fail2ban ๋ฌด์ฐจ๋ณ ๋์ ๋ฐฉ์ง
- ์ ๊ธฐ ๋ณด์ ์ ๋ฐ์ดํธ
์ ํ๋ฆฌ์ผ์ด์ ๋ณด์
- Rate Limiting
- CORS ์ ์ฑ
- ๋ณด์ ํค๋ (Helmet)
- ์ ๋ ฅ๊ฐ ๊ฒ์ฆ
- SQL Injection ๋ฐฉ์ง
- XSS/CSRF ๋ฐฉ์ง
๋ชจ๋ํฐ๋ง
- ์ค์๊ฐ ๋ก๊ทธ ๋ชจ๋ํฐ๋ง
- ๋ณด์ ์ด๋ฒคํธ ์๋ฆผ
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง
- ๋ฐฑ์ ์์คํ
๐ ๋ชจ๋ํฐ๋ง
Prometheus์ Grafana๋ฅผ ์ฌ์ฉํ ์ข ํฉ ๋ชจ๋ํฐ๋ง:
- API ์๋ต ์๊ฐ
- ์ค๋ฅ์จ ์ถ์
- ์์คํ ๋ฆฌ์์ค ์ฌ์ฉ๋
- ์ฌ์ฉ์ ํ๋ ๋ถ์
- ๋ณด์ ์ด๋ฒคํธ ๋ชจ๋ํฐ๋ง
๐ง ๊ฐ๋ฐ ๊ฐ์ด๋
์ฝ๋ ์คํ์ผ
- TypeScript ์ฌ์ฉ
- ESLint + Prettier
- ์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์
- PR ๋ฆฌ๋ทฐ ํ์
ํ ์คํธ
# ์ ์ฒด ํ
์คํธ ์คํ
npm run test
# ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง
npm run test:coverage
# E2E ํ
์คํธ
npm run test:e2e
๋ฐฐํฌ
# ํ๋ก๋์
๋น๋
npm run build
# Docker ์ด๋ฏธ์ง ๋น๋
docker build -t gladiatalk .
# ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์คํ
./scripts/deploy.sh
๐ ์ฑ๋ฅ ์ต์ ํ
- Redis ์บ์ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ
- CDN ์ฌ์ฉ
- ์ด๋ฏธ์ง ์ต์ ํ
- ์ฝ๋ ์คํ๋ฆฌํ
๐ค ๊ธฐ์ฌํ๊ธฐ
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
๐ ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
๐ ์ฐ๋ฝ์ฒ
- ํ๋ก์ ํธ ๋งํฌ: https://github.com/yourusername/gladiatalk
- ์ด์ ๋ฆฌํฌํธ: https://github.com/yourusername/gladiatalk/issues
๐ ๊ฐ์ฌ์ ๋ง
- Fastify - ๊ณ ์ฑ๋ฅ ์น ํ๋ ์์ํฌ
- tRPC - ํ์ ์์ ํ API
- Next.js - React ํ๋ ์์ํฌ
- Tailwind CSS - CSS ํ๋ ์์ํฌ
- Prisma - ๋ฐ์ดํฐ๋ฒ ์ด์ค ORM
GladiaTalk - ์งํ์ ์๋ ๋์์ ๋น์ ์ ๋ฌด๊ธฐ๋ฅผ ํ๋๋ฅด์ธ์! โ๏ธ