Flexible fitness logger that works

UPDATE:

This post is just an update to what I’ve been up to. I know I did not post much, sorry, but thats just because I barely even had enough time to work on the project to begin with.

A full write up about this project, including a basic user guide will follow ASAP.

UI:

Ended up going with vuejs and bootstrap v4.0. This is my first vuejs project and pelase dont judge me too hard, I absolutely hate UI deving and other than learing vuejs (which out of all the UI frameworkds ive tried, I love). Also had to learn things such as state amangement and more.

This is designed for mobile use and not desktop use…just FYI.

As it is the UX I would say its usable (definetly more usable compare to the app I’ve made for my honours project in Uni.) and I’ve even gotten some people on board for some testing.

However, with that said, after the competition is over, using everything I have learned from developing this UI/UX, I will be re-reitting the frontend with Ionic using Vuejs simply because I really want to make it an actual mobile application with actual mobile components, animations and user flow.

Backend:

There really isnt much of an update here, mostly just bug fixes and some more features implemented.

AH! almost forgot

Ive also just deployed the application and if you feel like breaking it, head over to logger.fitness

Logger.Fitness 31/12/2021

This idea originally came to me from my honours project which I had in my last
year of University. The idea was a two-parter, to make a workout logger
application and to make the app in a micro services approach. This proved to be
a bit of a time waste because I did not end up properly finishing the application.
So here I am with my second run at this idea.

The Idea

The idea is simple, make a fuss-free workout logging application which is
customisable in the exercises that you have and the data that you have available.
Then to be able to take logs and create custom historical charts based cross
referencing data that the user wants.

The user would be able to add tags to things such as exercises, or
workouts. Then, the user would be able to create a graph where it would be possible
to pull in data which has that specific tag on it and show progress over time
including or excluding specific tags.

For example, the user could tag a specific workout with tag “super tired”. Then
when compiling a graph the user could exclude that specific tag from the search.
This logic could be extended to include tags, and multiple exercises types.

However, to even think about starting the sort of data and tag magic which has
been described above, a base logger would first have to be made, or an MVP.

v1.0 MVP

This MVP is all about making a functional logger where you would be able to just
simply create custom exercise types, with two types of data (single values and
sets). Then be able to start workouts, log the exercises, log notes and stop the
workouts.

v2.0 UX-boogaloo

The main purpose of this version would be to focus a bit on how the app looks,
the user flow between different pages of the app, and giving the app a bit of
an identity.

Also, historical and analytical features for the app such as simple “1 rep max”
charts, and more will be introduced. This is where the system will also lay the
groundwork’s for the tagging system and the flexible chart system will be
created.

Introducing The Tech Stack

Everything is containerised with docker images, backend consisting of a Golang
with Echo REST framework application and a MongoDB database.

The frontend is served from a separate Nginx container which also forwards all
the API traffic to the backend container. The frontend its self is just a fairly
simple VueJS using Vuex state management, Vue router and Bootstrap for a UI
toolkit.

Everything is sitting behind an Nginx Proxy Manager
simply because of its simplicity and ease of use. This will most likely be
swapped for a manual configuration of Nginx.

Current Progress

  • Login and authentication system. (just works enough for now)
  • Creation, addition and deletion of custom user exercises with either a set data type or a single value data type.
    • Example of a set for reference Set{resistance int, repetitions int}
  • Starting, stopping, editing and deletion of workouts
  • Addition of exercises to the workouts based on the custom exercise types.
  • Addition and deletion of sets to exercises inside workouts.

Next Steps

When it comes to the backend, most of my authentication system will be scrapped
in favour of some OAuth system, at the moment thinking of something like
KeyCloak, ideally I would like to own the database
and not offload it to firebase or anything like that.
A bit or backend cleanup and test coverage would also be needed.

When it comes to the UI, there is a lot of work to be done. This would be done
with Ionic and Vuejs. However, the most important part would be some actual
designs, will possibly contact one of my designer friends for UX and wireframes.
(or I might just swallow my pride and learn to do it myself).

Functionality

Up next in terms of functionality, the addition of workout templates will be
implemented. Meaning when starting a workout the user would be able to chose
from some user defined templates which would just have all the exercises needed
for that workout.

Another crucial piece of functionality is the historical and analytical part of
it. There will be one separate page to show charts for specific exercises, one
for the custom user exercises. And information bits sprinkled thought the
application to show things such as 1 rep maxes.

Another Idea: when adding a set, show the max resistance based on the
repetitions entered.

More of these features will be added.

Conclusion

Compare to where I made it with my honours project, this is already better than
last time. This already looks to be useful for my personal use-case and some
friends already mentioned that this might be useful for them.

This project will 100% be taken further, I hope to be able to make something
useful, and potentially in the future I might even be able to work out some good
way to monetize it and turn it into a simple one man startup.

P.S.

No time to proof read this, really sorry. Im too busy with the holidays, already ignoring people I’m staying with. Will have a look at this tomorrow if its not too late.

Will also write up some documentation and make a demo video for this application.

P. S. Finally got around to record a quick demo vid

Yes ik, the login details appear in the vid… Go nuts :wink: