실시간 주식 데이터와 사용자 인증이 통합된 웹 플랫폼입니다.
- 📊 실시간 주식 데이터: 50개 주요 주식의 실시간 시세
- 💰 암호화폐 데이터: 상위 10개 암호화폐 실시간 시세
- 🔐 사용자 인증: 일반 로그인/회원가입 + 카카오 소셜 로그인
- 💬 실시간 채팅: 종목별 채팅방
- 🔌 WebSocket 지원: 실시간 데이터 스트리밍
- Backend: FastAPI, Python
- Database: MySQL
- Authentication: JWT + OAuth (Kakao)
- Real-time: WebSocket
- API: Finnhub Stock API
- Python 3.8+
- MySQL 8.0+
- Node.js 16+ (프론트엔드용)
# .env.example을 복사하여 .env 파일 생성
cp .env.example .env
# .env 파일을 편집하여 실제 값 입력필수 설정값:
DB_PASSWORD: MySQL 데이터베이스 비밀번호FINNHUB_API_KEY: Finnhub에서 발급받은 API 키JWT_SECRET_KEY: JWT 토큰 서명용 시크릿 키 (최소 32자)KAKAO_CLIENT_ID: 카카오 개발자 콘솔에서 발급받은 클라이언트 ID
-- MySQL에 데이터베이스 생성
CREATE DATABASE stock_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;# Python 의존성 설치
pip install -r requirements.txt
# 또는 uv 사용
uv synccd /path/to/project
uv run uvicorn stock.backend.main:app --reload --host 0.0.0.0 --port 8000서버 실행 후 브라우저에서 접속:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
POST /auth/signup- 회원가입POST /auth/login- 로그인GET /auth/kakao/redirect- 카카오 로그인GET /auth/me- 사용자 정보 조회POST /auth/logout- 로그아웃
GET /api/stocks/quote?symbol=AAPL- 개별 주식 시세GET /api/stocks/history/AAPL?hours=24- 주식 히스토리GET /api/stocks/crypto/BTC- 암호화폐 시세
ws://localhost:8000/ws/main- 전체 시장 데이터ws://localhost:8000/ws/stocks?symbol=AAPL- 개별 주식ws://localhost:8000/ws/chat/AAPL?nickname=홍길동- 채팅
# API 테스트
python -m stock.backend.test.test_scheduler
# WebSocket 테스트
python -m stock.backend.test.test_stock_websocket AAPL
# 채팅 테스트
python -m stock.backend.test.test_chat_room --symbol AAPLproject-root/
├── backend/
│ ├── api/
│ │ ├── auth.py
│ │ ├── chat.py
│ │ └── stock.py
│ │
│ ├── core/
│ │ ├── config.py
│ │ └── security.py
│ │
│ ├── database/
│ │ ├── models/
│ │ │ └── user.py
│ │ ├── crud.py
│ │ └── session.py
│ │
│ ├── services/
│ │ ├── auth_service.py
│ │ ├── chat_service.py
│ │ └── stock_service.py
│ │
│ ├── schemas/
│ │ ├── user.py
│ │ ├── stock.py
│ │ └── chat.py
│ │
│ ├── static/ # (JS, CSS, 이미지) ← 템플릿 방식이면 사용
│ ├── templates/ # (Jinja2 템플릿용)
│ ├── main.py # FastAPI 앱 진입점
│ └── config.py
│
├── frontend/
│ ├── public/ # 정적 자산
│ ├── src/
│ │ ├── components/ # 공통 컴포넌트 (ChatBox, StockPanel 등)
│ │ ├── pages/ # 페이지 (Home, Login, Chat 등)
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── .env
│ ├── index.html
│ └── package.json
│
├── .gitignore
├── README.md
└── pyproject.toml