RunCheck
빈 체육관에 가는 일 없게, RunCheck로 누가, 어디서, 언제 뛰는지 미리 확인한다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Production-style NBA analytics platform with a modern web app, data pipelines, and cloud automation. The project combines:
This repository is intended to demonstrate end-to-end product engineering, including:
If you only have a few minutes, review:
app/ and lib/ for application and API designlambda/ for ingestion architecture and reliability patternsinfra/ for Terraform-managed cloud resourcesdocs/ for deployment, incident handling, and design tradeoffsSports betting tools often rely on surface-level statistics or manual analysis. This project was built to:
The goal is to remove emotion from decision-making and replace it with measurable, repeatable analysis.
At a high level:
raw.* and analytics.*).| Source | Runtime | Destination (typical) |
|---|---|---|
| BallDontLie games/stats | lambda/nightly-bdl-updater | raw.* -> analytics.* |
| BallDontLie odds | lambda/odds-pre-game-snapshot | analytics.game_odds_* |
| BallDontLie injuries | lambda/injuries-snapshot | analytics.player_injury_status_* |
| BallDontLie player props | lambda/player-props-snapshot | analytics.player_props_current and related tables |
| Basketball Reference (optional) | lambda/boxscore-scraper / scripts/ | bbref_* tables |
| Path | Why it exists |
|---|---|
app/ | App Router pages plus API route handlers |
components/ | Reusable UI and betting-focused presentation components |
lib/ | Data access, Supabase clients, shared server utilities |
lambda/ | Independent Lambda packages for ingestion and processing |
infra/ | Terraform for Lambdas, IAM, scheduling, and deployment resources |
scripts/ | Operational scripts for seeding, maintenance, and diagnostics |
db/schemas/ | Schema references, migration notes, consolidation docs |
docs/ | Runbooks, troubleshooting, design notes, and checklists |
Note: Lambda packages are intentionally excluded from the root TypeScript project to keep web app builds fast. Build and test each Lambda package within its own folder when changing ingestion code.
24.x (package.json engines). Lambda runtimes are per function in infra/*.tf, not this pin.npm install
cp .env.example .env.local
npm run dev
Then open http://localhost:3000.
Agents reuse port 3000 only when docs/dev-server.md positively identifies the listener as this worktree. Start with npm run dev -- --port 3000 only if that port is free. Bare npm run dev lets Next.js move off 3000 when the port is taken.
npm run build
npm start
.env.example and copy values into .env.localdocs/deployment-checklist.md.env, .env.local, or live credentialsUse these flags to keep schedulers alive while skipping live mutation/provider work:
DATA_MODE=live_api|replay|manual_csv (default: live_api)OFFSEASON_MODE=0|1CRON_DRY_RUN=0|1Recommended offseason settings:
DATA_MODE=replayOFFSEASON_MODE=1CRON_DRY_RUN=1Reactivation next season:
DATA_MODE=live_apiOFFSEASON_MODE=0CRON_DRY_RUN=0BALLDONTLIE_API_KEY)| Command | Purpose |
|---|---|
npm run dev | Start local Next.js dev server |
npm run build | Build production bundle |
npm start | Run built production server |
npm run lint | Run ESLint |
npm test | Run Vitest suite |
npm run lambdas | Invoke Lambda flows locally |
npm run lambdas:aws | Invoke Lambda flows against AWS |
npm run prune:player-props-v2 | Dry-run cleanup for old prop snapshots |
npm run prune:player-props-v2:execute | Execute cleanup for old prop snapshots |
Currently private ("private": true in package.json). Add a formal license before open sourcing.