Project - The Training Log
Project for 2021 - a journal for your runs 🏃♂️
My aim for 2021 is to have a personal project on the side that I can keep chipping away at. In the past, I have started many projects only never to return to them, so I am keen to get into the habit and keep it ticking over. Usually, my projects are a little too ambitious for side projects and as a result, I get frustrated with the lack of progress and give up. Also, I've never struck up a good, regular routine. I often start on the occasional spare weekend and then never have time to revisit it, so this time I am trying to try a more piecemeal approach of committing little and often. In line with my "Consume, Build, Teach", I'll be trying to do at least one commit per day in an effort to carve out a routine and to keep the project progressing. Also, I am hoping to blog along the way about the build, so it will at least provide some useful content.
My grand idea is The Training Log. I run a lot. I use Strava, which is great for recording my runs, but not so good at keeping notes and performance data about my runs. The Strava model is slightly misaligned with my personal use. I like Strava's social features: the user feed, local legends, and segments as well as the functionality features it provides such as GPS recording. It's great for interacting with friends and seeing how fellow runners are progressing. However, it offers no way to store my thoughts and feelings about my runs. Normally, I am forced to use the description box. However, this isn't great. I don't really want to bore people with a frank, long-winded analysis of how I was feeling on my run, what I ate the night before and how well-hydrated I was. Also, when it comes to analysis a free-text description is basically useless. It gives no structured data and makes it very difficult to compare nuances across runs. Thus, The Training Log will provide a house for that. Longer-term, I'll sort out a Strava integration whereby activities automatically get imported and I can privately add all the notes I need and combine them with the analysis I want. This way I'll get my own private part of the internet for documenting my training efforts while continuing to use Strava for the features that I really like. Integration to the Strava API will make the process pretty seamless.
The initial build seems fairly straightforward. I'll leave the Strava integration for later. I've done some authentication work on the Strava API before so I know that that is possible. Lots of people do not use Strava (or any running app), so I want these users to be able to use the app as well. My concern with diving straight into the Strava integration is that the app will become tightly coupled to the data that the Strava API provides. Therefore, the app will be buggy and a poor user experience for manual users. To begin with, it will be a manual entry. In principle, the app is just a RESTful application with authentication, so I am hopeful it is not overly ambitious. Initially, it'll be a glorified ToDo app where users can name and add notes to their activities. But, I think with some simple additional features it can have quite a distinct use case.
Anyway, idea semi-formed, domain purchased, and
npx create-react-app the-training-log executed I think that I am ready to go! I always forget about the amount of crud you have to deal with when starting a new application. I do it so infrequently nowadays that every time I come to it the process has changed again. Logo design, favicon creation, scouring different fonts and images - it's pretty exhausting 😅 All the useful websites have changed and all the React and Express utility packages have newer versions.
Anyway, if I am disciplined, I am planning a blog once a week about the progress. At this point, I have been sorting the basic project and firebase setup. I have a holding page up https://thetraininglog.com/.
Credit to these sites, which help with assets and resources for the initial setup.