OpenTrailPaper
LilyGO T5S3 4.7" E-Paper PRO용 오픈소스 자전거 컴퓨터 펌웨어, 오프라인 지도·GPX 경로·FIT 기록·블루투스 센서 지원
비공식이지만 검색 가능한 Orangetheory Fitness 운동 시연 영상에 동작 메타데이터와 제작자 정보를 제공합니다
Unofficial, searchable Orangetheory Fitness exercise demos with movement metadata and creator attribution.
스포츠·피트니스JavaScript · PythonGitHub @vdoshi96온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Searchable, filterable directory of 778 Orangetheory-style floor exercises with 1,400+ creator demo videos (unofficial fan project).
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Live: o-tf-exercises.vercel.app
In an Orangetheory class the coach calls out a move like "Y-Bell cross catch to shoulder press" and you have about ten seconds to work out what it means. This site is a searchable directory built for that moment. It pulls the short demo videos that OTF coaches post on Instagram and TikTok and organizes them into 778 exercises with 1,405 demo videos that you can search and filter. It also has a separate library of 515 coaching resources (655 videos) on technique, class delivery, and programming. It works on a phone mid-class and needs no sign-in.
Disclaimer: Unofficial fan directory — not affiliated with Orangetheory Fitness. Videos belong to their creators. Orangetheory, OTF, and related logos are trademarks of their respective owners.
A native SwiftUI companion app with the same catalog and offline search is in vdoshi96/OTf-exercises-ios.
| Directory (desktop) | Exercise detail | Mobile |
|---|---|---|
creator feeds ──► ingestion ──► keyword enrichment ──► reviewed curation ──► static JSON
(IG, TikTok) yt-dlp / scripts/enrich_local.py data/catalog-curation.json src/data/*.json
instaloader
yt-dlp scans TikTok and instaloader plus a browser capture
scan Instagram. Both collect post metadata (IDs, captions, timestamps) for
the tracked creators. scripts/refresh_incremental.py is incremental and
fails closed: if a scan is rate-limited or incomplete, it changes nothing.scripts/enrich_local.py reads each caption and applies
keyword and pattern rules to extract a name, category, muscles, equipment,
and movement type. Re-running it over the 1,055 enrichment records that
have no curation override reproduces every one exactly, so this rule-based
pass generated the published metadata. scripts/enrich_metadata.py is a
second version of this step that sends captions to Claude Haiku 4.5. It is
in the repo but was not used to build the current catalog.data/catalog-curation.json: 778 exercise records and 2,104 video-level
decisions (exercise, coaching, or excluded, each with a reason).
Unresolved candidates wait in data/catalog-review-queue.json until
someone makes a decision. Integrity checks confirm that the catalog, the
ledger, and the thumbnails agree before every build.The app was built iteratively with AI coding agents (Cursor and Codex). Specs,
plans, audits, and QA evidence for each change are in docs/.
/api/directory.main) with Vercel Web Analytics.
Route-aware CSP, anti-framing, and privacy headers.npm install
npm run dev # http://localhost:3000
Requires Node 22.18 or newer.
npm test # data, docs, directory, security, thumbnail, catalog suites
npm run lint
npm run typecheck
npm run build # also runs docs parity + catalog integrity first
# Browser QA against a running production build
npx next start -p 3013 &
BASE_URL=http://127.0.0.1:3013 npm run test:redesign # 24 screen/viewport checks + axe
BASE_URL=http://127.0.0.1:3013 npm run test:e2e # Chromium + WebKit smoke
npm run refresh # dry run: checks source completeness and candidate totals, writes nothing
npm run refresh:apply # applies the reviewed changes, backfills thumbnails, runs integrity checks
refresh:apply holds a single repository lock for the whole run. It records
progress in data/refresh-transaction.json so it can recover if it crashes
partway through writing several files. For thumbnail recovery details, see
the thumbnail pipeline. For release steps, see
the hosting guide.
scripts/ ingestion, enrichment, refresh workflow, thumbnails, integrity checks
data/ curation ledger, review queue, refresh state and provenance
src/app/ directory, exercise + coaching detail, privacy, API route
src/lib/ directory filtering, URL query contract, Fuse.js search
src/data/ exercises.json (778), coaching.json (515), legacy route ledger
tests/ node:test + unittest suites, Playwright browser QA
docs/ design system, plans, audits, QA evidence, screenshots
See DESIGN.md for the design system and PRODUCT.md for product intent.
Every project Markdown file has a generated HTML copy next to it. After you
edit any docs, run npm run docs:generate. npm run docs:check runs before
every build and fails if an HTML copy is missing or out of date.