Curl Commander - Real-Time Bicep Curl Form Feedback on Bangle.js 2

A wearable coaching tool that uses a Bangle.js 2 smartwatch to count bicep curl reps and give real-time form feedback.

00

problem

Many people perform exercises with incorrect form, which reduces effectiveness and raises injury risk. Existing fitness apps and wearables count reps and track intensity, but give little to no real-time feedback on how an exercise is actually being performed.

solution

Curl Commander is a bicep-curl coaching app for the Bangle.js 2 (Espruino JavaScript). Since the watch has no gyroscope, it calibrates to each user's own arm, a hands-off 5-second countdown captures the accelerometer reading at full extension and full flexion. During a set, the live reading is projected onto that personal "curl path" using vector math to get a 0–1 progress value, which drives a debounced state machine that counts a rep whenever the arm cycles fully down → up → down. Each rep is also timed against a 2-0-2-0 tempo baseline and classified too fast (<2s), correct (2–6s), or too slow (>6s), with a distinct vibration pattern and a short, randomized, non-judgmental text cue so the user never has to look away mid-set. A summary screen closes each session with total reps, correct/too-fast/too-slow counts, and a form-accuracy percentage.

Curl Commander started as a question: fitness apps are good at counting reps, but almost none tell you if you're doing the rep right. Could an open-source smartwatch, using only its built-in accelerometer, actually coach form in real time?

Milestone 1
Milestone 1 went into the literature before any code ,four papers on wearable biofeedback, wrist-worn posture sensing, and computer-vision-based form correction. The research converged on three constraints: keep the interface dead simple (you can't navigate a menu mid-set), make feedback glanceable and non-judgmental, and since the Bangle.js 2 has no gyroscope ,find a way to infer arm position without ever measuring an actual elbow angle. That became the calibration idea: record what "fully extended" and "fully curled" feel like to the sensor for this specific arm, then measure everything else relative to those two points.

Milestone 2
Milestone 2 turned that into a working Mid-Fi prototype on real hardware. The first calibration flow had users press the watch's side button to confirm each position but testing surfaced a problem the professor flagged directly: pressing a physical button shifts the arm just enough to corrupt the very reading being captured. The fix was to remove the user from the loop entirely: a 5-second countdown that captures the accelerometer value automatically at zero, nothing to press or tap.

Milestone 3
Milestone 3 built that into a full five-screen Hi-Fi prototype (Welcome → Calibration Explainer → Calibration → Workout → Summary). Rep detection uses scalar projection , it computes the vector between the calibrated down and up positions, then projects the live reading onto that vector to get a single "how curled is the arm right now" number, with a state machine flipping between down/up as that number crosses a threshold. Each rep's duration is checked against a 2-0-2-0 tempo baseline from strength-training research, with distinct buzz patterns and rotating short text nudges so no message repeats twice in a row.

The limitations are part of the story too: the system only supports bicep curls today, its thresholds were hand-tuned against two testers rather than learned per-user, and because the watch has no gyroscope it genuinely can't detect wrist twist, two different arm rotations can look identical to the accelerometer. The project's own readiness assessment is candid about this: the app shell and summary screen are release-ready, rep detection and tempo feedback are beta-ready, and multi-exercise support plus adaptive thresholds are the logical next milestones.

year

2026

timeframe

3 months

Activities

Secondary research, sketching & prototyping, embedded development (Espruino JavaScript, AI-assisted), interaction design, usability testing, iterative design

category

UI/UX

01

02

03

04

.say hello

I’m currently open to UX and Product Design internships.
Feel free to reach out if you’d like to collaborate or learn more about my work.

.say hello

I’m currently open to UX and Product Design internships.
Feel free to reach out if you’d like to collaborate or learn more about my work.

Create a free website with Framer, the website builder loved by startups, designers and agencies.