← All posts
tutorialfitness

How to build a fitness tracker: one-rep max, training zones, and workout plans

Mahesh Naidu·6 min read

/fitnesshas 22 endpoints covering strength training, cardio zones, recovery, and program generation. This walks through the three you'd use first for a basic training-log app.

One-rep max — three formulas, not one

/one-rep-max takes a lifted weight and rep count, and rather than committing to a single estimation formula (which all have known blind spots at different rep ranges), it computes Epley, Brzycki, and Lombardi separately and returns all three plus an average:

epley   = weight × (1 + reps / 30)
brzycki = weight × (36 / (37 − reps))
lombardi = weight × reps^0.10
fetch("https://aplicious.com/api/v1/fitness/one-rep-max?weight=100&reps=5&unit=kg", {
  headers: { "X-API-Key": "lapi_live_••••" },
});

The response includes a note that the average is most accurate when reps stay at 10 or below — all three formulas degrade at higher rep counts, and we'd rather tell you that than quietly return a number that looks precise but isn't.

Training zones for cardio

/target-heart-rate and /training-zones take age (and optionally resting heart rate, for the more accurate Karvonen method) and return the standard zone bands — recovery, fat burn, aerobic, anaerobic, max effort — as heart-rate ranges you can render directly on a workout screen.

Workout plan generation

/workout-plan generates a structured multi-week program from goal, experience level, and days-per-week inputs. /progressive-overload and /deload-week handle the periodization logic on top of a base plan — when to increase load, and when to schedule a recovery week — which is the part most DIY fitness apps skip entirely and just let users wing it.

Putting it together

async function logSet(weight: number, reps: number) {
  const res = await fetch(
    `https://aplicious.com/api/v1/fitness/one-rep-max?weight=${weight}&reps=${reps}`,
    { headers: { "X-API-Key": process.env.APLICIOUS_KEY! } }
  );
  const { data } = await res.json();
  return data.one_rep_max.average; // store this for progress tracking
}

Pair this with /nutrition's macro endpoints (covered in a separate post) and you have the two data sources most training-log apps actually need, both behind the same API key.

Try APlicious free
One key. 34 live namespaces. 500 free calls per month — no credit card required.
Get your free API key →
← Back to all posts