Artist FC
Artist FC의 경기 점수표·일정·선수 통계
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Marathon training leaderboard for our running crew
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A mobile-first marathon-training leaderboard for a small group of friends. It's a static site with no build step: plain HTML, CSS, and JS. It's hosted free on GitHub Pages. Runners type in their runs, which are saved to a shared Google Sheet.
Live site: https://nastiemastie.github.io/longrunclub/
index.html styles.css app.js ← the app
sample.js ← demo data generator + fallback config
data/runs.json ← your group: runners, race date, plan, shared log URL
scripts/shared-log.gs ← Google Apps Script that turns a Sheet into the shared run log
scripts/strava_sync.py ← optional, for later: pulls runs from a Strava club
.github/workflows/sync.yml ← optional Strava sync (off by default)
Double-click index.html. When the page is opened from disk, the browser blocks reading data/runs.json, so it falls back to the built-in sample data. That's fine for poking around. To see your real runs.json, serve the folder with any static server, or just push it to GitHub Pages (below).
Edit data/runs.json:
runners: id, name, bib number, and color. If you add a runner, add their id to RUNNERS in scripts/shared-log.gs too.race.date: your marathon date (YYYY-MM-DD).plan: the training-plan targets used by the readiness meter. Defaults to 8 base weeks plus an 18-week block (15 build + 3 taper), 26 weeks in all, building to 40 mi/week and a 20-mile long run. The plan start is derived from the race date minus baseWeeks + weeks, so changing either moves the start. Keep sample.js's DEFAULT_CONFIG.plan in step — it is the fallback when runs.json can't be read.sharedLog.url: the Google Sheet web-app URL for typed-in runs (see "Shared run log" below).Sample data shows only while there are no real runs. The first logged run replaces it.
baseWeeks + weeks.
After a run, tap Log a run and enter miles, time, and date. Runs are saved to a Google Sheet you own, so everyone sees them instantly. It's free and nobody needs an account. Past runs can be entered the same way by picking an earlier date.
One-time setup:
scripts/shared-log.gs, and click Save./exec) into "sharedLog": { "url": "..." } in data/runs.json.Runs appear in the sheet's Runs tab, where you can fix typos or delete rows. Anyone with the site link can add runs, so keep the link within the group.
longrunclub and make it Public. Free Pages needs a public repo, so see the privacy note below.git init
git add .
git commit -m "Long Run Club v1"
git branch -M main
git remote add origin https://github.com/YOUR-USERNAME/longrunclub.git
git push -u origin main
main and / (root), then Save.https://YOUR-USERNAME.github.io/longrunclub/. Text that link to your friends.Privacy: a public repo means anyone who finds the URL or repo can see names and mileage. Use first names only. A private repo with Pages needs GitHub Pro.
Not in use right now. If the group ever moves to Strava, follow these steps, then uncomment the schedule lines in .github/workflows/sync.yml to sync hourly. Also add each runner's Strava display name as "strava": "First L." in data/runs.json.
Create a club at strava.com (Groups → Clubs → Create a Club), make it Running, and invite your friends. Everyone has to be a member.
Why a club? Strava's November 2024 API rules only let an app show a person's data to that person. New Strava API apps are also limited to one athlete until Strava approves more. The club feed sidesteps both: it's data members already share with each other, and it only needs your login. Trade-off: the feed has no dates, so each run is dated when the hourly sync first sees it.
localhost.https://www.strava.com/oauth/authorize?client_id=YOUR_ID&response_type=code&redirect_uri=http://localhost&approval_prompt=force&scope=read
Click Authorize. The page that follows won't load, which is expected. Copy the code=... value from the address bar.curl.exe -X POST https://www.strava.com/oauth/token -F client_id=YOUR_ID -F client_secret=YOUR_SECRET -F code=THE_CODE -F grant_type=authorization_code
Copy refresh_token from the response.strava.com/clubs/123456.In the repo, go to Settings → Secrets and variables → Actions → New repository secret, and add:
| Secret | Value |
|---|---|
STRAVA_CLIENT_ID | from step 3 |
STRAVA_CLIENT_SECRET | from step 3 |
STRAVA_REFRESH_TOKEN | from step 4 |
STRAVA_CLUB_ID | from step 5 |
GH_PAT (recommended) | A fine-grained token for this repo only, with Secrets: Read and write. If Strava ever rotates the refresh token, the sync uses this to save the new one. |
Under the Variables tab, optionally add TZ_OFFSET_HOURS (e.g. -5 for US Central standard time) so run dates match your local day.
Go to Actions → Sync Strava runs → Run workflow. The first run marks the club's existing feed as already seen, so old runs aren't all stamped as today. After that, new runs appear within the hour, and Pages redeploys automatically.
The shared run log keeps working alongside Strava. If a runner has Strava linked, the Log a run form reminds them to only log runs Strava missed, so nothing counts twice.
T × (26.2 / D)^1.07, using your best three 3+ mile runs from the last 6 weeks that you ticked as a hard effort. It uses 1.07 rather than the classic 1.06, because Vickers & Vertosick 2016 found 1.06 predicts marathon times that are too fast.