Stronk.app – open-source gym lifts journal

Hey all, didn't want to pay for Strong or Hevy so I started building my own lifts journal app.

It's free and always will be.

https://stronk.app

Source Code (open to contributions). If you find bugs, add it to the issues. If you don't use it now but plan to after I build out the features, please star the project so I know to keep working on it.

https://github.com/alshdavid/stronk

There a lot to do still, gotta add things like;

- Strava/Facebook Sync

- Import/Export

- Charts

- Set type (warmup/drop)

- Timers

- Online backups (right now it's saved to your phone)

- Programmable custom routines using JavaScript (like 5-3-1, progressive overload)

- A suite of default routines

It's a web app because I'm not paying Apple and Google to publish it on the app store.

54 points | by apatheticonion 20 hours ago

13 comments

  • silviogutierrez 19 hours ago
    Full disclosure: I run a competing app [1].

    I think this is great, especially because it's OSS.

    But if you want to really outshine Strong and Heavy, I'd look into "auto progression" of exercises. Too often, people just... log the same thing for years. Some RIR / RPE / linear progression would keep people motivated.

    [1] joyapp.com

    • apatheticonion 19 hours ago
      Hey this is interesting! Thanks for sharing.

      I was thinking of adding in workout templates and maybe even figure out progressive overload or routines like 5-3-1.

      Someone earlier made a reference to another app that lets you write/share scripts that can be used to design custom programs - which is very interesting. Being web based, custom programs could be written in JavaScript and `eval`'d in a sandbox - allowing for a similar experience.

  • cj 19 hours ago
    I'm in the gym 10+ hours a week and still use Apple Notes. My only complaint is Apple Notes becomes buggy when the note gets too long (so I started making a new note for each month of the year).

    Feature request: ability to have custom excericse types. E.g. today I did dumbbell incline press and alternated between neutral and pronated grip. Gotta find a way to log that. Also support for super sets.

    There are a lot of "features" built in to Apple Notes by virtue of being free form / unstructured. And now with LLMs, the appeal of logging things in a structured way is much less.

    I wonder what it would look like to create "Apple notes on steroids" (pun intended) -- log your workout the way you normally do, and at the end of the workout use LLMs to apply structure, see trends, insights, etc. That would be cool.

    • apatheticonion 18 hours ago
      Noted. Good thoughts here.

      As an aside, the coolest benefit I've gotten from gym logging apps is charts. It's interesting to see my session volume, 1RM and heaviest lifts go up over time. It helps me plan my progressive overload schedule and notice when I'm plateauing/have to up the calories.

      Plus it's super rewarding looking at the chart from 4 years ago and seeing how far I've come.

      But you're completely right about notes on finding ways to ergonomically record variation.

  • xtiansimon 7 hours ago
    I could see myself using this. Simple and straight forward, like my own workouts. Lol.

    Was experiencing a few unexpected glitches on iPhone (iOS 18.7.2/Safari) - new workout, once I filled the screen with reps or exercises, I was unable to scroll to add more - history, I hoped I might be able to edit (because I could only add two exercises), but no such luck. - history, three dots don’t open anything/broken link? - exercises, dunno. List is fine, but I did spend some time trying to see if the list items were also links (what is a “banded good morning” anyway?).

    • apatheticonion 7 hours ago
      Ah thanks for finding that. Such a basic bug haha.

      It's happening for me on Chrome on Android as well. I'll fix it in the morning (it's midnight here).

      Also, merry Christmas / happy holidays

  • ffsm8 15 hours ago
    Heh, I've been working on my own take on this since September.

    Already scrapped 3 prototypes as I wasn't happy with the ux.

    First version was purely with indexeddb storage too, and was definitely the easiest. (Simple persistence logic, only few entities)

    I ultimately gave up on that approach because I don't want to do Data entry on my phone.

    So I started with a split template (server) /imported (indexeddb)... But in practice, that's still annoying. I want to be able to access the data across devices, so a third version was born... And now I need proper syncing, which is obviously a significant challenge as it's easy to screw up/hard to make sure it works as intended.

    Biggest reason for my current slump is however that every attempt I made to date with the most important UX - the mid workout tracking - feels annoying to use in practice...

    Not sure where I'm going with this, I'm still trying out various ways so don't have any real suggestions right now

    Other then maybe: the workout template you tease in the workout tab is actually easily implemented if you do it like FitNotes - add a button to the workout exercises for done, and then just provide a bottom to clone a previous exercise (with the bools false)

    • apatheticonion 13 hours ago
      Haha that was an entertaining read, thanks for sharing. This is also my third attempt.

      The first was much like this one with browser storage. There was a bug in Chrome that wiped out the persisted storage of all websites which nuked all of my records

      https://www.bbc.com/news/technology-50809216

      I tried rewriting it in React because it was the new hotness but spent so much time worried about component rendering cycles, hooks, state that just ended up distracting me away from time on the UI and UX. It was fast (like it matters), but ugly.

      As for data sync, I've just added SQLite on the client and going through the painful process of normalizing the records.

      My idea is, users will be able to supply a Turso API key and the app can sync against that, keeping a local copy of the data - eventually consistent.

      I'll probably do something dumb like keep a timestamp of the last change and push/pull data periodically.

      It only works because it's 1 person using the app and no one trains with two phones

  • esperent 19 hours ago
    This looks nice, but IMO the Hevy lifetime membership (around $70 I think) was a great price for a such a polished app.

    It's got a huge library of exercises and more importantly, basic instructions and animations for each. I wouldn't use it to learn the exercises for the first time, but it's the perfect level of information to serve as a reminder for good form during a workout, when I'm doing something that I'm less familiar with.

    If you don't want to or can't pay for it, this looks decent. But in terms of functionality and polish, there's definitely a case of "you get what you pay for" going on here, at least at the present level of development.

    Have you considered adding more data like animations to the exercises database? I did accidentally come across the database of animations that Hevy uses (I forget the name but it should be easy to find of you search for it) . It can be licensed, not sure how expensive it is though, but if this takes off perhaps you could take donations to pay for it?

    • apatheticonion 19 hours ago
      Hevy is honestly great and good value. For something polished and feature complete, you can't go wrong with it.

      I started building this app out initially to see how far I could get in a short space of time. It's still quite bare but it shouldn't be difficult to flesh out from here.

      For me, it's more about the fun of making a working thing and then sharing that with others. If people contribute that would make my year, but it's rewarding enough to know that people are using it.

      I'd like to expand on the exercise details page, but not looking to profit so licensing resources is off the table. Cloud sync is an interesting one because I'm trying to keep this free. I was hoping to offer users the choice of sync solutions (Google Drive, for instance).

      • esperent 17 hours ago
        > I was hoping to offer users the choice of sync solutions (Google Drive, for instance).

        This would be a strong differentiating feature for me. It's something that I feel open source tools should focus on more - data ownership, that is. Save the data in an easy to store/copy format (Sqlite db, for example), and provide as wide a range of backup options as possible. Make sure this is all clearly described in the read me as a hook to get people using it, and also to get other people involved in building it with you.

        EDIT: and btw I love the name Stronk!

        • apatheticonion 16 hours ago
          Haha hey, thanks! I'm dreading renewing the domain but I'm stoked I got it.

          I totally agree about data ownership. It also has the benefit of not needing me to pay for storage hosting, a win-win.

          I actually just integrated SQLite into the client and will add the ability to sync with Turso (free serverless SQLite) via a user supplied API key.

          Might also extend support for self hosted, D1, S3? and so on. Obviously the community can add support for other storage systems as needed

  • tummler 18 hours ago
    This is great. I just need: easy way to track sets/reps, ability to save specific workouts, and charts would be fantastic. I also find the little animations some apps provide to be a helpful reference for form, but that's a nice-to-have.
  • xnx 20 hours ago
  • koakuma-chan 19 hours ago
    Do you come up with which exercises to do on your own? I rely on the app for that.
    • apatheticonion 19 hours ago
      Right now the exercise movements are listed (e.g. shoulder press), which you can add to, but the routines themselves are manually entered.

      I'm going to be adding in workout templates and maybe even auto-workouts (like auto progressive overload or routines like 5-3-1).

      Another commenter mentioned an app that lets people write scripts to program custom routines. That sounds super interesting and a great way to share routines. I'm thinking of writing an engine for custom routines then use that to program some default ones.

      • koakuma-chan 19 hours ago
        Sounds great. I am also tired of paying for Fitbod and it seems to only get worse over the years.
  • smenyp 19 hours ago
    Nice!

    Check out liftosaur as well - comes with a DSL and ability to write programs (pun intended).

  • b450 19 hours ago
    Neat, have you considered linking to exrx or anything for the exercises?
    • apatheticonion 19 hours ago
      Looks like a great source for an exercise list and technique information. I might be able to integrate it via iframe for technique information.

      Not sure it's above board to scrape the site for workouts though - plus I wouldn't want to take away from their ad revenue.

  • freedomben 18 hours ago
    Dude, this is super neat and is very much in line with what I am looking for to replace my Google sheets. I love my sheets, but they could really stand to benefit from a UI around them. This looks like a great start.

    How much help and contributions are you looking for?

    • apatheticonion 18 hours ago
      Hey thanks! I've got a few issues in the repo to get started. https://github.com/alshdavid/stronk/issues

      If you have any ideas, drop them in the issues

      CI/CD is all set up so anything merged to `main` get published straight away, happy to include PRs - doesn't have to be perfect, can always fix it up after.

      A few low hanging fruit pieces would be a "details" page for exercises (e.g. "/exercises/Bench Press").

      I've also gotta set up the "measure" page for tracking bodyweight - but I am working on adding sqlite to the client so this sort of stuff (like charts) is easier to do.

  • colesantiago 20 hours ago
    Thanks for this, are you able to put a donation button on the app?

    I hope more people consider instead of putting their app on gated walled app stores or in app purchases that we have 100% free web apps instead.

    kudos!

    • apatheticonion 19 hours ago
      Thanks! That's really kind of you and I appreciate the support.

      Honestly I've never created a donation button before, haha - I've just added a donation link (via wise) to the README and to the settings page in the app.

      Again, appreciate the support!