Feature · Your Journey
The proof lives here
Calisthenics progress is slow. Not slow because you're doing it wrong — slow because the ladder is long. Between the first pull-up and the first front lever there are 12 steps and a lot of steady work. Between an advanced tuck planche and a full planche there are another 8 steps. Every step feels marginal in the moment, and unless you're logging obsessively, the ladder disappears behind you.
Journey is the ladder made visible. Every step you've climbed. Every achievement you've unlocked. Every calibration you've completed. One chronological feed. Newest first, grouped by month, all the way back to your first session.
What lands in the feed
Two kinds of entries, merged into one stream:
- Milestone entries — every step you climb on a universal family (push, pull, squat, hinge, core, mobility) or a picked skill's roadmap. Cards show the movement name, the step number, and the from → to delta. Tap for the full detail sheet.
- Achievement entries — every unlock from the 72-item catalog. Bodyweight ladder milestones (first pull-up, 10 push-ups, 50 dips), hold milestones (30s L-sit, 90s dead hang), skill firsts (first muscle-up, tuck planche, V-sit), consistency streaks (100 workouts, 90-day streak), calibration completions, and 16 elite top-of-ladder crushes.
Cascade bumps roll up cleanly
The app knows which universal families a skill demands. Advanced Tuck Planche implies push step 8 and core step 4 — so passing Advanced Tuck floors those universal families the same session, automatically.
Without any grouping, that would fill your feed with three separate milestone rows for one event: primary + push cascade + core cascade. Journey groups them by parent. The Advanced Tuck Planche card renders once, with an "Also recognized" sub-list underneath showing the cascade bumps as indented rows. You see the full ripple — the fact that crushing planche also validated your push and core baselines — without a wall of three sequential cards.
The grouping was intentional. During the design conversation we considered alternatives (flatten everything as siblings, hide cascades entirely) but landed on cascades-as-sub-list because it preserves the parent event as the point while still showing cross-family transparency. Journey is a receipt, not a log spam.
Historical, forever
Every step you climb gets persistently logged to a table designed to survive app updates, device changes, and rebuilds. Old bumps from before the persistent log shipped are retroactively backfilled with a synthetic entry so your first year of training doesn't disappear.
Movement names are snapshotted at bump time. If the roadmap authoring later renames a step (Forearm Planche → Elbow Planche, for example) your historical entries keep the name the app used when you actually crushed it. You see what you saw then.
The three-segment Stats tab
Journey lives on the Stats tab alongside two siblings:
- Overview — the Athlete Profile hero, consistency heatmap, personal records, weekly recap.
- Journey — the chronological milestone + achievement log.
- Activities — your filterable session history (renamed from "Runs" in v1.40 to match what every other training app calls it).
Journey is the intended default landing spot. But for brand-new users, an empty Journey feels worse than seeing the profile hero and a get-started nudge — so the app smart-defaults to Overview if the feed is empty, and to Journey once you have milestones to look at. You can always tap between the three; the app remembers your last choice for the session.
Why this matters more than a toast
Every calisthenics app fires a "you unlocked X" toast when you crush something. Four seconds, then it's gone. Then you have to open the app three days later to remember whether it happened.
Journey is the receipts layer. It's the difference between a Strava that only shows you your current pace and one that shows you every ride you've ever done. The archive is where identity forms. "I'm the person who crushed Advanced Tuck Planche last spring and Front Lever Tuck the summer before" is a fundamentally different mental frame than "I'm the person who just barely finished today's session."
Especially in calisthenics, where the compound-interest windows are years long, having the archive be visible on the tab you check anyway is what turns slow progress into something you can feel proud of.
Included, free
Journey ships with the free app. No subscription, no paywall, no in-app purchase. Every user gets the persistent log from day one, and the backfill scoops up all your historical bumps automatically.
Frequently asked questions
What lands in the Journey feed?
Two kinds of entries, merged into one chronological stream: milestone entries (every step you climb on a universal family or a picked skill's roadmap) and achievement entries (every unlock from the 72-item catalog — bodyweight ladders, hold milestones, skill firsts, consistency streaks, calibration completions, elite top-of-ladder crushes). Sorted newest first, grouped by month. Scroll back to your first session.
What are cascade bumps and how do they show up?
When you crush a skill step, the app's roadmap knows which universal families the skill demands. Advanced Tuck Planche, for example, implies push step 8 and core step 4 — so passing it floors those universal families automatically. Rather than filling your feed with three separate milestone rows for one event, Journey groups them: the primary milestone (Advanced Tuck Planche) renders as one card with an 'Also recognized' sub-list showing the cascade bumps underneath. You see the full ripple without the noise.
How far back does the Journey feed go?
All the way to your first session. The feed persists across app updates, device changes, and rebuilds — every step you've climbed has been logged, every achievement unlock is retroactively backfilled. If you crushed something 6 months ago, it's still there. This is the receipts layer for calisthenics: real evidence of the ladder you've climbed, not an ephemeral toast that fires once and disappears.
Where does Journey live in the app?
The Stats tab is now three segments: Overview (Athlete Profile, heatmap, PRs), Journey (the chronological log), and Activities (your session history). New users default to Overview because an empty Journey feels worse than seeing the profile hero — once you have milestones in the feed, Journey becomes the natural default landing.
Can I share milestones from the Journey feed?
Achievement unlocks are shareable to Instagram Stories via the existing achievement-share card. Milestone entries surface the same cascade-grouped detail sheet you'd get from a fresh unlock, so you can revisit any historical crush and share it after the fact. The whole log is proof-of-progress that reads back like a training diary — but searchable, deduped, and never lost.