Loadout Waypoints
Overview
Loadout Waypoints is a workout plan manager — build multi-day training plans, subscribe to plans other people have published, and run through a workout with a guided, step-by-step execution mode that remembers your last reps/weight/duration for every exercise. It's for anyone who wants their programming, progress history, and strength charts in one place instead of spreadsheets or notes.
You can use it as a hosted subscription (we run it for you — updates, backups, and uptime handled) or self-host it yourself; the underlying project is open source under the Elastic License 2.0.
Getting started
Hosted: sign up from the Loadout Waypoints product page on allthewaypoints.com. No install required — log in and start building a plan.
Self-hosted: Docker Compose only — one self-contained file, nothing else to install first. Save the
following as docker-compose.yml in a new directory:
services:
app:
image: ghcr.io/j5guy/loadoutwaypoints:latest
container_name: loadoutwaypoints-app
pull_policy: always
restart: unless-stopped
environment:
PORT: "5556"
WEB_FQDN: localhost
TZ: ""
AUTH_MODE: local
ADMIN_USERNAME: admin
ADMIN_PASSWORD: ""
ldapURL: ""
ldapBindDN: ""
ldapBindPW: ""
ldapSearchBase: ""
ldapSearchFilter: "(sAMAccountName={{username}})"
mongoHost: mongo
mongoPort: "27017"
mongoDBName: loadoutwaypoints
mongoUser: ""
mongoPass: ""
LICENSE_SERVER_URL: ""
LICENSE_OFFLINE_PUBLIC_KEY_JWK: ""
ports:
- "5556:5556"
depends_on:
mongo:
condition: service_healthy
volumes:
- uploads-data:/app/public/uploads
- logs-data:/app/logs
- secrets-data:/app/.secrets
networks:
- default
mongo:
image: mongo:7
container_name: loadoutwaypoints-mongo
restart: unless-stopped
volumes:
- mongo-data:/data/db
healthcheck:
test: ["CMD-SHELL", "mongosh --quiet --eval \"db.adminCommand('ping')\" || mongo --quiet --eval \"db.adminCommand('ping')\""]
interval: 5s
timeout: 5s
retries: 20
networks:
- default
volumes:
mongo-data:
uploads-data:
logs-data:
secrets-data:
networks:
default:
Then start it:
docker compose up -d && docker compose logs app
Every setting in that file already has a working default. Sign in at /auth/login as admin / admin
(set ADMIN_PASSWORD yourself in the file first if you'd rather pick your own from the start) — you'll
be required to set a real password before doing anything else, so there's no one-time secret to catch
from the logs. The app serves plain HTTP; put a reverse proxy (Traefik, Caddy, nginx, whatever you
already run) in front of it if you want HTTPS. To change anything — LDAP auth, an external MongoDB, a
license offline token — edit the values directly in the file; every variable it accepts is listed above.
Updating a self-hosted install:
docker compose up -d
Same command — pull_policy: always means this always checks the registry for a newer :latest
image first, rather than reusing whatever was pulled before.
Features
- Plan builder — multi-day workout plans with reps, weight, duration, and rest configurable per exercise, plus superset grouping, tags, category, difficulty, and estimated duration. An exercise can track reps and a timed hold at once, and can optionally track left/right sides as independent entries. Create a brand-new exercise inline from the plan builder's exercise picker without losing your place.
- Guided execution — a step-by-step "run the workout" view that walks through each day's exercises in order and logs a completed session when you finish. Add an ad-hoc extra set or superset round on the fly (optionally saved back to the plan permanently), and turn on "Auto-Advance" to move to the next exercise automatically once its last set is checked off. The plan's owner or an admin can also edit a day's exercises mid-workout without losing progress on the rest.
- Per-exercise history — your last reps/weight/duration for each exercise is tracked (per rep count, so different rep/weight combinations of the same exercise save independently) and surfaced while building and executing plans, so progressive overload is one glance away.
- Strength progress charts — every completed set is logged over time, so each exercise's detail page shows a trend chart, not just the last value.
- Exercise library — built-in and user-submitted exercises with muscle-group diagrams, equipment, instructions, and image uploads.
- Subscriptions & dashboard — subscribe to public plans and see them alongside recently-added ones, each with its last-completed date.
- Profile & activity — session stats, your favorite plan, recent sessions, and a GitHub-style activity heatmap.
- Admin panel — manage users and the exercise library (self-hosted only). See Admin area for the full rundown.
- Flexible auth — local accounts or an existing LDAP/Active Directory server (self-hosted only).
FAQ / Troubleshooting
Can I switch from hosted to self-hosted, or the other way around? Not automatically today — reach out and we can help you move your data.
I forgot my admin password on a self-hosted install.
There's no self-service reset for local accounts yet. If another admin account exists, have them reset
it from /admin/users. Otherwise, generate a new bcrypt hash from inside the app container and write it
straight to Mongo:
docker compose exec app node -e "console.log(require('bcrypt').hashSync('a-temporary-password', 12))"
docker compose exec mongo mongosh loadoutwaypoints --eval '
db.users.updateOne(
{ username: "admin" },
{ $set: { passwordHash: "PASTE_THE_HASH_HERE", mustChangePassword: true } }
)
'
Log in with the temporary password — mustChangePassword forces you to pick a real one immediately.
How do I completely remove a self-hosted install?
docker compose down -v
The -v flag also removes the named volumes (Mongo data, uploads, logs, the auto-generated session
secret/admin password) — leave it off to stop the app but keep your data for a later
docker compose up -d.
Where do I report a bug or request a feature? Email [email protected].
Learn more
- Using the App — a full walkthrough of every feature once you're logged in.
- Architecture — tech stack, boot sequence, and how a request flows through the app.
- Data Model — every database model and how they relate.
- Auth & Sessions — local vs. LDAP login, sessions, forced password change.
- Licensing System — how the self-hosted license gate, trials, and offline tokens work.
- CSV Import & Export — the bulk-data pipeline behind the admin and self-service backup screens.
- Frontend — what each client-side script does.