You are browsing as a guest. Sign up (or log in) to start making projects!

M-Logger

  • 4 Devlogs
  • 6 Total hours

Stands for Meticulous (Gym) Logger. A simple program that allows users to log resistance exercises and track progress over time, with an abundance of optional inclusions, e.g. RIR, tempo, form quality, etc.

Ship #1

I just finished making a Streamlit-based workout tracking app. My initial goal was to include more in-depth metrics than the average tracker. I did this, first brainstorming 20-30 things that lifters would like to track, and including them all as inputs; for example, RIR, RPE, tempo, drop sets, assisted reps, etc.

This was my first time ever touching Python or Streamlit! I ran into so many walls and sunk so much time debugging due to beginner mistakes like writing bad syntax, messing up indentations. I had no idea how to track variables after page refreshes, or how to make pages interact with each other. I didn't understand the point of list operations: appending and checking length I didn't know about creating unique keys to store variables with. (Honestly, I still largely don't...)

Still, this is much farther than I thought I could've gone for a first project, I'm grateful to have grasped the basics of Python: variables, inputs, loops. In hindsight, the whole experience was fun, especially writing out a bank of wise quotes to be randomly displayed on startup. "Pain is an illusion, but PRs are real."; "I lift, therefore I am." etc.

Thanks for reading, please check out my demo!

  • 4 devlogs
  • 6h
Try project → See source code →
Open comments for this post

1h 41m 21s logged

got the app pretty much done!! my first change was adding an additional reps feature where people could add in drop sets, myoreps, rest-pause reps, etc. this goes into more detail than most simple weight/reps loggers. I left that section intentionally more open-ended because there’s such a wide range of intensifiers people use.
.
I ran into a lotttt of problems trying to optionally allow certain features to be disabled. it should’ve been a simple feature - a checkbox that if true hid certain form fields. but my checkboxes kept resetting their state when the page refreshed :(
using a combination session state and keys, i got the feature to work at last. it didn’t help that I got stuck due to some rookie coding mistakes: I initially put all the form inputs in an if loop, but I had to change it when I realized the variables were only defined inside that loop.
.
even deploying the streamlit app was an interesting new experience for me. I learned about Git and Github, and how to organise the files in a repo. this helped me learn how projects go from code files to real applications with a domain and frontend.

0

Loading discussion…

0
3
Open comments for this post

2h 5m 42s logged

I added forms for users to input exercises and sets into my logger, the key function. I included all the different set metrics that I brainstormed yesterday. My original idea to differentiate my app from all others was including all the bells and whistles, a lot of workout trackers don’t let you input minor details like rest times, ROM, etc. Right now it’s a sprawling mess; I’m planning a settings page where users can choose which to include.
.
I also learned a lot about debugging. As a complete beginner to Python, it was a massive pain working with all the nested forms. I got so many errors and tweaked so much stuff only to realize I indented one thing wrong and that was causing all of it :(
.
Next up, all the different set types, like dropsets and supersets. I’m not fully sure yet how I’m going to include that. Also, I need to let people add in additional reps, ie partial reps, assisted reps, etc. and include the types of stuff loggers would care about - how many partials, how much ROM?

0

Loading discussion…

0
2
Open comments for this post

1h 33m 36s logged

I started making the form screen for inputting a workout. First I wrote out a huge list of all the workout details, exercise details, and set metrics I wanted to include. It took a while to research and copy down all the different types of nonsense lifters do and record… I don’t think my list is comprehensive yet. Also, I think I’m overly sad because all that work counted as 0min of time logged :/
.
Seeing this huge dump, I think I should allow users to check off which selections to include while logging workouts, for simplicity and because everyone lifts differently.
.
I created the add workout form today and learned about different input boxes that generated different variable types. One cool feature was the inbuilt slider, which I used to allow users to input their overall energy level, but I anticipate could also be used to input RPE, etc.
.
I also added a text section that generates a random cheesy gym-related quote whenever the user adds a new workout, and I wrote out 25 of them.

0

Loading discussion…

0
2
Open comments for this post

44m 32s logged

Devlog 0: 27.06.25
.
Started my project today, I want to make a gym logger because Google Sheets is really uninspiring to work with. I thought of differentiating myself from other loggers by including options for very specific inputs. Most loggers I’ve seen only let you input weight and reps, and don’t let you log RIR, RPE, rest times, etc. and/or don’t support stuff like dropsets, supersets, cluster sets, etc.
.
I’m a complete beginner to coding so I spent some time watching a Python tutorial on YT and learned about print statements and variable types.
.
The UI looks beautiful doesn’t it ⌄ (I only set up the environment today)

0

Loading discussion…

0
8

Followers

Loading…