OpenTrailPaper
Open-source bike computer firmware for the LilyGO T5S3 4.7" E-Paper PRO, with offline maps, GPX routes, FIT recording and Bluetooth sensors.
Cup Series race simulator: win and finishing odds, head-to-heads, parlays priced in the simulation, DFS projections and race-day weather.
Sports & fitnessJavaScript · HTMLGitHub @Haywood1033OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗NASCAR Cup Series race simulator: win and finishing odds, head-to-heads, parlays priced inside
the simulation, DFS projections with an exact lineup optimizer, race-day weather with a written
briefing, best plays, live running order and an honest accuracy record. Same stack and design
kit as golfprob, nflprob and hrprob: Vercel serverless functions, optional Supabase Postgres,
one app.html.
DATABASE_URL (or POSTGRES_URL, which Vercel's Supabase integration sets) to a Postgres connection string. In Supabase: Project Settings → Database → Connection string → URI, transaction pooler (port 6543).
Without it the model runs on the last 40 races fetched live./api/sync?season=2022, repeat until
remaining is 0, then 2023, 2024, 2025 and the current season./api/health first: it fetches every NASCAR feed and shows what came back. The feed
shapes were written from memory, so this is where a renamed field shows up.| Route | What it does |
|---|---|
/ | The app |
/api/race?race= | Race payload: field, ratings, odds, finish distributions, weather, briefing |
/api/races?season= | Schedule for the race picker |
/api/plays (POST {book}) | Best plays; pasted prices switch sections to value ranking |
/api/parlay (POST {legs}) | Prices a custom ticket inside the simulation |
/api/dfs (POST {csv}) | DFS projections joined to a salary CSV |
/api/live | Live lap, flag and running order |
/api/backtest?races=30 | Leak-free backtest |
/api/grades | Graded pre-race snapshots |
/api/sync?season= | History backfill (weekly cron grades too) |
/api/status, /api/health | What history is loaded; feed checks (?race= audits one race) |
npm test runs everything against a synthetic world (tests/fixtures.js): fake drivers, fake
races, the real handlers. See docs/BUILD-READOUT.md for how the model works.