Project 01 · Health tech · [20XX]–present

ADAPT

Physiotherapy exercises, turned into games — with the phone’s camera watching every rep.

In 30 seconds

The point

The problem
Home rehab exercises are repetitive, and patients often do them alone with no one checking their form.
What I built
An Android app that tracks the body through the phone camera and turns each correct rep into progress in a game.
My role
[Solo developer — confirm]: design, engineering, and working directly with the physiotherapist.
Where it stands
Prototype validated on iOS, rebuilt for Android, walking tracking added. Preparing for Google Play.
What it shows
I can take a clinical idea from a user conversation to a shippable product — and solve the hard engineering in between.

My role

[Solo developer — confirm]

Platform

Android · iOS prototype

Clinical partner

[Physiotherapist / clinic name]

Status

Preparing Google Play release

[Screen recording or photo: a patient playing, skeleton overlay visible]

Why

Rehab only works if patients keep doing it

Rehab only works if patients keep doing their exercises — often alone at home, with no one checking whether they’re moving correctly. ADAPT gives each rep a purpose inside a game, and uses the camera to measure the movement so the game only rewards the real thing.

[Your personal starting point: what you saw or experienced that made you want to build this, in 2–3 sentences.]

The journey

From an iOS prototype to Google Play

  1. Step 1

    iOS prototype

    A first version tested with a physiotherapist, who validated the exercise flow and session design.

  2. Step 2

    Rebuild for Android

    On the physio’s advice I rebuilt from scratch for Android, to make it accessible to more patients.

  3. Step 3

    Walking tracking

    The physio asked for gait tracking next, so I added step detection and a cadence estimator.

  4. Up next

    Google Play

    Setting up an organisation developer account so the app can be published as a health app.

How it works

Four stages, running live on the phone

Four stages, running on the phone in real time, many times a second.

Camera

See the patient

Front camera frames via CameraX.

Pose model

Find the body

Google MediaPipe locates body landmarks each frame.

Interpreter

Measure the movement

Joint angles, smoothed to remove jitter, turned into reps and steps.

Game engine

Play the rep

Custom games I built on Jetpack Compose Canvas.

Clinical design

Shaped by a physiotherapist

The screens themselves were rebuilt, but every clinical decision the physiotherapist signed off on in the prototype carried over. Patients can’t type in any angle they like — the targets are presets chosen for safe, meaningful progress.

Target angles

45°60°90°120°

Exercises supported

  • Shoulder flexion
  • Shoulder abduction
  • Elbow flexion
  • Hip flexion
  • Knee flexion
  • Walking — step and cadence tracking

Engineering

Four problems I had to solve

The mirror problem

A front camera shows you mirrored, so “left” and “right” swap. Flip once too many times and the skeleton silently lands on the wrong arm. I made one single component responsible for the flip, and documented why.

Shaky measurements

Raw pose data jitters frame to frame, which would count phantom reps. I added signal smoothing (a One Euro filter) so angles stay steady without lagging behind the patient.

Two speeds at once

The AI model and the game run at different frame rates. I split them onto separate threads in a producer–consumer design, and built on-screen counters for each so I could prove neither was slowing the other.

Recognising a step

Walking isn’t one joint angle — it’s a repeating cycle. I built gait-cycle detection and a cadence estimator so the app can follow a patient walking, not just lifting an arm.

Reflection

What I learned

[2–3 sentences in your own words — e.g. what working with a clinician taught you about building for real users, or a moment where something failed and what you changed.]

“[A line from your physiotherapist about the project — only with their permission.]”

[Name, role]

Language

Kotlin

UI & game

Jetpack Compose, Compose Canvas

Vision

CameraX, Google MediaPipe

Architecture

MVVM, coroutines, StateFlow