BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
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 ↗A set of tools for fantasy hockey managers. Currently live:
/draft) - see below./skaters) - every skater ranked by C-Score over Last 5 / Last 10 /
Season / Last Season, split into Forwards and Defense, plus Compare and a Drop &
Replace flow for streaming. Drop & Replace can stage several adds as one move and
shows their combined starts day by day, so two streamers can't both count the
same open slot./goalies) - Start Tracker (each goalie's recent vs. season share
of starts) and Spot Starts (ranked by estimated win probability)./deployment) - skaters whose ice time or power-play share in
their most recent game jumped or dropped against a chosen baseline. Split into
Forwards and Defense tabs, 50 players per page. A Current Roles tab shows
each skater's raw TOI, PP TOI and PP share (last game, last 4, or season),
sortable by column - pair it with Unowned to scan free agents./trades) - buy-low skaters: strong C-Score but running
below their own career S%, oiS% and IPP. With a Yahoo league connected it
shows who owns each one, and "Build Offer" ranks your skaters as 1-for-1
offers by whether they fill a hole or thin spot in that team's lineup,
whether your own lineup stays full, and how close their points per game are.Skaters and Deployment can filter to unowned players. With a Yahoo league connected they use that league's real free agents; otherwise they use a manual roster.
npm run dev
Open http://localhost:3000.
At /draft. Workflow:
Name,
Team, Pos, Rank, ADP, G, ...) are auto-detected. Only a name column is
required; if there's no Rank column, the row order in your file is used as the
ranking. Grab the "Download an example CSV" link on the upload screen if you want
a template to start from.Stat projections and scoring are optional and layered on top: if your CSV also includes stat columns (goals, assists, etc.), configure points-per-stat under Settings and the Cheat Sheet switches to ranking by computed Fantasy Points and Value Over Replacement (VOR) instead, with auto-generated tiers.
All draft state (players, scoring, picks) persists to localStorage, so a page
refresh mid-draft won't lose anything. Use "Reset draft picks" or "Clear all players"
in Settings to start over.
One row per player. At minimum needs a name column; team, position, rank, ADP, and
stat columns are all optional and mapped manually on import. See src/lib/csv.ts
(FIELD_ALIASES) for the column keys recognized out of the box — you can add any
other stat as a custom scoring entry.
If your ranking CSV's positions don't exactly match Yahoo's fantasy eligibility
(e.g. a dual-eligible C/LW player), the app can apply Yahoo's own position data
automatically on every import - no login, no per-user step, for anyone using the
app. This comes from src/data/yahoo-positions.json, a bundled dataset built once
(and refreshable anytime) from a CSV of Yahoo player data:
npm run build:yahoo-positions -- path/to/your-file.csv
It auto-detects the Name/Position/Team columns (same alias matching as the main
ranking import - see src/lib/csv.ts) and writes src/data/yahoo-positions.json.
Since positions rarely change mid-season, you'd typically only need to do this once
before drafting. For one-off touch-ups afterward (a player who was missed, or whose
eligibility changed), Settings also has a manual paste box: copy a small
Name + Position table and paste it in to update just those players in your current
session (this one doesn't touch the bundled file).
If a player's name in your ranking CSV doesn't match the bundled dataset (different
spelling, nickname, etc.), positions just won't be applied for them - no error, they
keep whatever position was in your CSV. Tell me the mismatched name pairs and I can
add them as aliases in src/data/yahoo-positions.json.
Same idea as positions, for Average Draft Position: src/data/adp.json, built from a
Name,ADP CSV via:
npm run build:adp -- path/to/your-file.csv
This is the beginning of the README. Read the rest at the original. Read the full README ↗