KBO 리그 선수 데이터를 활용한 야구 라인업 구성 및 통계 분석 애플리케이션입니다.
- 포지션별 선수 선택 (포수, 내야수, 외야수)
- 선발 투수 및 불펜 투수 선택
- 야구장 UI에 선수 아이콘 배치
- 선수 아이콘 클릭 시 상세 프로필 확인
- 타자 평균 기록 (타율, 타점, 홈런, 득점)
- 투수 기록 (평균자책점, 승/패, 세이브, 홀드, 탈삼진)
- 팀 능력치 오각형 그래프
- 최적의 타순 추천
- 예상 승률 및 순위 계산
- 선수 상세 정보 (이름, 팀, 포지션)
- 주요 통계 표시
- 타자/투수별 오각형 능력치 그래프
- 타자: 파워, 정확도, 득점력, 수비, 체력
- 투수: 제구, 탈삼진 능력, 피안타 억제력, 위기관리, 체력
- 팀 로고 표시
- 선택한 선수들의 사진 갤러리
- 선수별 필터링 기능
- 이미지 확대 보기
- Frontend: React Native (Expo, TypeScript)
- Backend: Python, Django, Django REST Framework
- Database: MySQL (AWS RDS)
- Cloud: AWS (RDS, S3)
- 데이터 통신: REST API
- 상태 관리: React Hooks
- 웹 크롤링: Selenium
kbo_hitters_top150- 타자 통계kbo_pitchers_top150- 투수 통계kbo_defense_positions- 포지션 정보
- Glassmorphism 테마 적용
- 네비게이션 바
- 슬라이딩 패널
- 통계 카드
- 선수 선택 필터
- 프로필 카드
- 부드러운 슬라이딩 애니메이션
- 직관적인 터치 제스처 지원
- Node.js 18+
- Python 3.8+
- MySQL 8.0+
- Expo CLI
nineup/
├── app/ # Expo Router 앱 페이지
│ └── index.tsx # 메인 야구장 화면
├── components/ # 재사용 가능한 컴포넌트
│ ├── NavBar.tsx # 하단 네비게이션 바
│ ├── player-selector.tsx # 선수 선택 화면
│ ├── stats.tsx # 통계 화면
│ ├── profile.tsx # 선수 프로필 모달
│ └── album.tsx # 선수 사진 앨범
├── backend/ # Django 백엔드
│ ├── baseball/
│ │ └── views.py # API 엔드포인트
│ └── config/
│ └── settings.py # Django 설정
├── assets/ # 이미지 및 리소스
│ └── images/
│ └── logos/ # 팀 로고
└── types/ # TypeScript 타입 정의
└── player.ts # Player 인터페이스
GET /api/mysql-players/- 포지션별 선수 목록 조회GET /api/player-images/- 선수 이미지 목록 조회
- KBO 공식 사이트 크롤링 데이터 (2025 시즌)
- 타자 상위 150명
- 투수 상위 150명
타자:
- 파워: (TB-H)/AB 기준 (0-0.350 범위 → 0-100)
- 총 루타에서 안타를 뺀 값을 타수로 나눈 값 (장타율의 일종)
- 안타를 제외한 추가 루타(2루타, 3루타, 홈런)의 비율
- 정확도: 타율 기준 (0-0.400 → 0-100)
- 득점력: 득점 기준 (0-100점 → 0-100)
- 수비: 수비율(FPCT) 기준 (0.850-1.000 범위 → 0-100)
- 체력: 타수(AB) 기준 (0-600 타수 → 0-100)
투수:
- 제구: BB×9/IP 기준 (0-6 범위를 역으로 변환 → 0-100)
- 볼넷을 9이닝당으로 환산한 값 (낮을수록 좋음)
- 탈삼진 능력: 탈삼진 개수 기준 (0-200개 → 0-100)
- 피안타 억제력: 제구와 탈삼진 능력 기반 (가중 평균)
- 위기관리: WHIP + ERA 역정규화 (0.5-10 범위 → 0-100)
- WHIP와 ERA의 합이 낮을수록 높은 점수
- 체력: 이닝 수(IP) 기준 (0-150 이닝 → 0-100)