You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Frontend / Backend / AI 연동을 포함한 Full-Stack 전반을 공동으로 작업
역할 구분 없이 기능 설계, 구현, 리팩토링을 함께 진행
🚀 시작하기
Docker로 실행 (권장)
# 프로젝트 클론
git clone https://github.com/OurInvestory/today-schedule.git
cd today-schedule
# .env 파일 설정 (아래 환경 변수 참고)# Docker Compose로 실행
docker-compose up -d --build
# 접속# Frontend: http://localhost:5173# Backend API: http://localhost:8000# API 문서: http://localhost:8000/docs# Prometheus: http://localhost:9090# Grafana: http://localhost:3000 (admin/admin123)
환경 변수 (.env)
# MySQL DatabaseMYSQL_ROOT_PASSWORD=root_password_change_thisMYSQL_DATABASE=five_schedule_dbMYSQL_USER=five_userMYSQL_PASSWORD=five_password_change_thisDATABASE_URL=mysql+pymysql://five_user:five_password_change_this@db:3306/five_schedule_db# Redis (캐싱 및 Celery 브로커)REDIS_URL=redis://redis:6379/0CELERY_BROKER_URL=redis://redis:6379/1CELERY_RESULT_BACKEND=redis://redis:6379/2# JWT AuthenticationSECRET_KEY=your-secret-key-change-in-production-very-long-and-secureJWT_SECRET_KEY=your-jwt-secret-key-change-in-production# Google Gemini APIGOOGLE_API_KEY=your_google_api_key_hereGEMINI_MODEL_NAME=gemini-2.5-flash# Google OAuth (소셜 로그인)GOOGLE_CLIENT_ID=your_google_client_idGOOGLE_CLIENT_SECRET=your_google_client_secret# Kakao OAuth (소셜 로그인)KAKAO_CLIENT_ID=your_kakao_client_idKAKAO_CLIENT_SECRET=your_kakao_client_secret# Google Calendar API (선택)GOOGLE_CALENDAR_CLIENT_ID=GOOGLE_CALENDAR_CLIENT_SECRET=# FrontendVITE_API_URL=http://localhost:8000FRONTEND_URL=http://localhost:5173# External Integrations (외부 서비스 연동)SLACK_WEBHOOK_URL=DISCORD_WEBHOOK_URL=NOTION_API_KEY=NOTION_DATABASE_ID=# Grafana (모니터링 대시보드)GF_SECURITY_ADMIN_USER=adminGF_SECURITY_ADMIN_PASSWORD=admin123
개별 실행
Frontend
cd frontend
npm install
npm run dev
# http://localhost:5173 에서 확인
Backend
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload
# http://localhost:8000 에서 확인
📁 프로젝트 구조
today-schedule/
├── frontend/ # React 프론트엔드
│ ├── src/
│ │ ├── components/ # 재사용 컴포넌트
│ │ │ ├── calendar/ # 캘린더 관련
│ │ │ ├── chatbot/ # AI 챗봇
│ │ │ ├── common/ # 공통 컴포넌트
│ │ │ ├── layout/ # 레이아웃
│ │ │ └── todo/ # 할 일 관리
│ │ ├── pages/ # 페이지 컴포넌트
│ │ ├── hooks/ # 커스텀 훅
│ │ ├── services/ # API 서비스
│ │ ├── context/ # React Context
│ │ └── utils/ # 유틸리티 함수
│ └── ...
├── backend/ # FastAPI 백엔드
│ ├── app/
│ │ ├── api/ # API 라우터
│ │ ├── core/ # 핵심 기능 (인증, 캐시, Celery, 이벤트버스, 모니터링)
│ │ ├── models/ # SQLAlchemy 모델
│ │ ├── schemas/ # Pydantic 스키마
│ │ ├── services/ # 비즈니스 로직 (챌린지, 리포트, OCR, 크롤러, 연동)
│ │ └── db/ # 데이터베이스 설정
│ ├── alembic/ # DB 마이그레이션
│ └── ...
├── monitoring/ # 모니터링 설정
│ ├── prometheus.yml # Prometheus 설정
│ └── grafana/
│ └── provisioning/ # Grafana 자동 프로비저닝
│ ├── datasources/
│ └── dashboards/
└── docker-compose.yml # Docker 설정