NBA Feed
Your teams' news and games, with scores hidden until you reveal them.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A dark-mode sports betting intelligence dashboard with an HUD / sci-fi aesthetic.
Pick a sport → browse today's slate → drill into a game for deep analysis across
matchup, form, roster, and sport-specific modeling tabs.README 전문 보기 ↗A dark-mode sports betting intelligence dashboard with an HUD / sci-fi aesthetic. Pick a sport → browse today's slate → drill into a game for deep analysis across matchup, form, roster, and sport-specific modeling tabs.
MLB · NBA · WNBA · NFL · NHL · NCAAB
The only machine-learned component is the MLB first-5-innings money line model
(XGBoost, trained offline in CI). Every other "model" in the app is transparent,
inspectable arithmetic — Log5 matchups, Binomial/Poisson distributions, additive
scoring — and each score carries a why string or a methodology entry naming its
source, endpoint, inputs and formula.
Frontend — no build step, by design.
React 18 + Babel Standalone from a CDN; .jsx files are transpiled in the browser.
No bundler, no TypeScript, no npm-installed React. Fonts are Orbitron (display) and
Space Mono (everything else).
Backend — zero dependencies.
Pure Node http + https on port 3001. No npm packages at all, in-memory caching
(10-second minimum for the live game feed, 2 min for other MLB data,
15 min for historical BvP). Live updates use SSE with a polling fallback.
Data sources. ESPN's public API (no key), the MLB Stats API, and Baseball Savant. Claude (Haiku) is called directly from the browser with a user-supplied key.
# 1. Backend (port 3001, no install step — there are no dependencies)
./server/start.sh # daemonizes, logs to server/server.log
# or: node server/index.js # foreground
# 2. Frontend — any static server from the repo root
python3 -m http.server 8000
Open http://localhost:8000. The frontend auto-detects localhost and points at
http://localhost:3001, ignoring the production backend URL, so local dev works
without editing anything.
Check the backend is up:
curl http://localhost:3001/api/health
To use AI Plays, paste an sk-ant-… key into the input in the top nav. It is stored
in localStorage and sent only to Anthropic.
index.html Shell: CDN scripts, nav, API-key input, global CSS
frontend/
data/ Fetchers + models, split shared/ + per-sport
shared/ui-atoms.jsx Primitive UI components (HudCard, Sparkline, …)
shared/tabs/ Sport-agnostic tabs
shared/screens/ Home / Games / GameDetail
sports/{mlb,nba,nfl}/ Sport-specific tabs
server/
index.js Node HTTP server (port 3001)
mlb/ nba/ Per-sport services and endpoints
data/f5_model.json Committed XGBoost model (CI writes this)
ml/ Offline Python training pipeline (runs in CI, not the app)
Note:
data-layer.js,tabs.jsx,screens-v2.jsxandui-atoms.jsxin the repo root are dead legacy files left over from a reorg.index.htmldoes not load them. Always edit underfrontend/.
Scripts communicate through window. With no bundler, each file ends with an
Object.assign(window, { … }) export and later scripts read from there. The load
order in index.html is load-bearing: data layer → atoms → tabs → screens → app.
Backend URL resolution (frontend/data/shared/core.js), in order:
window.PIQ_API_BASE → localhost shortcut → the <meta name="piq-api-base"> tag →
localhost fallback.
The F5 model's train/serve parity is a contract. Features are defined once in
ml/f5_common.py and server/data/f5_feature_spec.json, and must be computed
identically by the Python collector and the live buildF5Features(). Training
embeds parity samples so the Node scorer self-checks to ~1e-7. Change a feature on
both sides, then retrain.
render.yaml blueprint. On the free tier
the service sleeps after ~15 min idle, so the first request after a nap takes
~30s. After deploying, point <meta name="piq-api-base"> in index.html at the
service URL..github/workflows/train-f5.yml retrains weekly, commits the model
JSON, and Render auto-deploys it.:root in index.html; wrap card-shaped content in HudCard.Object.assign(window, …) export at the bottom
of their file, or the next script won't find them.CLAUDE.md holds the full blueprint: file-by-file responsibilities, per-sport
gotchas, and how to add a tab, data source, or sport.
PlayIQ is an analysis and research tool. Nothing it outputs is betting advice, and no model here predicts outcomes reliably. Bet responsibly, or don't.