← Work
Case No. 02HealthcareGovernmentShipped

The brief was two apps. We shipped one codebase.

Poland's National Health Fund needed two patient apps for its POZ Plus programme: chronic-disease care and physiotherapy. We shipped both from one Flutter codebase.

iOSAndroid
one Flutter codebase, shipped for Poland's National Health Fund2 apps
chronic conditions covered by Moje Zdrowie+5
still on Google Play today, under our own package IDslive
HealthKit and Google Fit behind one data layeriOS + Android
ClientNarodowy Fundusz Zdrowia (NFZ)
Engagement2021-2023
Tech stackFlutter · Melos · Firebase
PlatformsiOS · Android
the product

The product.

Moje Zdrowie+ dashboard: chronic-condition cards, blood pressure and BMI measurements, and a medication reminder, labeled in Polish
Moje Fizjo+ dashboard: therapy plans for Barki (shoulders) and Odcinek szyjny (cervical spine), a daily plan at 33 percent

moje zdrowie+ · moje fizjo+ - one ui kit, two identities

the system

Two apps. One codebase. One UI kit.

appsFlutter
  • Moje Zdrowie+chronic care - COPD, heart disease, type 2 diabetes, thyroid, hypertension
  • Moje Fizjo+physiotherapy - exercise plans, progress, notes for the therapist
shared packagesDart
  • UI kitone component library, two app identities
  • Health-data layerHealthKit and Google Fit behind one interface
integrationsplatform
  • HealthKit + Google Fitblood pressure, activity, sleep - patient-side data
  • Drug registrynightly sync of the reimbursed-medicine registry, dose countdown + low-supply push
  • iCal exportexercise schedule as a subscribable calendar feed
foundation
  • Firebaseauth, data, notifications - both apps, one project
  • Design systemtype scale and contrast tuned for older patients

Shared packages carry the UI and the data layer. A change lands once and ships twice - to both apps, on both platforms.

the hard parts

Three constraints that shaped the build.

01

Two apps, one codebase

the problem

Two patient groups, two visual identities, one government timeline. Built as separate codebases, every screen, fix, and review would have happened twice.

what we did
A Melos monorepo: shared packages carry the UI components, the health-data layer, and the integrations; each app keeps its own branding, navigation, and medical content. The second app shipped on the first one's foundations.
02

The health-data bridge

the problem

Chronic care runs on data patients already track - blood pressure, activity, sleep - but it lives in HealthKit on iOS and Google Fit on Android, in different shapes.

what we did
We wrote the platform channels ourselves: a Dart MethodChannel bridged to Swift HealthKit on iOS and a Kotlin Google Fit provider tree on Android, our own OAuth flow included. Features read one API whichever platform they run on. The medication module runs on two scheduled jobs: one syncs Poland's reimbursed-medicine registry into Firestore nightly, the other counts down doses and pushes a low-supply alert before a patient runs out.
Moje Zdrowie+ medication detail for Acard: doses remaining and the dosing schedule against the therapy's start and end dates

the medication module · synced nightly, counted down daily

03

Designed for older patients

the problem

The core users are older patients managing chronic conditions. Default mobile UI conventions - small type, low contrast, gesture-heavy navigation - quietly exclude exactly that group.

what we did
A larger type scale, contrast tuned for older eyes, reach-friendly layouts, and navigation flat enough that no patient gets stranded - carried by the shared UI kit, so the same decisions landed in every screen of both apps instead of living in two design files.
Moje Fizjo+ exercise screen for Automasaz: before and after pain-scale sliders around an instructional video

pain before, pain after · therapy that reports back

the design

The design system.

Moje Zdrowie+ and Moje Fizjo+ design specimen: shared Poppins type, two palettes - navy and cyan, indigo and blue - on a light canvas
One UI kit, two identities: Zdrowie runs navy #172983 and cyan #0095DB, Fizjo runs indigo #2E2383 and blue #3362FF, both set in Poppins over a light canvas. Zdrowie's palette starts as a copy of Fizjo's, then overrides exactly the colors that needed to read as a different app.
the public record

Government work rarely comes with a public credit. This one is verifiable.

Both apps shipped to the App Store and Google Play under NFZ's POZ Plus programme, and the programme's pages still document them. Today Google Play is where they still run, under package IDs that carry our name - com.utopiaultimate.pozplus.zdrowie and com.utopiaultimate.pozplus.fizjo - which is as close to a byline as a public-sector contract gets.
talk to us

Building for a regulated sector?

The engineers who shipped both apps answer the contact form.