Case studies / Bespoke

Taking a non-functional rehabilitation app to production

Live

Shipped from a codebase that did not run

18 mo

Of unbroken development since 2025

4

Studio locations using the platform

TL;DR

Bespoke’s rehabilitation app arrived non-functional, with little to no documentation.

We audited the codebase end to end, stabilised it and shipped it as a native iOS app in Swift on MVVM, with Firebase behind it.

It runs across 4 studio locations, with 18 months of unbroken development since February 2025.

Bespoke came to us with an app that did not work. Not one that needed features, but one that could not be shipped, with no documentation explaining why. It was meant to let specialists build a recovery programme, assign it, schedule the sessions and give each member a clear view of their plan. That is what it does now.

The challenges

The brief was to work out why the existing app did not run, then get it to a state where it could carry real clinical workflows.

The app did not work
In the condition it was handed over, it could not be put in front of a member or a specialist.

Nothing documented what was broken
Every assumption about the codebase had to be tested rather than read.

New work could not be added safely
A broken programme assignment reaches a patient mid-recovery, so the instability had to be resolved before anything was added on top.

What we built

We have been on the project since February 2025. The app runs in production on iOS in Swift with an MVVM architecture and Firebase as the backend and data layer, serving specialists and members from one codebase.

The production app, shared by specialists and members.
Solution 1

Auditing a codebase nobody had documented

The first work was not development. We audited the project end to end, identified the critical issues and missing pieces, and mapped how the code was structured. Only then did stabilisation start: fixing the core issues, reaching a reliable state and putting it into production. Everything since has gone onto that foundation rather than alongside it, which is what separates prototypes from production.
Solution 2

Building a programme from an exercise library

Exercises are classified by body area and target muscle group, filtered by provider, category and sub category, and assigned per day. Specialists can add exercises the library is missing.
Selecting exercises for a full body programme, filtered by category and target area.
Solution 3

Scheduling across studios, in person or remote

Each studio carries its own calendar, with availability laid over booked sessions in day and week views, so a specialist’s free time is answered in one view instead of four. Appointments carry a type, schedule, repeat pattern and provider, so a twelve week programme is not twelve bookings by hand. Remote sessions carry the same fields as in-person ones, keeping one continuous history.
A specialist’s day across studio calendars. Member names masked here, not in the product.

Conclusion

Bespoke moved from an unreliable, non-functional project to a platform its specialists use in day-to-day rehabilitation work. Development has continued without pause since launch, which is the practical test of whether a rescued codebase was stabilised or merely patched.

Want a stalled build taken to production? Get in touch.

Live

Shipped from a codebase that did not run

18 mo

Of unbroken development since 2025

4

Studio locations using the platform

Platform: iOS, Swift  |  Architecture: MVVM  |  Backend and data: Firebase
Programmes: exercise library with provider, category and sub category filters, per day assignment
Scheduling: per studio calendars, day and week views, recurring appointments, remote sessions
Roles: specialist and member views, member activity and pain logs

FAQ

How do you take a non-functional app to production?
Audit before writing code. We audited the project end to end, identified the critical issues and missing pieces, fixed the core issues, reached a reliable state and put it into production. New features go onto that foundation.

What stack does the Bespoke app run on?
A production iOS application in Swift on an MVVM architecture, with Firebase for the backend and data layer.

How does the app handle recurring rehabilitation sessions?
Appointments carry a type, schedule, repeat pattern and provider. The repeat pattern covers recurring rehabilitation blocks, and remote sessions use the same fields as in-person ones.

How do specialists build a recovery programme?
From an exercise library classified by body area and muscle group, filtered by provider, category and sub category, with exercises assigned per day.

About Bespoke
Bespoke is a physical therapy and rehabilitation provider, operating studios across several US cities including San Diego, Seattle and two in New York.
Tags
Product & engineering
Tech stack
Swift
Firebase
MVVM
Want similar results?
We build AI agents and software for teams ready to move faster.
Get in touch
contact image