project log / gym
Gym Bro Dashboard
Static daily-programmer for a home + once-a-week box split
DIY Gym Dashboard
For the last year and a half (ish) I’ve been going to a community CrossFit gym three days a week. Solid crew, good coaching, and it became a real third place for me. It got me out of the house, gave me structure, and honestly helped pull me through some rough patches. I’ve made actual friends there, not just “nod at the water cooler” people.
Lately, though, a few things shifted:
- Money doesn’t stretch like it used to.
- The current programming cycle is heavy on overhead squats and other axial loading that my hips do not love.
- My weak link is hip stability, and history says: push those movements too hard, I get hurt.
So I swapped from the 3x/week membership to a 10-class / 90-day punch card at the same price. The plan: train three times a week at home, and hit the gym about once a week for the social side.
It feels like the gym did its initial job for me. I’m grateful. Now I want something tuned to my body and my attention span.
Why I Built My Own Programming
Around the same time I started my Neocities site, I realized it didn’t just have to be a project log. It could also host my own “programmed workout dashboard.”
At first I was just grabbing random Instagram workouts and asking ChatGPT to round them out. It worked, but it was exhausting to improvise like that every day.
So I sat down and really programmed it out: prompts, constraints, iterations, the whole thing. The result is a library of sessions designed to make me:
“fast, fit, lean, powerful, flexible, and coordinated with high mobility.”
All tailored to:
- The equipment I actually own
- My specific weak points:
- bilateral sciatica
- extremely weak hip stability from years of sitting
- those long FE shifts in the CV-22 seat with a class 3 vest on, hunched and overstretched for 16-hour sessions
The JSON Brain
Right now I’ve got ten JSON files living under /gym/:
- hip_mobility.json – daily, non-negotiable
- core.json – also daily, supports everything else
- strength_*.json – hinge, press, pull, squat
- wod.json – classic “workout of the day” pieces
- endurance.json – longer grinds
- partner_wod.json – in case a friend jumps in
- skill.json – small technical pieces to chip away at
Each file holds 30+ different routines. That’s the content layer.
The JS Glue
On top of that sits a simple JS script that runs in the browser on my Neocities site.
All the programming bits (warmup, strength, skill/core, WOD, cooldown, etc.) are stored as JSON in /gym/*.json. The script uses the current date, converted into a number, to deterministically pick:
- One warmup
- One strength piece, rotating through squat → hinge → press → pull
- A daily skill / core / hip block
- One conditioning piece: solo WOD, partner WOD, or endurance
- And a cooldown
Because it’s keyed off the date, each calendar day always maps to the same “WOD of the Day,” but it feels random and never repetitive. A static Neocities site, quietly serving fresh workouts every day.
Hooking Visual Studio Code directly to my ChatGPT account for this was huge—debugging the JSON / JS glue is way less painful when I can fix and re-test in one loop.
What’s Next
For now, this is my minimum viable gym: home sessions built for my body, with one social session a week at the old gym. Down the line, I’d love to vibe-code this into a simple Android app that just pulls from the same libraries.
But even as just a static page with some JSON and a script, it already does what I wanted: less decision fatigue, more training, and programming that respects the hips I actually have.