A Simple Man's Attempt at Devember (And A Timer)

TL;DR: I will be making a web based timer application in Go? to track reps and sets.

For my first devember (and personal coding project) I am going to make a customization timer. I have recently been getting into rock climbing, and enjoy the amount of problem solving and work that is needed to get up a wall. When I am not able to go to the gym, I have been trying to train at home to be stronger. This involves many workouts that have short times of exercise and breaks.

I am a simple person that does not want to set a timer (or count in my head) for 7s workout, 3s rest, repeat 6 times and then 3min break before starting all over. I know that this must exist somewhere in the world, but I said what the hell, I might as well practice a language and share something janky but useful with the world. Thus, I want to make a timer that I can use on my phone(website?) that will allow me to set small sets of timers that will flow through each other once I have started them.

The goal of this timer is to set an amount of time to exercise, rest, repeat this set of times for a given number of reps and then execute a break timer before starting over to a new set. When each timer is done, a sound will be played, an indication of what timer is up would be nice.

This thread will be to track my progress this month with this timer application. I hope that someone finds this interesting, and I look forward to updating us all on my progress.


30 Nov / 01 Dec 2022

Today I posted this document to kick myself in the butt to get working on this project. I have been thinking about what I could do for a personal project. Even though I am a “software engineer” by trade and I enjoy hobbies I am not good at coming up with projects/ideas for my own software. Everything is either a massive undertaking or an extremely simple problem that I can do once and forget about.

I also created a gitlab repo to share my code.

I have done some research and I will be making a client/server system that will have a web interface client with a server so that a few people can run my timer. I will do the server side in Go, and I am looking into how to set up the client side and a database to store multiple users. At this point I feel that I have bitten off more than I can chew, but I will use this opportunity to learn about web development.


02 Dec 2022

Today I decided that I will need a LAMP stack for what I want to do, so I researched this and will be running Nginx and Go. The database portion is still up in the air depending on how in depth I get. I began playing with Go as an HTTP server and seeing the potential. And then I had to go to dinner with my wife and some friends…


03 Dec 2022

Today I actually posted this thread to commit to the project. I am also going to implement my stack to get everything off the ground.

6 Likes

Hey, sounds a cool project!

Unsolicited request

I wonder, instead of starting with registered users, you could approach from the function side?
Web server providing a page one can load locally, with input scroll/sliders for times of work,rest& break, with a Start button & tones?
Then do registered users with their various differing routines, sets, day/schedule later?

Looks like a great idea though!

And, being your project, the “back end” might actually be the itch you wanna scratch anyway…

Cool project, if you feel like sharing I wouldn’t mind a github or similar. :slight_smile:

I appriciate the feed back. I am used to working with semi embedded and single computer programs so this is all new to me. I have never done any kind of web design before, but as I am learning about it and playing with a js frontend, I am seeing more what I need to get things working. I am planning on getting the web page working with the scripts in the back end, and then once a single user is working, I will add in a database of sorts to provide preplanned workouts. I would like to keep the registration process as minimal/nonexistant as possible.

1 Like

@wertigon I have linked a public gitlab repo for others to see/use my work here

1 Like

04 Dec 2022

Today was not a very productive day, but I was still able to learn a bit about CSS and get that working with my beginning site. I have been thinking about how to get my serverside running with the front end and will be using Python at the moment to get the hang of things. I don’t know if I will be able to use Go efficiently with my current knowledge. Tomorrow I will look into these things more and draft up a basic timer function.

After a few days of planning (slacking) I have decided to change course on how I implement my timer. I have learned more about how websites and web applications work, and I have decided to use python in lieu of go for my back end server. I am going to be working with Flask as my framework. I have been offline running through their tutorial on how to use the tool and I think that it will be a good fit. Nothing about my end product has changed, and I think that I will have an easier time using an existing framework as opposed to making everything from scratch.

Flask is nice for microservices like the kind you’ll probably be building.

And if you haven’t already, be sure to check out the Requests library. You definitely want to use requests for doing gets and posts and stuff instead of doing that all on your own. :grinning:

I will have to look into that library thanks for the advice

I have just got back from a vacation so now I have to be full steam ahead with my project. I will be implementing my project in Flask and once I have the basic timer working, I will begin to make a simple login service to store and manage different workout sets.

I have been much more busy and unproductive than I was expecting in the last two months and thus I am resinding my devember project 2022. I have been learning a lot about web development and I still want to complete this project this year. Next devember I will have more dedication and scope my project to something I am a bit more familiar with. I will keep this thread updated with my progress and hopefully this project will be of use to someone someday this year.

Thanks for all the help and fun, see you again soon.