Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 30 additions & 26 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,46 @@
name: Deploy to GitHub Pages
name: Deploy to Cloudflare Workers

on:
push:
branches:
- main

permissions:
contents: write
pages: write
id-token: write
pull_request:
branches:
- main

jobs:
build-and-deploy:
typecheck:
runs-on: ubuntu-latest
environment: github-pages
env:
VITE_API_URL: ${{ vars.VITE_API_URL }}
permissions:
contents: read
defaults:
run:
working-directory: ./frontend
working-directory: ./backend
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: actions/checkout@v7

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
- run: npm ci

- name: Install dependencies
run: npm ci
- run: npm run typecheck

deploy:
needs: typecheck
if: github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v7

- name: Build
run: npm run build
- run: npm ci
working-directory: ./backend

- name: Deploy to GitHub Pages
uses: actions/configure-pages@v4
- uses: actions/upload-pages-artifact@v3
- name: Deploy
uses: cloudflare/wrangler-action@v4
with:
path: "./frontend/dist"
- uses: actions/deploy-pages@v4
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
workingDirectory: backend
secrets: |
AI_GATEWAY_TOKEN
env:
AI_GATEWAY_TOKEN: ${{ secrets.AI_GATEWAY_TOKEN }}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,7 @@ jspm_packages/

# TernJS port file
.tern-port

# Wrangler
.wrangler/
.dev.vars
1 change: 0 additions & 1 deletion CNAME

This file was deleted.

45 changes: 17 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
```
dalestudy-chatbot/
├── frontend/ # React + TypeScript + Vite
├── backend/ # Node.js + Express + TypeScript
├── backend/ # Cloudflare Worker (API + 프론트엔드 정적 파일 서빙)
├── data/ # JSON 데이터 파일
├── PLAN.md # 프로젝트 계획서
└── README.md # 이 파일
Expand All @@ -16,34 +16,26 @@ dalestudy-chatbot/
## 🚀 빠른 시작

### Prerequisites
- Node.js 18+
- npm 또는 yarn
- Node.js 22+
- AI Gateway 토큰 (`backend/.dev.vars`에 `AI_GATEWAY_TOKEN=...`)

### 1. 저장소 클론
```bash
git clone <repository-url>
cd dalestudy-chatbot
```

### 2. 백엔드 실행
### 1. 백엔드 (Worker) 실행
```bash
cd backend
cp .env.example .env
npm install
npm run dev
```

백엔드 서버가 http://localhost:8080 에서 실행됩니다.
`wrangler dev`가 프론트엔드를 빌드한 뒤 http://localhost:8787 에서 API와 화면을 함께 서빙합니다.

### 3. 프론트엔드 실행
### 2. 프론트엔드 개발 서버 (선택)
```bash
cd frontend
cp .env.example .env
npm install
npm install
npm run dev
```

프론트엔드가 http://localhost:3000 에서 실행됩니다.
http://localhost:3000 에서 실행되고, `/api` 요청은 8787 포트의 Worker로 프록시됩니다.

## 📁 주요 파일

Expand All @@ -55,9 +47,9 @@ npm run dev
- `src/types/index.ts` - TypeScript 타입 정의

### Backend
- `src/index.ts` - Express 서버 메인 파일
- `src/routes/chat.ts` - 채팅 API 라우터
- `src/routes/search.ts` - 검색 API 라우터
- `src/index.ts` - Worker 진입점 (`/health`, `/api/chat`, `/api/search`)
- `src/chat.ts` - 채팅 처리 (질문 분류 → 검색 → 답변 생성)
- `src/services/llmService.ts` - AI Gateway 경유 OpenAI 호출
- `src/services/searchService.ts` - Fuse.js 검색 서비스
- `src/utils/dataLoader.ts` - JSON 데이터 로더
- `src/types/index.ts` - TypeScript 타입 정의
Expand All @@ -69,10 +61,10 @@ npm run dev

### Backend
```bash
npm run dev # 개발 서버 실행 (watch mode)
npm run build # TypeScript 빌드
npm run start # 프로덕션 서버 실행
npm run lint # ESLint 실행
npm run dev # 로컬 Worker 실행 (wrangler dev)
npm run deploy # Cloudflare에 배포 (wrangler deploy)
npm run typecheck # 타입 체크
npm run lint # ESLint 실행
```

### Frontend
Expand Down Expand Up @@ -120,12 +112,9 @@ GET /api/search?q=React 스터디
}
```

## 🛠️ 다음 단계
## 🚢 배포

1. **LLM API 연동** - OpenAI 또는 Anthropic API 연결
2. **프롬프트 엔지니어링** - 더 나은 답변을 위한 프롬프트 최적화
3. **UI/UX 개선** - 더 나은 사용자 경험을 위한 디자인 개선
4. **배포 설정** - Vercel + Railway/Render 배포 구성
`chat.dalestudy.com`은 Cloudflare `dalestudy` 계정의 Worker `chat`으로 배포됩니다. `main`에 push하면 GitHub Actions가 프론트엔드 빌드와 함께 배포합니다. OpenAI 호출은 AI Gateway를 거치며, Worker secret `AI_GATEWAY_TOKEN`은 같은 이름의 org secret에서 배포할 때 넣습니다.

## 📝 라이센스

Expand Down
61 changes: 0 additions & 61 deletions backend/DEPLOY.md

This file was deleted.

26 changes: 0 additions & 26 deletions backend/Dockerfile

This file was deleted.

32 changes: 0 additions & 32 deletions backend/fly.toml

This file was deleted.

Loading
Loading