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.
UCG Routine Planner: plan WAG, MAG and T&T routines and start values
翻訳待ち
Loading the full README.
Read the full README ↗One planner for every UCG discipline and level: WAG (Xcel Silver, Gold, Platinum, Diamond, Sapphire, UCG Infinity, Masters), MAG (Developmental, Intermediate, Advanced, Masters) and T&T (New, Intermediate and High Flyers). Gymnasts and coaches sign in with Google (or try it without signing in, which saves nothing), add athletes, add the levels each athlete competes, build routines, and export filled-in UCG worksheets and competition cards.
Live site: https://routines.unitedclubgymnastics.org/ (custom domain on GitHub Pages: a CNAME for routines in the WordPress.com DNS for unitedclubgymnastics.org; the old united-club-gymnastics.github.io/ucg-routine-planner/ address redirects there. The domain is also in Firebase Authentication → Authorized domains.)
Grew out of the MAG planner (ucg-mag-planner) and Julia Sharpe's UCG Infinity SV Sheets; both are still live and unchanged.
| Piece | Where | Who can change it |
|---|---|---|
| Code and hosting | This repo in the United-Club-Gymnastics GitHub organization, published by GitHub Pages | Organization owners and members with write access |
| Sign-in and saved routines | Firebase project ucg-routine-planners, in the unitedclubgymnastics.org Google Cloud organization | Everyone in [email protected] |
| Rules | UCG rules policies for each discipline | Each discipline's rules team |
Athletes are saved in Firestore at users/{user id}/athletes/{athlete}. Each athlete holds a list of entries, one per level they compete ({ disc, level, decade?, routines, passes, options, vault }). The MAG planner's data (magAthletes) is separate and untouched. Guests who haven't signed in are kept in memory only; if they sign in, their athletes are saved to their account.
Saved data is never dropped on load (js/athlete-doc.js). Each athlete carries schemaVersion (now 2), and migrateAthlete brings older shapes up to date in memory; nothing is written until the coach's next edit. An entry with a discipline or level this version doesn't know is kept aside, hidden (the editor says so), and saved back unchanged; an athlete saved by a newer schemaVersion is shown but not saved over. A saved vault the level no longer offers keeps its ID and is flagged instead of showing an empty box. Saved rows keep their values, so when the Code changes a listed skill's value or group, the row shows Value changed and the event offers Update values (valueChange in js/model.js); entries whose values came from the skill lists carry catalog (the skill bundle's commit, set by the build). Fixtures of old shapes: tests/fixtures/athletes/.
| File | What it does |
|---|---|
js/model.js | Disciplines, levels and events; one scoreEvent / scoreEntry for every level; copying routines between levels |
js/scoring/mag.js | MAG Dev / Int / Adv / Masters |
js/scoring/wag.js | UCG Infinity, Xcel, WAG Masters |
js/scoring/masters.js | Masters age-decade values and vault age bonus (shared by MAG and WAG) |
js/scoring/tt.js | T&T difficulty totals and level requirement checks |
js/data/ | Skill lists, vault tables, Xcel requirements, example routines (most generated, see below) |
js/app.js | The screen: athlete search, levels, routines, skill picker |
js/pdf.js, js/pdf-infinity.js | PDF export |
calibration/ | Judge practice: a front page linking Infinity and MAG practice (their own pages; see "Judge practice") |
calculator/mag/ |
The rules' sources of record are UCG's Google Docs and Sheets (Nate, 2026-10-20). Cite and check these, not PDF or Word copies, which go out of date:
| Rules | Source of record |
|---|---|
| UCG Women's Rules (Xcel levels) | https://docs.google.com/document/d/1FuuEUaLWjk0NTADYSfr2RDprikdjxjcqEdrdHRmIAtg/edit |
| UCG Infinity (Open Scoring Level) Rules | https://docs.google.com/document/d/1Us_lv6CADGZSOZDHEWb5nHzq7Z5XhhIFFwyFnTWlbVA/edit |
| UCG MAG Rules Policy 2026-28 | https://docs.google.com/document/d/1hTJjtE5UNa6bj1nWi37LvoJ3coeobLuD2-TLoO066Us/edit |
| UCG MAG Rules Breakdown (level table) | https://docs.google.com/spreadsheets/d/13lx3jKzxjbMOovUb6ZZNI4FzzsVF6rApsPDvUjCnTps/edit#gid=1498227199 |
| UCG Masters Rules Policy | https://docs.google.com/document/d/1VeRTNv1KVrkCbHEo9r36qbRBxt0Me6VJ66E8jkvck_c/edit |
They open with the UCG account ([email protected]). gym-skill-extract's rules/UCG-*
holds dated text extracts and own-words digests of them (rules/gdoc_text.py refreshes the extracts).
This is the beginning of the README. Read the rest at the original. Read the full README ↗
| The MAG judging calculator (its own page and a stand-alone file; see "MAG judging calculator") |