Dugout Value
Baseball research on pitching, hitting, and projections, plus tools for comparing players, contracts, and trade value.
Challenge a friend, build healthy habits, and unlock rewards in a 30-day fitness challenge.
Translation pending
Sports & fitnessTypeScript · CSSGitHub @sayyidkhanOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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.mdRead the full 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.