프로젝트 배경
1) 예상 리스크 및 대응 계획 - NBA·NFL·MLB·EPL 4개 종목이 각각 다른 HTML 구조와 데이터 스키마를 가지므로 종목별 파서를 독립적으로 유지하면서 공통 수집 인터페이스를 설계하는 전략 필요 - 경기 데이터가 수집 시점에 따라 일정·진행중·결과 3가지 상태로 변하므로, 상태 전환을 정확히 반영하는 Upsert 로직과 타임스탬프 관리 설계 필요 - 포지션별 선수 스탯 백분위를 실시간으로 계
프로젝트 성과
종목별 Cheerio 크롤러 + Cron 수집 파이프라인 구현
NBA·NFL·MLB·EPL 4개 종목 각각 다른 HTML 구조에 대응하는 Cheerio 파서 구현, node-cron 30분 주기 스케줄러와 경기 ID Upsert 패턴으로 중복 없는 수집 파이프라인 설계
PostgreSQL Window Function 기반 선수 스탯 백분위 쿼리 설계
PERCENT_RANK 윈도우 함수로 포지션 내 선수 득점·어시스트·리바운드 백분위를 단일 쿼리로 산출하는 집계 구조 구현
React Router v6 중첩 라우트 드릴다운 내비게이션 구조 설계
리그→팀→선수 3단계 드릴다운을 중첩 라우트 Outlet 패턴으로 구현, 브라우저 뒤로가기 및 URL 공유 지원
TanStack Table v8 다중 컬럼 정렬 순위표 컴포넌트 구현
승률·득점·실점·득실차 4개 기준 컬럼 클릭 정렬을 getSortedRowModel로 구현, 디비전별 그룹 탭 분리 설계
Redis TTL 캐싱으로 순위 집계 쿼리 반복 실행 최소화 설계
리그별 순위 집계 결과를 Redis에 5분 TTL로 캐싱, 동일 요청 반복 시 DB 집계 쿼리 스킵 구조 적용
핵심 기능
진행 단계
스포츠 데이터 도메인 모델링 및 수집 대상 분석
2026.03.
NBA·NFL·MLB·EPL 4개 종목 엔티티 관계 분석, PostgreSQL 테이블 24개 + Prisma 스키마 설계, Cheerio 수집 대상 URL 구조 파악
프로젝트 상세
1) 포트폴리오 소개 NBA·NFL·MLB 등 해외 스포츠 경기 데이터를 자동 수집·가공하여 종목/리그/팀/선수별로 탐색할 수 있는 정보 플랫폼을 React + Node.js로 설계·구현. Cheerio 기반 수집 파이프라인, 경기 일정·결과·순위 조회 UI, 선수 상세 스탯 시각화 기능을 포함한 반응형 풀스택 SPA 구축. 2) 작업 범위 - 경기 일정 및 결과 홈: 오늘의 경기 일정, 진행 중인







