Dugout Value
투구·타격·예측 연구와 선수·계약·트레이드 가치를 비교하는 도구 제공
현재 체력에 맞춰 주간 마라톤·하프마라톤 계획을 인쇄 가능하게 만들고, 무료·비공개·회원가입 없이 이용
Build a printable, week-by-week marathon or half-marathon plan from your current fitness. Free, private, no sign-up.
스포츠·피트니스HTML · PythonGitHub @evansmith1377온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Printable, week-numbered marathon training calendar. One self-contained HTML page: readiness-based plan, optional pace guidance, US/metric, landscape or portrait print. No dependencies, no tracking.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A free, printable training planner for the marathon and half marathon. Enter your current mileage and how you like to train, and it builds a week-by-week, readiness-based plan you can print, export to your calendar, and tick off as you go.
Live site: https://evansmith1377.github.io/physical-training-planner/
The page is a single index.html with no build step, no dependencies, and no network requests.
.ics file with every workout as an all-day event, for Google Calendar, Apple Calendar or Outlook. Re-importing the same plan doesn't create duplicates; if you change the plan, delete the old events first.All distances are calculated in miles and converted for display.
| Rule | Value |
|---|---|
| Weekly distance inputs | Usual 1–99 mi (2–160 km); peak 10–99 mi (16–160 km) |
| Low volume | Under 15 mi (24 km) a week: run/walk and no tempo or race-effort work. When a week can't give every run day 2 mi, the spare run days become brisk walks |
| Phase 1 (Stabilize) | 3 weeks at your current distance and long run (long run up to 55% of the week) |
| Weekly build | +8% per build week (min 1.5 mi, max 3 mi), up to your peak. From a tiny base (under 6 mi) the step is at most 25% of the week |
| Long run | +1 mi per build week at most and ≤ 50% of the week. Once at the peak, it alternates between the peak and about 85% of it. Capped at 20 mi (marathon), 14 mi (half), 16 mi (durability) |
| Cutback weeks | About 25% less distance and about 28% shorter long run, every 3rd or 4th week |
| Race-specific block | Marathon: up to 16 weeks including taper (warning below 14). Half: up to 12 (warning below 10) |
| Taper | Marathon, 3 weeks: 80% → 65% of peak → race week (2 weeks: 72% → race week). Half, 2 weeks: 75% → race week (1 week: race week only) |
| Quality | Strides in Phase 1 and cutbacks; progressive tempo in Phase 2; alternating tempo and race-effort sessions in Phase 3 |
| Minimum length | Marathon 10 weeks, half 8, durability 6 |
When inputs conflict, the page shows a warning instead of silently adjusting. Examples: a plan too short or too long, a rest day on the long-run day, a peak below your current mileage, weekday runs longer than the long run (high volume on few days), a taper that doesn't fit the goal, out-of-range values from a shared link, a race date that has passed, or a projected base that misses the readiness gate.
Paces use the Daniels/Gilbert race-equivalency equations: easy covers about 62–70% of aerobic capacity and tempo about 88%. The race-effort range is the predicted pace plus a buffer of 15 s/mi for the marathon or 6 s/mi for the half. These formulas tend to be optimistic for first marathons, and the page says so.
The site needs nothing to run. The tests use Python (CI runs 3.14; 3.12 or newer works locally), pytest and Playwright (with axe-core for accessibility):
pip install -r requirements-dev.txt
python -m playwright install chromium
pytest -q
The suite serves the page over local HTTP, so the Content Security Policy applies, and fails on any console error or warning, and on any Python warning. It covers layout from 320 to 1280 px, units, shared links (including hostile ones), each goal, dates and calendar export, checkmarks, print sizes, plan invariants across many settings, and serious accessibility violations.
| Script | Purpose |
|---|---|
python scripts/csp_hash.py | Update the CSP hash after editing the inline <script> (--check is used in CI) |
python scripts/screenshots.py | Regenerate assets/og-image.png and the README screenshots |
CI and deploy: every pull request runs the tests (.github/workflows/ci.yml). Each merge to main runs them again and deploys index.html and assets/ to GitHub Pages (.github/workflows/deploy.yml). Actions are pinned to commit SHAs, and Dependabot proposes one grouped update PR per month for the actions and one for the test dependencies, skipping releases less than a week old. One-time setup: Settings → Pages → Build and deployment → Source: GitHub Actions.
Branch protection: .github/rulesets/main.json is a repository ruleset for main: changes land only through a squash-merged pull request with the test check passing on an up-to-date branch and all review threads resolved, and the branch can't be force-pushed or deleted. GitHub doesn't apply it automatically. Import it once under Settings → Rules → Rulesets → New ruleset → Import a ruleset.
To host the page elsewhere, copy index.html and the assets/ folder to any static host. If the address changes, update the canonical and og: URLs in index.html.
See CONTRIBUTING.md to propose changes, and CLAUDE.md for the code map and conventions.
Current versions of Chrome, Edge, Firefox, and Safari. The ⓘ info bubbles use the native Popover API, with a script fallback for older browsers.
General fitness guidance only. This is not medical advice, and it does not replace an individualized plan from a coach, clinician, or sports dietitian.
Released into the public domain under the Unlicense.