OpenTrailPaper
LilyGO T5S3 4.7" E-Paper PRO용 오픈소스 자전거 컴퓨터 펌웨어, 오프라인 지도·GPX 경로·FIT 기록·블루투스 센서 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.