NBA Feed
팀 뉴스와 경기 정보를 제공, 점수는 직접 확인할 때까지 숨겨져 있습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기UCI downhill and race content, all in one place. Let's walk this sucker.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
"Ok dudes, let's walk this sucker." — Cru Jones, RAD (1986)
A mobile-first PWA that aggregates UCI downhill race content into one clean, bookmarkable feed. No algorithm. No notifications. No unread count. Just racing.
Trackwalk pulls from the best sources in the game — YouTube channels, Pinkbike, podcasts, and race film outfits like Sleeper — filters out everything that isn't UCI DH, and serves it as a card-based digest you can bookmark on your phone home screen.
Feels like a newspaper. Opens like an app. Updates itself.README 전문 보기 ↗trackwalk.racing — UCI downhill, without the noise.
A mobile-first PWA with two halves: a filtered feed of DH race content, and a results database covering every UCI World Cup and World Championship round from 2009 to 2026.
No algorithm. No notifications. No unread count. A newspaper, not an inbox.
Feed — YouTube channels, Pinkbike and podcasts, scored against a DH keyword list and served as a flat chronological card feed. Anything older than 30 days drops off, so it's always current. Categories: race runs, analysis, films, paddock, news, plus a shorts strip.
Results — 18 seasons, 145 rounds, 2009–2026. Qualifying and finals, men and women, with DNF/DSQ/DNS riders kept rather than silently dropped. Search any rider for their full career history grouped by venue.
Riders — follow a personal list and see only their results. 212 elite riders with Instagram links.
Pits — teams, media, podcasts, UCI links, and where to watch by region.
Installable to a phone home screen, works offline, no app store.
No server and no database. GitHub Actions fetches, filters and commits static JSON; GitHub Pages serves it.
GitHub Actions
├── refresh.yml twice hourly — YouTube + RSS → public/cache.json
├── fetch-results.yml every 10 min — current-season results
├── live-results.yml race-day polling, dispatched
├── dataride-fetch.yml every 6h — UCI DataRide backfill
└── preflight.yml weekly — source health check
trackwalk.racing (GitHub Pages)
└── index.html reads public/cache.json + public/results/<year>.json
A Cloudflare Worker proxies the Pinkbike RSS feed, which doesn't send CORS headers.
Items are scored against a weighted keyword list in scripts/content-filter.js.
MIN_SCORE | 6 — below this an item is dropped |
BOOST_SCORE | 4 — added for trusted sources |
| Untrusted threshold | 10 (MIN_SCORE + 4) |
MAX_AGE_DAYS | 30 |
Venue names are high-signal and weighted so a venue alone can't carry an item over the line. XCO is excluded at weight 15 — high enough to beat the sum of every boost. Enduro (EWS, EDR) is excluded too: Trackwalk is DH only.
The UCI MTB World Series channel is deliberately not trusted, because it posts XCO and enduro alongside downhill.
node scripts/test-filter.js # suite
node -e "const {scoreItem}=require('./scripts/content-filter.js'); console.log(scoreItem({title:'TEST'}))"
17 YouTube channels and RSS feeds — official race coverage, team channels, film outfits like
Sleeper, and podcasts. The authoritative list lives in
scripts/youtube-fetcher.js and
scripts/rss-fetcher.js; it changes often enough that duplicating it
here just creates something else to go stale.
Results come from the UCI's own systems — DataRide, ChronoRace and Tissot.
YouTube's free tier allows 10,000 units/day. Trackwalk reads each channel's uploads playlist
(playlistItems.list, 1 unit per channel) rather than search.list (100 units per query), so a
full refresh costs roughly 20 units — well under the daily limit even at twice-hourly.
git clone [email protected]:bscharenberg/trackwalk.git
cd trackwalk
npm install
cp .env.example .env # add YOUTUBE_API_KEY
node scripts/build-cache.js # rebuild the feed
npx serve . # index.html is at the repo root, not in public/
See docs/dev-workflow.md for the full workflow, and
docs/architecture.md for how the pieces fit.
No accounts, no login, no personal data collected. Your rider list and preferences live in your own browser's localStorage and are never sent anywhere. Analytics are aggregate only. No ads.
Proprietary — all rights reserved. See LICENSE.
The source is public to read for personal and educational reference. It is not open source: commercial use, redistribution, hosting, and reuse of the results database or filtering logic all require written permission. Licensing enquiries: [email protected]
Built by a saddle donkey, for saddle donkeys.
© 2026 Bryon Scharenberg.