尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 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
Unlike positions (which always override), this only fills in ADP for players who don't already have one from their own ranking CSV - it won't clobber ADP you already imported. Rows with a non-numeric value (e.g. "N/A" for undrafted players) are skipped automatically.
Both datasets use the same accent/case/whitespace-insensitive name matching, and Settings shows how many players are covered by each.
Beyond your main imported list, Settings has an Additional Ranking Sources box
for pasting in other rankings (a friend's list, another site's rankings) purely to
compare - paste Name + Rank rows, give it a label, and it shows up as its own column
on the Cheat Sheet, matched to your main list by name. An Avg Rank column also
appears, averaging each player's own rank plus every source that has them (so a
player only one source ranked still just shows their own rank - the average isn't
dragged down by sources that don't cover them). Unlike the bundled Yahoo/ADP
datasets, these live in localStorage with the rest of your draft state, not a file
in the repo - add or remove them anytime per session.
Next.js (App Router) + TypeScript + Tailwind CSS, deployed on Vercel. Zustand for
Draft Assistant state (persisted to localStorage), Papaparse for CSV import.
.env.local's DATABASE_URL points at a local Postgres, so a local
drizzle-kit push does not reach production.vercel.json) refresh DB-backed caches for
Yahoo position eligibility and the NST-backed tools, so page loads never wait
on a live NST or Yahoo call.See ROADMAP.md.