Skip to content
Marketplace
FeatureFree

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

PermissionWhy
netReads the public scoreboard from site.api.espn.com, or site.web.api.espn.com when that one turns Budvo away (GET only)
storageThe league: members, open seasons, recent picks and past seasons (well under 64 KB)
jar:pledgeMissed stakes ($1, $2 or $5), at most $10 a day
jar:readShows what's in the jar and where it goes next
league:shareFriends 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 from sdk/budvo-sdk.js.

Run it locally with npx budvo-addon dev . from this folder.

Versions

  1. 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.