Josh Ramirez
← Field guide

Entry 09 of 23

Departed Summer 2025

my bodyiOS appShipped
Three iOS Health App screens side by side: a dark-mode Dumbbell Bench Press set logger, a Nutrition Log with macro progress bars and meal list, and a Confirm Meal screen using a photo of a Fairlife bottle to extract nutrition details
The whole loop: log a set, track the day, scan the meal.

Departure

MyFitnessPal is for a database average. Strong is for people willing to tap through somebody else's workout model. I wanted the smaller, more useful thing: an app shaped around how I actually lift and eat. Three numbers for a set, four macro bars for the day, and a camera path for meals because typing food is where every nutrition tracker starts dying.

Approach

4 tools

  • Swift
  • Gemini Vision
  • Supabase
  • AVFoundation

Phone-only — every entry has to be one-thumb-fast or I won't log it mid-set, and that's the whole game.

Field log

8 entries

  1. Summer 2025 — opening

    Generic trackers ask the body to fit the schema. I wanted the schema to fit the body. Three screens: log a set, log a meal, see the month.

  2. First lift logged

    Dumbbell Bench Press, SET 1: weight, reps, RIR. Three numbers, three taps. The schema for the entire app is essentially that row.

  3. RIR over 1RM

    Picked Reps in Reserve instead of estimated 1RM. 1RM is a theoretical number; RIR is what I actually felt at the top of the set. Honesty in the moment beats a fiction I'd recompute later.

  4. Pointing the camera at a Fairlife bottle

    Photographing replaced typing. Aim at the label, let Gemini Vision extract the nutrition, then confirm the meal. The Fairlife bottle path was the important one: 150 kcal, 30g protein, no database search.

  5. Macros, four bars

    Calories, Protein, Carbs, Fat — four progress bars across the top of the Nutrition Log. Targets are mine, not a database default for a 30-year-old male.

  6. Radar chart of the body

    The analytics view turned 30 days of sets into the thing I actually wanted to know: am I training evenly, and what am I avoiding? Leg day becomes harder to lie about when the month is drawn from your own rows.

  7. meal_logs, raw

    Opened the Supabase dashboard and saw it all unfiltered. Typos and all — that's the truth of the week.

  8. Mid-July, the gap

    Sets per day, meals per day, macro intake — all three rolling averages dropped to exactly 0 for a week. That's Belize. The app did not need an excuse field; the missing rows were already honest.

From the gallery

1 figure

Health App main screens showing workout set logging, nutrition macro tracking, and Gemini Vision meal confirmation
Workout, dashboard, nutrition: the app compressed to three screens.

What I came back with

30-day training view, end-to-end on my own data.

Lesson from the terrain

Building a tracker for your own body is a different problem than building one for everyone's — there's no edge case I have to politely accommodate, no field I have to surface because some other user might want it. The radar is calibrated to my split, the macro targets are mine, meal_logs is full of the things I actually eat. The graph also remembers the things I didn't do — mid-July is just zero, and the zero is honest.

Cross-links