WEB PRODUCT · TRAINING

FULL BODY

An interactive 3D dumbbell workout tracker built around a simple constraint: the fixed weights and floor space someone already has.

React · TypeScript · Three.js · React Three Fiber · Vitest · Cloudflare

Full Body dashboard showing the front-facing 3D anatomical muscle map with Chest selected and the current workout plan
Full Body active workout showing a highlighted chest muscle, floor press instructions, target reps, actual reps, and effort control
Set-by-set logging beside the active 3D muscle map.

PROJECT SNAPSHOT

Progressive training with the weights you own

Type
Interactive workout web application
Status
Released independent product · v1.0.0
Technologies
React, TypeScript, Vite, Three.js, React Three Fiber, Drei, Vitest, Cloudflare Workers Static Assets
  • Interactive 3D muscle map for choosing workouts and seeing training state
  • Three-day full-body plan with benchmark-based starting targets
  • Set-by-set reps and reps-in-reserve tracking
  • History-based rep targets and harder exercise variations
  • Browser-local history, progress views, and calendar export

The challenge

How can someone build a progressive full-body routine with only fixed dumbbells and floor space? Adding weight is not always an option. I wanted the next step in training to come from performance rather than a requirement to buy heavier equipment.

The product response

Full Body starts with a benchmark and organizes training into Full Body A, B, and C. Each session records target reps, actual reps, effort, dumbbell weight, and exercise variation. The dashboard keeps the current plan and the muscle map in view so starting a workout takes few steps.

One rep at a time

Successful sessions add one total prescribed rep at a time. A three-set target can move from 12 / 12 / 12 to 13 / 12 / 12, then 13 / 13 / 12, then 13 / 13 / 13. Historical results inform the next target without an arbitrary strength score.

Difficulty after the ceiling

When an exercise reaches its rep-range ceiling, the app can unlock a harder movement, such as a paused floor press after the standard floor press. The target returns to a lower rep range for the new variation, giving the user room to progress with the same dumbbells.

Anatomy as interaction

The Three.js body is both a control and a record of training state. Muscle regions use stable application IDs for click or tap selection, active and completed states, and Strong/Weak Point views. The anatomy scene loads separately from the main application bundle.

Personal history, not rankings

Progress and Strong/Weak Point views are derived from a user's own completed workouts. They describe trends such as progressing, steady, or stalled, and distinguish finishing a rep range from advancing to a harder variation. They do not compare users to a population.

Local-first release

Profile, active workout, history, variations, and recovery check-ins are stored in versioned browser-local repositories. There is no account or workout backend. The calendar exports recurring events as an .ics file rather than syncing to an external service.

Tradeoffs and validation

Browser-local data stays on one device and can be lost if site storage is cleared. The anatomical model is an interactive guide, not a clinical reference. The v1.0.0 release passed 113 automated tests, a production build, responsive browser checks, and a live HTTPS smoke test.