Hevy is an excellent app for logging workouts, but the interface is a bit limited for designing multi-week periodized programs. This app fills that gap with a spreadsheet-like interface for building training programs, then pushes them to Hevy as routine folders so you can execute them from the Hevy app.
- Program Builder — Grid-based editor for designing training blocks, mesocycles (weeks), and microcycles (training days) with exercises, sets, reps, and weights
- Percentage-Based Programming — Enter weights as percentages of your training max (e.g., "5x3 @ 85%") and the app calculates the actual weight
- Training Max Management — Set training maxes manually or auto-import estimated 1RMs from your Hevy workout history using Epley/Brzycki formulas
- Hevy Sync — Push your program to Hevy as a routine folder with individual routines for each training day. Update existing synced programs without creating duplicates
- Unit Toggle — Switch between kg and lbs display. All weights are stored in kg internally to match the Hevy API
- Offline-First — All program data is stored locally in SQLite. Internet is only needed for syncing to Hevy and importing exercise data
This project can be cloned, built, and run in its current state. However, it is still under active development.
Major bugs are currently being addressed, and significant changes to the codebase are expected in the near future. Expect instability and breaking changes.
# Run in development
npm ci
npm run tauri dev
- Connect — Enter your Hevy API key (requires Hevy Pro). The app validates it and fetches your exercise library.
- Build — Create a program, add training blocks and weeks, then fill in exercises and set/rep schemes using the grid editor. Use the exercise autocomplete to pick from Hevy's full exercise library.
- Configure — Set training maxes for your main lifts. Use percentages in the grid and watch weights update automatically when you adjust a TM.
- Sync — Preview what will be sent to Hevy, then push. The app creates a routine folder and individual routines for each training day.
- Train — Open Hevy on your phone, find your routines in the synced folder, and start logging.
- Iterate — Edit your program locally, then re-sync to update the routines in Hevy.
Programs follow standard periodization hierarchy:
Program (e.g., "16-Week Meet Prep")
└── Training Block (e.g., "Hypertrophy", "Strength", "Peaking")
└── Mesocycle / Week (e.g., "Week 1", "Week 2", "Deload")
└── Microcycle / Day (e.g., "Day 1 - Upper", "Day 2 - Lower")
└── Exercise (e.g., "Squat (Barbell)")
└── Sets (e.g., 3x5 @ 85%, 4x8-12 @ RPE 8)
Each microcycle maps to one Hevy routine when synced.
- Framework: Tauri v2 (Rust backend + React frontend)
- Frontend: React 19, TypeScript, AG Grid, Zustand, Tailwind CSS v4
- Storage: SQLite (via rusqlite)
- API Key Security: OS keychain (via
keyringcrate) - Hevy API: REST, requires Pro subscription
- Subscribe to Hevy Pro
- Go to hevy.com/settings?developer
- Copy your API key
- Paste it into the app on first launch
MIT