Sports Picks
NullDaily
A pick'em league on real games, with your household and friends on their own Budvo. Stake a pick and a miss goes into your jar.
Sports Picks
A pick'em league for your household on real games: NFL, college football, NBA, MLB, NHL, MLS and the Premier League. Pick winners before kickoff, climb the season table and collect pixel badges. Put a stake on a pick if you like: if it misses, the stake goes into your Budvo jar; if it's right, you only get points. Either way your debt payoff wins.
No money is wagered anywhere. Games and scores come from ESPN's public scoreboard (read only) through Budvo's
net.fetch. There are no payouts, and a stake is a pledge to your own jar, which never moves money until the owner
smashes it into a debt.
- Picks: choose a sport and a day (yesterday to six days out), then pick a side. Soccer has a Draw pick. Tap your pick again to clear it. Picks and stakes lock at kickoff.
- Scoring: 10 points for a right pick, +5 for a right underdog pick (by the betting line ESPN shows, or the standings when there is none; a right Draw counts as an underdog), and +2 for each right pick in a row after the first, up to +10.
- Stakes that only help: before kickoff, attach $1, $2 or $5 to your pick. When a staked pick misses, the stake is pledged to the jar. When Budvo asks before each pledge (the default), its own dialog is the only question and "Not now" just leaves that stake out; on older servers, or when the owner switched Budvo's question off, the add-on asks the first time and after that pledges automatically. Pledges respect the add-on's daily limit (the owner's setting, at most $10); when the limit is hit, the rest of that day's missed stakes is dropped and the add-on says so.
- Settling: results are checked when anyone opens the page (and every five minutes while it's open). Postponed or cancelled games don't count, and nothing is pledged for them.
- Seasons: monthly (a fresh season every month) or by sport (follows each league's real season, as ESPN reports it). A season closes after its last day once its picks have settled, and its final table moves to the trophy room. The winner gets the Champion badge.
- Household league: everyone in the household shares the league. Join with a display name and a jersey color; Budvo tells the add-on who is signed in, so it remembers your name after the first time. Other members' picks stay hidden until kickoff.
- Friends league: play the same picks against friends on their own Budvo. Under Friends, create a league (you get an invite code: single use, or for several friends under Invite options; codes expire after a week) or join with a friend's code. Each pick is published as a hash when you make it and revealed after kickoff, so nobody can copy it or change it late; its points follow once it settles. The Friends tab shows the table across servers. Only your display name, picks and points are shared. Stakes and your jar stay in your Budvo. It needs the server linked to a Budvo account and the owner's "Share leagues for Sports Picks" switch (Settings, Marketplace), and Budvo asks you once before sharing anything. You play as the household member linked to your Budvo sign-in.
- Badges: Rookie card, Hat trick, On fire, Dog whisperer, Perfect day, Globetrotter, Backed it, Jar hero and Champion.
- When ESPN is down: the page says so and offers Try again. Picks are saved and settle the next time ESPN answers.
Permissions
| Permission | Why |
|---|---|
net | Reads the public scoreboard from site.api.espn.com, or site.web.api.espn.com when that one turns Budvo away (GET only) |
storage | The league: members, open seasons, recent picks and past seasons (well under 64 KB) |
jar:pledge | Missed stakes ($1, $2 or $5), at most $10 a day |
jar:read | Shows what's in the jar and where it goes next |
league:share | Friends leagues across Budvo servers: your display name, pick commitments and reveals, points and results. Never stakes or the jar |
How it reads ESPN
GET /apis/site/v2/sports/<sport>/<league>/scoreboard?dates=YYYYMMDD for one day of one league. College football
adds groups=80&limit=30, because a full Saturday is close to the 1 MB net.fetch limit. From each event it keeps
the id, kickoff, status (pre, in, post, completed, postponed), both teams (abbreviation, name, colors, record,
score, winner) and the moneyline, which decides the underdog.
ESPN's edge sometimes answers 403 to requests from servers (in testing it refused Budvo's net.fetch user agent
on site.api.espn.com). site.web.api.espn.com serves the same JSON on the same path, so the add-on tries it next
and sticks with whichever answered. If neither answers, the page says so, keeps your picks and tries again later.
Files
manifest.json: the add-on manifest.app/index.html,app/style.css,app/app.js: the page, its look and the league.app/leagues.js: the sports, ESPN parsing and the scoring rules (no DOM, so it runs in Node too).app/sprites.js: the pixel art (jerseys in team colors, medals, trophy, badges) as text grids.app/budvo-sdk.js: the Budvo SDK, copied fromsdk/budvo-sdk.js.
Run it locally with npx budvo-addon dev . from this folder.
Versions
1.1.1Latest
- Needs server
- 0.4.0+
- Runtime
- app@1
- Size
- 37.9 KB
- SHA-256
- 10e14f26f4f2947b…
Republished for Budvo 0.4.0 with the renamed SDK. Nothing else changed.