Skip to content
DaleStudyPublic

About

๐Ÿ’ฌ ์ฑ—๋ด‡

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋‹ฌ๋ ˆ ์Šคํ„ฐ๋”” AI ์ฑ—๋ด‡

๋‹ฌ๋ ˆ ์Šคํ„ฐ๋”” ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์œ„ํ•œ AI ์ฑ—๋ด‡ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๐Ÿ—๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

dalestudy-chatbot/
โ”œโ”€โ”€ frontend/          # React + TypeScript + Vite
โ”œโ”€โ”€ backend/           # Cloudflare Worker (API + ํ”„๋ก ํŠธ์—”๋“œ ์ •์  ํŒŒ์ผ ์„œ๋น™)
โ”œโ”€โ”€ data/             # JSON ๋ฐ์ดํ„ฐ ํŒŒ์ผ
โ”œโ”€โ”€ PLAN.md           # ํ”„๋กœ์ ํŠธ ๊ณ„ํš์„œ
โ””โ”€โ”€ README.md         # ์ด ํŒŒ์ผ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

Prerequisites

  • Node.js 22+
  • AI Gateway ํ† ํฐ (backend/.dev.vars์— AI_GATEWAY_TOKEN=...)

1. ๋ฐฑ์—”๋“œ (Worker) ์‹คํ–‰

cd backend
npm install
npm run dev

wrangler dev๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋นŒ๋“œํ•œ ๋’ค http://localhost:8787 ์—์„œ API์™€ ํ™”๋ฉด์„ ํ•จ๊ป˜ ์„œ๋น™ํ•ฉ๋‹ˆ๋‹ค.

2. ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์„œ๋ฒ„ (์„ ํƒ)

cd frontend
npm install
npm run dev

http://localhost:3000 ์—์„œ ์‹คํ–‰๋˜๊ณ , /api ์š”์ฒญ์€ 8787 ํฌํŠธ์˜ Worker๋กœ ํ”„๋ก์‹œ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ์ฃผ์š” ํŒŒ์ผ

Frontend

  • src/components/ChatInterface.tsx - ๋ฉ”์ธ ์ฑ„ํŒ… ์ธํ„ฐํŽ˜์ด์Šค
  • src/components/MessageList.tsx - ๋ฉ”์‹œ์ง€ ๋ฆฌ์ŠคํŠธ ์ปดํฌ๋„ŒํŠธ
  • src/components/ChatInput.tsx - ๋ฉ”์‹œ์ง€ ์ž…๋ ฅ ์ปดํฌ๋„ŒํŠธ
  • src/api/index.ts - API ํ˜ธ์ถœ ํ•จ์ˆ˜๋“ค
  • src/types/index.ts - TypeScript ํƒ€์ž… ์ •์˜

Backend

  • 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 ํƒ€์ž… ์ •์˜

Data

  • data/study-projects.json - ์Šคํ„ฐ๋”” ํ”„๋กœ์ ํŠธ ๋ฐ FAQ ๋ฐ์ดํ„ฐ

๐Ÿ”ง ๊ฐœ๋ฐœ ๋ช…๋ น์–ด

Backend

npm run dev        # ๋กœ์ปฌ Worker ์‹คํ–‰ (wrangler dev)
npm run deploy     # Cloudflare์— ๋ฐฐํฌ (wrangler deploy)
npm run typecheck  # ํƒ€์ž… ์ฒดํฌ
npm run lint       # ESLint ์‹คํ–‰

Frontend

npm run dev      # ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
npm run build    # ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ
npm run preview  # ๋นŒ๋“œ๋œ ํŒŒ์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
npm run lint     # ESLint ์‹คํ–‰

๐ŸŒ API ์—”๋“œํฌ์ธํŠธ

POST /api/chat

์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  AI ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Request:

{
  "message": "๋‹ฌ๋ ˆ ์Šคํ„ฐ๋””์— ์–ด๋–ป๊ฒŒ ์ฐธ์—ฌํ•˜๋‚˜์š”?"
}

Response:

{
  "message": "์›น์‚ฌ์ดํŠธ์—์„œ ๊ด€์‹ฌ ์žˆ๋Š” ์Šคํ„ฐ๋””๋ฅผ ์„ ํƒํ•˜๊ณ ...",
  "sources": [...]
}

GET /api/search

ํ‚ค์›Œ๋“œ๋กœ ์Šคํ„ฐ๋”” ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

Request:

GET /api/search?q=React ์Šคํ„ฐ๋””

Response:

{
  "query": "React ์Šคํ„ฐ๋””",
  "category": "study", 
  "results": [...]
}

๐Ÿšข ๋ฐฐํฌ

chat.dalestudy.com์€ Cloudflare dalestudy ๊ณ„์ •์˜ Worker chat์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. main์— pushํ•˜๋ฉด GitHub Actions๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ ๋นŒ๋“œ์™€ ํ•จ๊ป˜ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. OpenAI ํ˜ธ์ถœ์€ AI Gateway๋ฅผ ๊ฑฐ์น˜๋ฉฐ, Worker secret AI_GATEWAY_TOKEN์€ ๊ฐ™์€ ์ด๋ฆ„์˜ org secret์—์„œ ๋ฐฐํฌํ•  ๋•Œ ๋„ฃ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ ๋ผ์ด์„ผ์Šค

MIT License

About

๐Ÿ’ฌ ์ฑ—๋ด‡

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages