Strautomator
Strava 활동을 자동화해 주는 Strautomator는 IFTTT와 비슷하지만 Strava 전용이다
Peak는 멈춘 순간을 해제해 새로운 기록을 향해 올려주고, 주간 볼륨·AI 식사 스캔·수면 점수를 무료 오프라인으로 제공합니다
Peak flags a lift the moment it stops progressing, deloads it, and walks you back up to a new PR. Weekly volume vs MEV/MRV, AI meal scanning, sleep scores. Free, offline, no account.
스포츠·피트니스JavaScript · CSSGitHub @Tripod110온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Personal fitness PWA: calorie tracking with AI meal scanning, workout log with plateau detection, sleep scores, smart grocery lists
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Your lifts stall and no app tells you. Peak does — and it tells you what to do next.
Most training apps are logbooks. They record what you lifted and draw you a nice line
chart, and it's entirely on you to notice that the line stopped going up four weeks ago.
Peak watches for that and says something.
Plateau detection. Peak tracks estimated 1RM per exercise. When a lift hasn't beaten
its own best in 3+ sessions and 21+ days, it gets flagged on the Train tab by name:README 전문 보기 ↗Your lifts stall and no app tells you. Peak does — and it tells you what to do next.
Live app: https://tripod110.github.io/peak/
Most training apps are logbooks. They record what you lifted and draw you a nice line chart, and it's entirely on you to notice that the line stopped going up four weeks ago. Peak watches for that and says something.
Plateau detection. Peak tracks estimated 1RM per exercise. When a lift hasn't beaten its own best in 3+ sessions and 21+ days, it gets flagged on the Train tab by name:
⚠ Incline Bench Press — no PR in 4 sessions (28 days) Stalled — deload to 135 lb × 8, then add 5 lb each session you complete until you pass 155 lb.
And then it walks you back up. The deload isn't a suggestion you have to remember — your next session is pre-filled at the reduced weight, and every session you complete adds the increment back until you clear your old best. Peak deloads once, from the top only. While you're rebuilding it says "climbing back" instead of re-flagging you, so you never get stuck on a staircase down.
It also tells you why you stalled. If the stalled lift's primary muscle is below its effective weekly volume range, the alert says so. Peak maps every logged exercise to the muscles it trains (secondary movers count half) and tracks weekly sets against evidence-based MEV/MRV landmarks — so "no PR in 4 weeks" comes with "and you've only hit 6 sets of chest a week" attached.
Progression is automatic the rest of the time, too. Hit your prescription → next session is pre-filled heavier. Fall short → repeat the weight and chase the missing reps. Bodyweight work adds reps instead. You don't program; you just show up and beat the number on the screen.
Stalling is rarely only a training problem, so Peak tracks the inputs that feed a lift:
Sets are pre-filled from your plan, so a working set is one tap. Per-set "beat last time" hints, a rest timer that auto-starts and scales per lift, live PR toasts the moment you clear one. Warmup, failure, and drop sets are tagged and excluded from volume, PR, and progression math. Dumbbell and single-arm lifts log per hand; volume counts both sides.
And it tells you what to load. Not just for barbells — the leg press, the hack squat and the T-bar all take plates and all take them differently, so Peak models each: bar weight subtracted where there's a bar, both pegs where there are two, one post where there's one. It draws the actual plates, follows the next set you haven't ticked (so a warmup ramp is right on every set), updates as you type, and tells you when a number can't be loaded exactly. Guessed wrong for your gym? Tap it and correct it once.
Eleven built-in splits — Full Body ×2 and ×3, Upper/Lower, three flavours of Push/Pull/Legs, Arnold, a body-part split, big-lifts-only, and a dumbbells-only routine for training at home — with the next day queued automatically.
All of them are starting points. Add or remove exercises, reorder them, change the sets and reps, rename days, add or delete whole days, or switch splits entirely. The first edit forks the built-in into your own copy, so the standard version is always there to reset back to and nothing you've logged is touched. Pick from a 123-exercise library, searchable and filtered by muscle, or type in whatever your gym calls it.
The longer you use Peak, the more of your plan it can fix for you — all of it read from sessions you already logged, with nothing to switch on:
+ Add Cable Fly to Push? You've added it yourself in 4 of your last 5 Push sessions.
≠ Bench Press: plan says 4 sets, you do 5. Every one of your last 5 Push sessions logged exactly 5 working sets.
It also offers to drop a lift that's been in the plan for five sessions without a single set logged, and to add a specific exercise when your routine as written can't reach a muscle's effective weekly volume. Each is one tap to accept, one to dismiss for good, and never more than two on screen at once.
All data lives in your browser's local storage — nothing is uploaded anywhere. There are two optional network calls, both off until you turn them on:
A Content-Security-Policy names those hosts and nothing else, so there is nowhere else for anything to go.
Your API key is stored on this device in plain localStorage, and Peak says so in Settings
rather than implying otherwise — it can't be meaningfully encrypted in a client-side app,
because whatever decrypts it ships to the same device. What Peak does instead is keep it from
leaking: it is stripped from exported backups, never written back into the Settings field
(masked preview + Replace/Remove), and the CSP blocks sending it anywhere but Google. If that
isn't good enough for you, remove the key in Settings — everything except meal scanning works
without one.
Because everything is local, clearing your browser data will erase your training history. Export a backup from Settings periodically.
Only restore backups you made yourself. A backup is the one file that writes directly into Peak's storage, so it is treated as untrusted input: every value is re-validated on import, anything Peak didn't write is dropped, and the restore tells you how many entries it ignored. See D-17.
Peak's training features work with no setup. Meal scanning needs a free Google key:
Google retires models on its own schedule, so Peak doesn't rely on a model id baked into its source. The picker is filled from what your key can actually run, and if a model disappears mid-scan Peak finds a replacement and retries rather than showing you Google's advice to "update your code."
Vanilla HTML/CSS/JS, zero dependencies, zero build step. Installable PWA with offline support via a service worker. Charts are hand-rolled inline SVG.
| CHANGELOG.md | What shipped in every release, traceable to its commit |
| ROADMAP.md | Where this is going, with the gates that decide whether it keeps going |
| DECISIONS.md | Why it's built this way — and the three decisions still open |
| AUDIT.md | The 2026-07 UX audit: 30 findings, each traced to its fix and its proof |
| SHIPPING.md | Release runbook — pre-flight checks, the push, rollback |
| PAYMENTS.md | Getting Peak Pro sellable: Stripe setup and what blocks it |
| worker/README.md | The Worker behind meal-scan proxying and push reminders |
| worker/API.md | The Worker's API contract — /scan as built, plus what's planned |
Current release: v40 (see CHANGELOG.md). One open verification item — the real-device pass in SHIPPING.md has never been run, and v30's ergonomics changes, and v37's whole one-exercise-at-a-time session view, are exactly what a desktop browser cannot verify.
Releasing? Never hand-edit version strings — one version lives in 22 places:
node tools/release.mjs --check