Back to case studies
Additional ServicesMobile App Development

Ekvi — endometriosis symptom-tracking app on iOS and Android

Client Ekvi
Duration 6 months (ongoing)
Type Endometriosis symptom tracker (cross-platform mobile)
Flutter (iOS + Android)Firebase (auth + sync)Firebase Cloud Messaging (notifications)NestJS REST APIProvider / BLoC state managementApple App Store + Google Play Store distribution
womens-health-tracking-app
womens-health-tracking-app

Constraint

The box they were trapped in

Endometriosis is a chronic condition where the data that matters — pain through the cycle, mood, sleep, what helped, what the period actually looked like — is exactly what generic period trackers don't capture well. It's also exactly what specialists ask about, and what the patient is asked to remember between appointments. The client wanted a tool women with the condition could open quickly, log honestly without friction, and bring to a doctor as a record — not a marketing wellness app, not another productivity tracker dressed up in pink.

Approach

How we attacked it

Flutter for both iOS and Android so one team can ship and maintain both stores. Firebase for auth, sync, and notifications, with a NestJS REST layer for the structured data the app needs to query. Provider/BLoC state on the app side. Daily logging covers the dimensions specialists actually ask about — pain location and intensity, mood, sleep, menstrual flow, activity — with the UI tuned for two-tap logging on a flare day. Weekly pattern surfacing turns the diary into a signal the user can act on; an export view packages the data for the next consultation.

Decisions

What we picked, and what we rejected

01

Endometriosis-specific scope, not a generic period tracker

Generic trackers cover the data they cover well. This app's job is the data shape specialists ask about — pain location and intensity through the cycle, flare timing, activity correlations. Narrowing the feature scope was the call: fertility tracking, generic wellness scoring, and adjacent features stayed out so the core logging is unmistakably right for the condition.

02

Flutter for one codebase across iOS and Android

A small team shipping to both app stores can't afford to maintain two native codebases of essentially the same app. Flutter gets us to parity on both platforms with one engineering effort, leaves enough customization at the platform layer for the bits that need it, and keeps the release cadence on both stores in sync.

03

Firebase + NestJS over a fully custom backend

Auth, sync, push notifications — Firebase already does all of these well at the team's size and scope. Rebuilding a JWT pipeline and a sync engine would have been weeks of work the user never sees. NestJS handles the structured queries Firebase isn't shaped for. The team's time goes into the logging UX where it actually matters.

04

Weekly pattern surfacing, not daily

Daily "here's what you logged yesterday" is noise — the user already knows. Weekly is the cadence at which a flare pattern, an activity correlation, or a sleep effect actually emerges from the data. Pattern surfacing on the right cadence is what makes the diary feel useful instead of feeling like one more thing to keep up with.

Trade-off

What we didn't build

We rejected building this as a generic women's-health tracker. Period trackers exist; this app's job is the specific data shape of endometriosis — pain through the cycle, flares that last hours not days, activity-correlation questions a specialist will ask. Narrowing scope meant saying no to obvious adjacent features (fertility tracking, generic wellness scoring) so the core logging stays unmistakably the right tool. We also chose Firebase over a bespoke auth/sync backend — team time goes into the logging UX, not into rebuilding what Firebase already does well.

Outcome

What changed after we shipped

Live on the Apple App Store and Google Play Store. Daily logging surfaces patterns over weeks of consistent entries instead of asking the user to compute them; the export view turns months of data into a record that's actually useful in a fifteen-minute consultation.

Talk to us

Have a similar project in mind?

Tell us what you're working on. We'll let you know whether it's a fit.