KBO 규칙 검색기
KBO 공식 야구규칙, 리그 규정, 규약에서 찾아 답합니다.
매일 아침 업데이트되는 NBA 경기 요약, Pulse Index™ 순위, 부상 소식, 오늘 경기 미리보기
Your daily NBA intelligence briefing. Box scores, Pulse Index™ rankings, injury wire, and tonight's previews — updated every morning.
스포츠·피트니스TypeScript · JavaScriptGitHub @hondoentertainment온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Hoops Intel — Daily NBA Intelligence Dashboard. Live at hoopsintel.net
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A daily NBA intelligence dashboard: ESPN-backed scores and schedules, AI-generated editions (Pulse Index, recaps, injury wire, previews, and companion sections), searchable archive, Pick ’Em, playoffs tooling, Ask Hoops Intel, embeddable widgets, and optional Pro (Stripe). Agents / contributors: cursor.md (Cursor) · CLAUDE.md (architecture, pipelines, conventions)README 전문 보기 ↗
Live at: hoopsintel.net
A daily NBA intelligence dashboard: ESPN-backed scores and schedules, AI-generated editions (Pulse Index, recaps, injury wire, previews, and companion sections), searchable archive, Pick ’Em, playoffs tooling, Ask Hoops Intel, embeddable widgets, and optional Pro (Stripe).
| Document | Role |
|---|---|
PRD.md | Product requirements & scope |
ROADMAP.md | Shipped features & horizon |
NEXT-STEPS.md | Current prioritized backlog |
PRODUCT-ENHANCEMENTS.md | Competitive backlog & status |
Agents / contributors: cursor.md (Cursor) · CLAUDE.md (architecture, pipelines, conventions)
Hoops Intel is a dark-themed, mobile-friendly NBA dashboard built with React 19, TypeScript, Tailwind CSS, and Vite. Data is regenerated on a schedule via GitHub Actions; Vercel builds and hosts the SPA plus api/ serverless routes. Supabase powers auth, picks, reactions, snapshots, and subscriptions.
/ask RAG over history, RSS + sitemap, OG images/pick-em), trivia, trade tools, momentum/clutch/lineups, widgets + embed.js| Element | Value |
|---|---|
| Background | Navy #050D1A |
| Primary accent | Sky #0EA5E9 |
| Success / stats | Emerald #10B981 |
| Alert / negative | Rose #F43F5E |
| Warning | Amber #F59E0B |
| Headers | Barlow Condensed |
| Body | DM Sans |
| Mono / stats | JetBrains Mono |
| Layer | Choice |
|---|---|
| UI | React 19 + TypeScript + TailwindCSS |
| Build | Vite · project root client/ |
| Routing | Wouter |
| Backend | Vercel serverless api/* |
| Auth & data | Supabase (REST from supabaseClient.ts) |
| AI | Claude (Anthropic SDK) · daily generators in scripts/ |
| Scheduling | .github/workflows/* |
hoops-intel/
├── client/src/ # App, pages, components, lib/* domain data
├── api/ # ask, push, Stripe, OG, subscribe-digest …
├── public/ # Static assets shipped to dist (embed.js, PWA …)
├── scripts/ # fetch-espn-, generate-* , season-mode, CI helpers
├── supabase/ # schema + migrations (apply in order)
├── references/ # data-schema.md, edition-examples.md (generator context)
├── PRD.md, ROADMAP.md, NEXT-STEPS.md …
├── cursor.md, CLAUDE.md
└── vite.config.ts # Uses client/ + publicDir at repo root
Detailed tree and quirks: CLAUDE.md.
Requires Node.js 24.x (see engines in package.json).
npm install
npm run dev # http://localhost:5173
npm run build
npm run test:unit # Vitest
npm run test:deploy # Vercel paths + migration files (no remote push)
npm run test:ci # same blocking steps as GitHub Actions (install + validators + build)
Lighter local check: npm run test runs content validation plus assembly scripts (narrower than test:ci).
Pipeline scripts (scripts/generate-*.mjs, etc.) need ANTHROPIC_API_KEY in .env at repo root — see scripts/load-local-env.mjs and CLAUDE.md. For playoff series intel (npm run playoff:intel, scripts/generate-series-intel.mjs), you can optionally set SERIES_INTEL_MAX_TOKENS (256–4096, default 1200) to tune Claude cost/latency.
Configure these on Vercel (Production + Preview where applicable) and/or GitHub Actions secrets (Settings → Secrets and variables → Actions).
| Scope | Variables |
|---|---|
| AI pipeline | ANTHROPIC_API_KEY; optional SERIES_INTEL_MAX_TOKENS for playoff:intel / scripts/generate-series-intel.mjs |
| Stripe / Pro | STRIPE_SECRET_KEY, STRIPE_PRICE_MONTHLY, STRIPE_PRICE_ANNUAL (Dashboard → Products → Price IDs, e.g. price_...), STRIPE_WEBHOOK_SECRET, APP_BASE_URL (canonical site URL); webhook signing secret mirrors api/stripe-webhook.ts. |
| Supabase | SUPABASE_URL, SUPABASE_ANON_KEY (prefixed VITE_ when exposed to browser), SUPABASE_SERVICE_KEY (server/GitHub Actions only). |
| Web Push | VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT, VITE_VAPID_PUBLIC_KEY (browser push subscribe; must match the public key), PUSH_API_SECRET, callers use PUSH_API_URL + secret in workflows. |
| Email digest | RESEND_API_KEY, optionally DIGEST_EMAILS; optional quiet window DIGEST_USE_QUIET_WINDOW=1 plus DIGEST_SEND_START_HOUR_PST / DIGEST_SEND_END_HOUR_PST (Pacific) and DIGEST_QUIET_OVERRIDE=1 to force a blast. See scripts/send-digest.mjs. |
| Guest / contact pitches | CONTACT_INBOUND_EMAIL + CONTACT_FORM_FROM_EMAIL (from defaults to Resend onboarding domain). Routes via api/contact-intake.ts. |
Copy .env.example when wiring Vercel (Production + Preview) and GitHub Actions secrets.
| Step | Where |
|---|---|
| Connect repo | Vercel → Add New → Project → Import hondoentertainment/hoops-intel (or your fork) |
| Root Directory | Vercel → Project → Settings → General: "." (repository root). Expect package.json, vercel.json, and vite.config.ts here — not the client/ subfolder alone. |
| Production branch | Vercel → Project → Settings → Git → Production Branch = main |
| Build | Reads vercel.json: npm ci + npm run build → static dist + api/ serverless |
| Supabase migrations | Files in supabase/migrations/ are not auto-applied by Vercel. Maintainer: supabase/config.toml + either run npx supabase db push locally after link, or Actions → Supabase migrations workflow (requires repo secrets SUPABASE_ACCESS_TOKEN, SUPABASE_PROJECT_REF). Local layout check: npm run test:deploy |
| Preview deploys | Open PRs automatically get Preview URLs when Git integration is enabled |
| CI | Every push runs .github/workflows/tests.yml; local parity is npm run test:ci |
| Dependabot | .github/dependabot.yml opens weekly grouped npm / Actions updates |
Morning jobs fetch ESPN payloads, assemble snapshots, invoke Claude generators, merge section outputs into pulseData.ts / archiveData.ts, and push to production. Playoff pulls update playoffData.ts; optional scripts snapshot series state and trigger push dispatch.
Full workflow: CLAUDE.md § Daily generation pipeline.
references/data-schema.mdreferences/edition-examples.mdPrivate project. All rights reserved.
| Unsubscribe landing | /unsubscribe calls api/unsubscribe-digest.ts (PATCH digest_subscribers with service role). |