{"id":30028974,"url":"https://github.com/dalestudy/chat","last_synced_at":"2026-06-16T20:31:31.509Z","repository":{"id":308093157,"uuid":"1030595117","full_name":"DaleStudy/chat","owner":"DaleStudy","description":"💬 챗봇","archived":false,"fork":false,"pushed_at":"2025-09-03T23:00:47.000Z","size":164,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T20:33:23.806Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://chat.dalestudy.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DaleStudy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-01T23:27:36.000Z","updated_at":"2025-09-03T23:00:51.000Z","dependencies_parsed_at":"2025-08-04T06:24:43.272Z","dependency_job_id":"27124e1b-0877-482e-90c6-e5758a156d2d","html_url":"https://github.com/DaleStudy/chat","commit_stats":null,"previous_names":["dalestudy/chat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DaleStudy/chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaleStudy%2Fchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaleStudy%2Fchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaleStudy%2Fchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaleStudy%2Fchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DaleStudy","download_url":"https://codeload.github.com/DaleStudy/chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaleStudy%2Fchat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34423213,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-06T16:47:50.134Z","updated_at":"2026-06-16T20:31:31.487Z","avatar_url":"https://github.com/DaleStudy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 달레 스터디 AI 챗봇\n\n달레 스터디 커뮤니티를 위한 AI 챗봇 서비스입니다.\n\n## 🏗️ 프로젝트 구조\n\n```\ndalestudy-chatbot/\n├── frontend/          # React + TypeScript + Vite\n├── backend/           # Node.js + Express + TypeScript  \n├── data/             # JSON 데이터 파일\n├── PLAN.md           # 프로젝트 계획서\n└── README.md         # 이 파일\n```\n\n## 🚀 빠른 시작\n\n### Prerequisites\n- Node.js 18+ \n- npm 또는 yarn\n\n### 1. 저장소 클론\n```bash\ngit clone \u003crepository-url\u003e\ncd dalestudy-chatbot\n```\n\n### 2. 백엔드 실행\n```bash\ncd backend\ncp .env.example .env\nnpm install\nnpm run dev\n```\n\n백엔드 서버가 http://localhost:8080 에서 실행됩니다.\n\n### 3. 프론트엔드 실행  \n```bash\ncd frontend\ncp .env.example .env\nnpm install  \nnpm run dev\n```\n\n프론트엔드가 http://localhost:3000 에서 실행됩니다.\n\n## 📁 주요 파일\n\n### Frontend\n- `src/components/ChatInterface.tsx` - 메인 채팅 인터페이스\n- `src/components/MessageList.tsx` - 메시지 리스트 컴포넌트\n- `src/components/ChatInput.tsx` - 메시지 입력 컴포넌트\n- `src/api/index.ts` - API 호출 함수들\n- `src/types/index.ts` - TypeScript 타입 정의\n\n### Backend\n- `src/index.ts` - Express 서버 메인 파일\n- `src/routes/chat.ts` - 채팅 API 라우터\n- `src/routes/search.ts` - 검색 API 라우터\n- `src/services/searchService.ts` - Fuse.js 검색 서비스\n- `src/utils/dataLoader.ts` - JSON 데이터 로더\n- `src/types/index.ts` - TypeScript 타입 정의\n\n### Data\n- `data/study-projects.json` - 스터디 프로젝트 및 FAQ 데이터\n\n## 🔧 개발 명령어\n\n### Backend\n```bash\nnpm run dev      # 개발 서버 실행 (watch mode)\nnpm run build    # TypeScript 빌드\nnpm run start    # 프로덕션 서버 실행\nnpm run lint     # ESLint 실행\n```\n\n### Frontend  \n```bash\nnpm run dev      # 개발 서버 실행\nnpm run build    # 프로덕션 빌드\nnpm run preview  # 빌드된 파일 미리보기\nnpm run lint     # ESLint 실행\n```\n\n## 🌐 API 엔드포인트\n\n### POST /api/chat\n사용자 메시지를 처리하고 AI 응답을 반환합니다.\n\n**Request:**\n```json\n{\n  \"message\": \"달레 스터디에 어떻게 참여하나요?\"\n}\n```\n\n**Response:**\n```json\n{\n  \"message\": \"웹사이트에서 관심 있는 스터디를 선택하고...\",\n  \"sources\": [...]\n}\n```\n\n### GET /api/search\n키워드로 스터디 정보를 검색합니다.\n\n**Request:**\n```\nGET /api/search?q=React 스터디\n```\n\n**Response:**\n```json\n{\n  \"query\": \"React 스터디\",\n  \"category\": \"study\", \n  \"results\": [...]\n}\n```\n\n## 🛠️ 다음 단계\n\n1. **LLM API 연동** - OpenAI 또는 Anthropic API 연결\n2. **프롬프트 엔지니어링** - 더 나은 답변을 위한 프롬프트 최적화\n3. **UI/UX 개선** - 더 나은 사용자 경험을 위한 디자인 개선\n4. **배포 설정** - Vercel + Railway/Render 배포 구성\n\n## 📝 라이센스\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalestudy%2Fchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdalestudy%2Fchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalestudy%2Fchat/lists"}