Dugout Value
Baseball research on pitching, hitting, and projections, plus tools for comparing players, contracts, and trade value.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A 1-vs-1 fitness challenge proof-of-concept. Two friends commit to a healthy activity for a set number of days. The loser buys the winner's best reward; the winner buys the loser's lowest reward. Everyone gets something, and better progress unlocks the better prize.
Built with Vite + React + Tailwind CSS on the frontend, Hono + Drizzle + Turso on the backend, and Reap Agentic Payments (sandbox) for checkout.
• Live site: https://fitstake-eta.vercel.app
• Production branch: claude/loving-euler-z1g9y3
• Full project context: see docs/HANDOFF.md
• Agent quick-start: see AGENTS.md檢視完整 README ↗A 1-vs-1 fitness challenge proof-of-concept. Two friends commit to a healthy activity for a set number of days. The loser buys the winner's best reward; the winner buys the loser's lowest reward. Everyone gets something, and better progress unlocks the better prize.
Built with Vite + React + Tailwind CSS on the frontend, Hono + Drizzle + Turso on the backend, and Reap Agentic Payments (sandbox) for checkout.
claude/loving-euler-z1g9y3docs/HANDOFF.mdAGENTS.mdThis is a sandbox-only hackathon POC: fitness data is simulated and no real money moves.
Requires Node.js ≥ 22.9 (Node 24 recommended).
npm install
# Copy the example env file and fill it in
cp .env.example .env
# For isolated local development, use a file-based DB:
# TURSO_DATABASE_URL=file:local.db
npm run db:migrate
npm run dev
Run tests and type checks:
npm test
npm run typecheck
A full build (also runs tsc):
npm run build
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS 4, @fontsource-variable/inter |
| API | Hono (TypeScript), Vercel serverless function via api/index.ts |
| Database | Turso (libSQL) with Drizzle ORM |
| AI | OpenAI API for reward suggestions (optional; has fallback) |
| Payments | Reap Agentic Payments sandbox, plus a local simulator when no key is set |
| Auth | Email-code login with HttpOnly sessions; optional demo mode |
| Gmail SMTP (nodemailer) or Resend |
claude/loving-euler-z1g9y3.| Variable | Required? | Notes |
|---|---|---|
TURSO_DATABASE_URL | Yes | libsql://… or file:local.db |
TURSO_AUTH_TOKEN | Yes | Token for the Turso database |
AUTH_SECRET | For real auth | 32+ random chars |
GMAIL_USER + GMAIL_APP_PASSWORD | One email provider needed for real login | Or use RESEND_API_KEY + EMAIL_FROM |
OPENAI_API_KEY | Optional | Enables AI reward explanations |
REAP_API_KEY | For live payments | Without it, the local simulator runs |
AUTH_DEV_CODE | Demo only | true = instant insecure sign-in. Currently on in production for demos; remove before real users. |
Build command (already configured in vercel.json):
npm run db:migrate && vite build
Migrations run on every deploy and are idempotent. The API is served from api/index.ts with GET/POST exports.
Important: keep env vars server-side only. Never use a VITE_ prefix for secrets, and never commit .env files.
api/index.ts Vercel entry point (named GET/POST exports)
server/app.ts Routes, validation, same-origin checks
server/service.ts Business logic for challenges, rewards, settlement, lobby
server/auth.ts Email-code login and demo mode
server/session.ts Cookie helpers, requireUser, same-origin middleware
server/reap.ts Live Reap adapter + local simulator
server/ai.ts OpenAI reward recommender + fallback
server/merchants.ts Supported catalogue items
server/scoring.ts Deterministic scoring and tie-breaks
server/db/ Drizzle schema, client, migrations
shared/ activities.ts, pricing.ts
src/App.tsx React SPA with hash routing
src/api.ts Typed API client
src/legal.tsx Privacy, Terms, and Data Policy pages
src/index.css Tailwind + design tokens
drizzle/ SQL migrations
scripts/check-reap.mjs Read-only Reap connectivity check
tests/ Vitest tests
AUTH_DEV_CODE=true in production lets anyone sign in as any email with no code. Turn this off and configure real email before accepting real users.src/legal.tsx is a Singapore PDPA-oriented draft with placeholders. It must be reviewed by counsel and filled in before launch.COMPLETED flow has not been run end to end.AGENTS.md — conventions, commands, and gotchas for anyone working on the code.docs/HANDOFF.md — full project history, architecture, payments status, risks, and demo script.docs/PRODUCT_ASSESSMENT.md — product recommendation, validation notes, and remaining work.