Hacklytics 2026 · iOS · Computer vision

Pushup Pal

Turn a recorded push-up set into form scores, movement charts, and a clear coaching takeaway.

I built every Swift screen and flow, connected the app to the FastAPI backend, and contributed to the computer vision pipeline with the team.

Event
Hacklytics 2026 · Feb
Team
3 people
Platform
iOS · SwiftUI
My role
iOS frontend · FastAPI integration
Pushup Pal results showing a form score of 79, a coaching takeaway, and a per-rep consistency chart
Fig. 01 · Results: set score, per-rep scores, and a coaching takeaway.

Problem

Beginners can watch good form but struggle to judge their own.

Approach

Score a recorded set against reference reps and form rules.

My part

iOS app, FastAPI integration, and shared computer vision work.

Outcome

Submitted to Hacklytics 2026 with a working demo.

Watching good form is easier than judging your own

Pushup Pal turns a phone recording into a breakdown of depth, body alignment, and consistency across a set.

Pushup Pal portrait camera interface with record and camera-switch controls, showing a sideways workout scenePushup Pal results scrolled to per-rep score and body-alignment chartsPushup Pal profile with a target of eight reps, progress bars, and past workout scores
Record a set
1

Record a set

Side view, in the iOS app

2

Review the breakdown

Set score, per-rep scores, depth, alignment

3

Track progress

History, plus goals after five sets

Pushup Pal portrait camera interface with record and camera-switch controls, showing a sideways workout scene
1Record a setSide view, in the iOS app
Pushup Pal results scrolled to per-rep score and body-alignment charts
2Review the breakdownSet score, per-rep scores, depth, alignment
Pushup Pal profile with a target of eight reps, progress bars, and past workout scores
3Track progressHistory, plus goals after five sets

Demo · Record → analyze → review → improve

Open on YouTube ↗

Building the iOS experience

iOS app & backend integration

  • Implemented every Swift screen and flow: recording a set, reviewing results, workout history, and goals.
  • Connected the app to FastAPI and parsed JSON responses into the data displayed in the interface.

Computer vision · shared

With Kevin Liu and Aarush Mathad, I helped create a sample dataset and contributed to the pipeline’s architecture and implementation.

From movement to a useful next step

iPhone

Record + upload

MOV/MP4 to FastAPI

Server

Pose → angles

MediaPipe landmarks at ~15 FPS

Server

Split reps

Valleys in elbow angle

Server

Score

FastDTW vs. references + form rules

Gemini

Coach

One-line takeaway from the summary

iPhone

Results + history

Saved to Firestore

Fig. 02 · Analysis runs after the set, not live.

How a set is scored

Each rep

50% DTW match50% depth, lockout, range

The set

70% mean rep30% lowest

Hip sag is flagged separately; it doesn’t change the number.

What Gemini sees

Rep countSet scoreAvg. min elbow angleDetected errors

Text only — no video or landmark data. A separate call sets goals from recent workouts.

Engineering trade-offs

Server-side analysis

Benefit: Python vision stays out of the native app

Trade-off: Upload time, network dependence, a wait

FastDTW + angle rules

Benefit: Tempo-tolerant matching plus explicit depth checks

Trade-off: Needs calibrated weights and good references

Summary-based coaching

Benefit: Grounded in measured errors; compact request

Trade-off: Only as good as what the pipeline detects

Limits and next steps

Scope: push-ups from a clear side view. Viewpoint, occlusion, and poor visibility affect the measurements.

Validate scoring earlier

Label recordings across people, angles, and lighting; compare with human assessments before tuning weights.

Guide capture before analysis

Framing and pose-confidence checks so the camera is placed right before the set starts.

Built with Kevin Liu and Aarush Mathad at Hacklytics 2026.