Skip to content
RjectedPublic

About

Bloomberg-terminal-style training dashboard for Hevy lifters: web app, Android & iOS apps, home-screen widgets. Self-hostable (Cloudflare or Docker).

Topics

Resources

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

112 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IRONTERM

A Bloomberg-terminal for your lifting. A web app, Android and iOS apps, and home-screen widgets for people who log their training in Hevy, come from Strong, or want to log in Ironterm itself.

Web Android iOS License: MIT

Ironterm web app tour: dashboard, body map, program, gym mode, lifts, insights, calendar

Unofficial. With Hevy, Ironterm uses Hevy's public API with your own API key. It is not affiliated with or endorsed by Hevy. Ironterm has no backend of its own: you run the server, or use the phone apps on their own.

What it does

  • Runs your program from your real log. It includes ~60 templates: GZCLP and the GZCL family, 5/3/1 variants, nSuns, Sheiko, Candito, Calgary Barbell, SBS, Smolov, and more. Your Hevy history is replayed through the program's rules, so the weights pick up where you actually are. You can push the next sessions to Hevy as routines, or log them in the app's own gym mode and save the workout to Hevy.
  • The year at a glance. A GitHub-style contribution graph, streaks, volume, e1RM trends, PR walls, and stalls caught early.
  • Body map. Per-muscle weekly load and recovery from a detailed anatomical figure (male / female), with overlaps where a muscle is hit before it has recovered.
  • Nerd stuff. e1RM formula shootout, INOL / Prilepin, lift ratios, strength projections, landmarks, sleep and recovery vs. performance (WHOOP), and program what-ifs.
  • Life happens. A calendar, trips that pause your program instead of failing it, hotel-gym sessions, and a re-entry ramp after a break.
  • Notes on workouts and exercises, synced back to Hevy (or kept in Ironterm without it).
  • Not tied to Hevy. Import a full Strong export, or start an empty log and record sessions in gym mode: Ironterm then keeps the workouts itself, and every screen works the same.
  • Native Android and iOS apps. Full apps rather than web wrappers:
    • Gym mode for logging at the bar: big steppers, a plate loader, and a rest timer that keeps running on the lock screen (an Android notification, an iOS Live Activity).
    • Works offline. A session survives a basement gym and a killed app, and syncs when you're back online.
    • Every other screen too: lifts, history, calendar, program, body map, insights and stats.
  • Friends, without a central database. Each person's server is their identity: add friends by handle or server URL, choose per friend what they see (no weights by default), react and comment, and compare lifts. Servers sign every request to each other; an optional directory only maps handles to servers. See docs/social.
  • Widgets. Activity graph, next workout, this week, lifts, recovery and the current set, each in several sizes. Lock-screen widgets on iOS.

Screens

Dashboard Dashboard on a phone Gym mode on a phone
Body map Insights
Android · gym mode Android · rest on the home screen iOS · gym mode iOS · Live Activity
Android gym mode with the rest timer Android widgets during rest iOS gym mode iOS rest timer on the lock screen

More: web · Android (every widget at every size) · iOS.

How it fits together

 Hevy ──API──▶ server (web/) ──/api/snapshot──▶ Android / iOS apps + widgets
   ▲            Cloudflare Workers + D1          (or Direct mode: phone ↔ Hevy API,
   └─push/notes─ or Node + SQLite (Docker)        no server at all)
 Strong CSV ──import──▶ ┘  ▲ gym mode logs here when there's no Hevy key
Directory
web/ The app: a Preact UI plus an API. Runs on Cloudflare Workers + D1 or anywhere with Docker / Node + SQLite (self-hosting).
android/ Native Kotlin / Compose app with Glance widgets. Updates itself over the air from GitHub Releases.
ios/ Native SwiftUI app with WidgetKit widgets, including the lock screen.
web/cli/ ironterm-graph: a terminal CLI that prints your contribution graph. No dependencies beyond Node.
docs/api/ The small JSON API the apps read.
docs/SECURITY.md Threat model and how to report a vulnerability.

Get started

1. Pick where your workouts come from. Any one of:

  • Hevy: an API key from Settings → Developer (needs Hevy Pro). Hevy stays your log.
  • Strong: export your data (Strong → Settings → Export Strong Data), then import the CSV in SETUP → IMPORT. Ironterm becomes your log.
  • Nothing yet: press START FRESH (NO HEVY) in SETUP and log sessions in GYM mode.

See Where the workouts come from.

2. Run the web app.

cd web && pnpm install && pnpm dev     # http://localhost:5173, demo data until you add a key or import

Then host it on one of these:

3. Phones. In the web app go to SETUP → APPS & WIDGETS → CREATE, then scan the QR code from the app's SETUP. The apps also have a Direct mode that needs nothing but your Hevy API key (graph, streaks and lifts; no program or recovery).

  • Android: install the APK from Releases. After that it updates itself.
  • iOS: build with Xcode. See ios/README.md; a free Apple ID works.

CLI

cd web && pnpm install
export HEVY_API_KEY="your-api-key"
pnpm cli                    # last 52 weeks
pnpm cli --weeks 26 --ascii

Development

Every directory builds on its own, and CI runs each one:

Check
web (and the CLI) pnpm typecheck && pnpm test && pnpm build:node (and the Docker image)
android ./gradlew testDebugUnitTest assembleDebug (unit, network and screenshot tests)
ios xcodebuild -project Ironterm.xcodeproj -scheme Ironterm test

Credits

The male anatomy art is by Ryan Graves (CC BY 4.0), via muscle_mapper. The female figure outline is from react-native-body-highlighter (MIT). Program designs belong to their authors: Cody Lefever (GZCL), Jim Wendler, and others, as credited in each template.

License

MIT

About

Bloomberg-terminal-style training dashboard for Hevy lifters: web app, Android & iOS apps, home-screen widgets. Self-hostable (Cloudflare or Docker).

Topics

Resources

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages