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
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
Step 1
iOS prototype
A first version tested with a physiotherapist, who validated the exercise flow and session design.
Step 2
Rebuild for Android
On the physio’s advice I rebuilt from scratch for Android, to make it accessible to more patients.
Step 3
Walking tracking
The physio asked for gait tracking next, so I added step detection and a cadence estimator.
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
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.]”
Language
Kotlin
UI & game
Jetpack Compose, Compose Canvas
Vision
CameraX, Google MediaPipe
Architecture
MVVM, coroutines, StateFlow