Skip to content
All work

01Healthcare SaaS

Rebuilding a healthcare SaaS platform without stopping it

A long-lived PHP application rebuilt as Next.js portals, a .NET API and mobile apps on Terraform-managed Azure, with every subscriber carried across.

Sector
Healthcare SaaS
JDO owned
Architecture · Web & mobile · API · Cloud & IaC · Data migration · Billing
Stack
Next.js · React · TypeScript · Tailwind CSS + 9 more
Fig. 01System sketch
  1. ClientsWeb · iOS · Android
  2. PortalsNext.js
  3. API.NET
  4. DataSQL · Blob
  • Terraformbootstrap · dev · prod
  • TelemetryOpenTelemetry

01Challenge

Challenge

The platform had grown for years on a single PHP and MySQL codebase. Clinicians and patients shared one dated interface, releases were manual, and every change risked breaking billing. The business needed a modern product on web and mobile, but it couldn't afford a big-bang rewrite or lose a single customer's history.

02Approach

How it was built

  1. 01Mapped the legacy schema and wrote versioned, repeatable data migrations, rehearsed against production copies before every cutover.
  2. 02Split the monolith's UI into dedicated clinician, patient and marketing apps in Next.js, sharing one design system.
  3. 03Built a .NET minimal API as the single source of truth for web and mobile, instrumented with OpenTelemetry from day one.
  4. 04Provisioned every Azure environment in Terraform, as separate bootstrap, shared, dev and prod stacks.
  5. 05Shipped a native iOS app and a cross-platform iOS/Android app against the same API and sign-in.
  6. 06Moved subscriptions to PayPal billing with webhook-driven state and transactional email.

03Architecture

Decisions that hold the system up

  • One API contract serving three web apps and two mobile clients, so features ship once.

  • Dev and prod built from the same Terraform modules, so environments can't drift.

  • Data migrations versioned in source control and replayable across several legacy schema versions.

  • A marketing site with a visual rich-text editor, so non-engineers publish without a deploy.

04Outcomes

What changed

  • Legacy platform retired, with customer data carried across every schema version.
  • Releases went from manual, after-hours events to routine pipeline runs.
  • Clinicians, patients and the marketing team each got an interface built for their job.
  • Web and mobile now share one API and one identity, so new features land everywhere at once.

Stack

Next.jsReactTypeScriptTailwind CSS.NETOpenTelemetryAzureTerraformMySQLSwiftiOSAndroidPayPal

Details are anonymized and simplified to protect client confidentiality.

Next case study

Data & integration

A file ingestion pipeline that runs itself

Building something similar?

Tell me where it's stuck. You'll hear back from me directly.