hand sketched logo of electrons orbiting a nucleus

💪 Build Exercise Tracker

Over the past ~10 years, I've been working out regularly and tracking every workout. First I tracked in a physical notebook. Then in Notion. Then in Roam. Then in a bunch of roam like variants. Then tracking in TrueCoach when working with a coach. Now tracking in Tana.

Some goals for this project:

  • I want a single digital place to track my workouts that I control.
  • I want to explore creating a more enjoyable experience input experience.
  • I want to explore creating little visualizations of my progress.
  • I want to explore creating little algorithms to help me make decisions about my workouts.

TODOs

Move hosting to Vercel

The CRUD features for the exercise tracker require dynamic urls. Cloudflare Pages do not support dynamic urls (with the way nextjs works). Im going to move hosting to vercel. Im not sure this is true...

CRUD Frontend and Backend

As I start building this, I feel a great oppertunity for there to be a library that DRYs up the process. What would this look like?

Forced to change hosting?

Im currently hosting on Cloudflare using their Pages product for static blogs. As part of building out this project, I'm going to need to need to support urls of type exercise/days/[id] where the complete list of id's is NOT known at build time. Can NextJS handle this as a static site? No. Actually, it totally can?!

options:

  1. move to vercel hosting ✅
  2. use cloudflare workers to handle the dynamic routing - remember that workers run in edge runtime! aka some npm packages wont work, this happened for the image uploader
  3. spin up a server on fly.io - I dont want more work

Balancing Tools and Longevity

If I do choose to use a database, I want to makesure I maintain a backup that is in JSON (or any human ~readable format). I want to be able my data to be portable and not locked into a database.

Mapping TrueCoach data into JSON

At the end of 2 years of tracking workouts in TrueCoach, I wrote a small script to scrap all the workout data. That data is in a very unstructured JSON file.

With OpenAI function calling, I'd like to see if I can map that into more structured JSON.

Create and Input Form

Supabase Gotchas

  • if you try to delete | update a row you dont have access to you DONT get any error
    • its also easy to mess up the RLS policy and not realize it cause you dont get any errors

Radix Gotchas

  • I imagined a UI element that was a combo of select and input for create new, there is work coming to support this with combobox - but this issue has been open for a year
    • in the mean time, perhaps I'll implement editing in Dialog popovers...

References

🌱 Projects

Current things that bring me joy to work on