React + Vite 기반의 모던 챗봇 사용자 인터페이스입니다.
- 직관적인 UI: 모던하고 사용자 친화적인 인터페이스
- 실시간 타이핑 효과: 자연스러운 대화 경험
- 코드 하이라이팅: Prism.js 기반 구문 강조
- 응답형 디자인: 모든 디바이스에서 최적화된 경험
- 피드백 시스템: 사용자 만족도 수집
- 고급 로깅: 파일 기반 로그 저장 및 일일 롤오버
- 에러 처리: 강력한 에러 복구 및 사용자 알림
- Frontend: React 19, TypeScript
- Build Tool: Vite 5.2.0
- Styling: Tailwind CSS
- Code Highlighting: Prism React Renderer
- UI Components: Lucide React Icons
- Deployment: Docker
# 의존성 설치
npm install
# 개발 서버 실행
npm run dev개발 서버는 http://localhost:3003에서 실행됩니다.
# Docker 이미지 빌드 및 실행
docker compose up -d
# 로그 확인
docker compose logs -f
# 중지
docker compose down애플리케이션은 http://localhost:3003에서 접근 가능합니다.
.env 파일을 생성하여 다음 환경 변수를 설정하세요:
# API 설정
VITE_API_BASE_URL=http://172.20.23.104:3000
VITE_API_ENDPOINT=/api/v1/chat/completions
VITE_MODEL_NAME=gemma3:1b
# UI 설정
VITE_TYPING_SPEED=50
VITE_LOG_LEVEL=DEBUG| 변수명 | 설명 | 기본값 |
|---|---|---|
VITE_API_BASE_URL |
챗봇 API 서버 주소 | http://172.20.23.104:3000 |
VITE_API_ENDPOINT |
API 엔드포인트 경로 | /api/v1/chat/completions |
VITE_MODEL_NAME |
사용할 AI 모델명 | gemma3:1b |
VITE_TYPING_SPEED |
타이핑 효과 속도 (ms) | 50 |
VITE_LOG_LEVEL |
로그 레벨 | DEBUG |
- 파일 기반: 로그를 파일로 저장
- 일일 롤오버: 매일 자동으로 로그 파일 생성
- 로컬스토리지 백업: 네트워크 오류 시 임시 저장
- 성능 모니터링: API 응답 시간 및 성능 메트릭 수집
CONFIG: 환경 설정 관련API: API 호출 및 응답USER: 사용자 액션PERFORMANCE: 성능 메트릭VALIDATION: 유효성 검사
logs/
├── chatbot-2025-01-10.log
├── chatbot-2025-01-09.log
└── ...
chatbot_ui/
├── src/
│ ├── components/
│ │ └── ChatBot.tsx # 메인 챗봇 컴포넌트
│ ├── utils/
│ │ ├── logger.ts # 기본 로거
│ │ └── fileLogger.ts # 파일 로거 (고급 기능)
│ ├── App.tsx # 루트 컴포넌트
│ ├── main.tsx # 앱 엔트리 포인트
│ ├── globals.css # 전역 스타일
│ └── vite-env.d.ts # Vite 타입 정의
├── public/
│ └── ico_chat.gif # 챗봇 아이콘
├── docker-compose.yml # Docker Compose 설정
├── Dockerfile # Docker 빌드 설정
├── vite.config.ts # Vite 설정
└── package.json # 프로젝트 의존성
# 타입 체크 및 빌드
npm run build
# 빌드된 파일 미리보기
npm run preview빌드된 파일은 dist/ 디렉토리에 생성됩니다.
# Node.js에서 React 앱 빌드 및 실행
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3003
CMD ["npm", "run", "preview"]# TypeScript 타입 체크
npm run type-check
# ESLint 실행
npm run lint- 브라우저 개발자 도구에서 로그 확인
fileLogger객체를 통한 실시간 로그 모니터링- 성능 메트릭 및 API 응답 시간 추적
- 환경 변수: 민감한 정보는 환경 변수로 관리
- CORS: API 서버에서 적절한 CORS 설정 필요
- Content Security Policy: 프로덕션 환경에서 CSP 헤더 설정 권장
- HTTPS: 프로덕션 환경에서 HTTPS 사용 권장
1. API 연결 오류
# 환경 변수 확인
echo $VITE_API_BASE_URL
# 네트워크 연결 테스트
curl -I http://172.20.23.104:3000/api/v1/chat/completions2. Docker 빌드 실패
# Docker 로그 확인
docker compose logs chatbot-ui
# 이미지 재빌드
docker compose build --no-cache3. 포트 충돌
# 포트 사용 확인
lsof -i :3003
# 다른 포트로 실행
VITE_PORT=3004 npm run dev# 오늘 로그 확인
tail -f logs/chatbot-$(date +%Y-%m-%d).log
# 에러 로그만 필터링
grep -i error logs/chatbot-$(date +%Y-%m-%d).log
# API 호출 로그 확인
grep -i "api" logs/chatbot-$(date +%Y-%m-%d).log- 코드 분할: Vite의 동적 import 활용
- 이미지 최적화: WebP 형식 사용 권장
- 브라우저 캐싱: 정적 자산 캐싱 설정
- 번들 크기 최적화: Tree shaking 및 압축
- Fork this repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
이 프로젝트는 MIT 라이선스 하에 있습니다.