No description
검색 페이지(memogipost)를 크롤링하여 프로미스나인 출연 대학 축제를 Gemini url_context로 추출, 행사 일정을 자동 생성하는 봇. 백엔드: - services/event.js: 이벤트 생성 로직 공유화 (upsertVenue, createEventSchedule, 카카오 검색) - services/festival/: scraper(검색 페이지 크롤) + gemini(추출) + index(봇 플러그인) - routes/admin/festival-bots.js: 축제 봇 CRUD API - scheduler.js: festival 타입 지원, 시간 단위 cron(0 */H * * *) 변환 - 처리한 글 URL은 festival_crawl_log에 기록, 새 글 없으면 Gemini 미호출 - 학교명 부분일치 중복 감지, 활동 멤버 전체 자동 등록 - Gemini 503/500/429 재시도 로직 기타 수정: - 행사 상세 페이지 관련 링크 줄바꿈 (truncate → break-all) - 대학 축제 아이콘 변경 (GraduationCap → PartyPopper) - docs/api.md, CLAUDE.md 환경변수 문서화 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| app | ||
| backend | ||
| docs | ||
| frontend | ||
| .env | ||
| .gitignore | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| README.md | ||
🌸 fromis_9 Fan Site
프로미스나인 팬사이트입니다.
✨ 주요 기능
- 👥 멤버 소개 - 프로미스나인 멤버 프로필 및 상세 정보
- 💿 디스코그래피 - 앨범 목록 및 타이틀곡 정보
- 📅 스케줄 - 예정된 활동 일정 (자동 업데이트)
- 🔗 SNS 링크 - 공식 소셜 미디어 바로가기
📁 프로젝트 구조
fromis_9/
├── frontend/ # React + Vite 프론트엔드
├── backend/ # Node.js + Express 백엔드
├── Dockerfile # 멀티스테이지 Docker 빌드
└── docker-compose.yml # Docker Compose 설정
🛠️ 기술 스택
Frontend
| 기술 | 설명 |
|---|---|
| React 18 | UI 라이브러리 |
| Vite | 빌드 도구 |
| TailwindCSS | CSS 프레임워크 |
| react-device-detect | PC/모바일 분기 |
| framer-motion | 애니메이션 |
Backend
| 기술 | 설명 |
|---|---|
| Node.js | 런타임 환경 |
| Express | 웹 프레임워크 |
| MySQL2 | 데이터베이스 연동 |
🚀 실행 방법
Docker (권장)
docker compose up -d --build
개발 모드
# 프론트엔드
cd frontend && npm install && npm run dev
# 백엔드
cd backend && npm install && npm start
⚙️ 환경 변수
.env 파일에 다음 변수들을 설정하세요:
DB_HOST=mariadb
DB_USER=fromis9
DB_PASSWORD=your_password
DB_NAME=fromis9
🌐 접속
📄 라이선스
MIT License