Case Study
MatraBloom
Postpartum Recovery App
A postpartum recovery app and website that turns birth type, weeks since birth and a two-question morning check-in into a daily movement plan. Flutter Android app, multilingual Next.js web app, and one shared Firebase backend.

The Challenge
Most pregnancy apps stop at birth. In the twelve weeks after it, the pelvic floor, the abdominal wall and, after a caesarean, an incision all recover on different timelines, and general fitness apps either ignore that or fall back on "listen to your body". MatraBloom needed to give specific, conservative guidance about which movements are open in which week after which kind of birth, adapt each day's session to how much energy a new mother actually has, and stay clearly a wellness companion rather than a medical device.
Technical Challenges
- ✓Birth-type gating — exercise categories open on different weeks after a vaginal birth and a caesarean (pelvic floor at week two vs four, strength at three vs six, core at eight vs twelve), so the plan moves on thresholds, not on streaks.
- ✓Energy-sized sessions — a two-question morning check-in (mood and energy) resizes that day's session; an exhausted answer cuts it to about 70% of its length instead of cancelling it.
- ✓One source of truth across platforms — the website and the Android app share one exercise library and one set of week gates, so a guide on the web can name the exact week a movement opens.
- ✓One entitlement, three sources — Android purchases go through RevenueCat, web checkout through Paddle, and referrals grant Premium too; webhooks mirror all three into one Firestore subscription record that both platforms read.
- ✓Localisation at two depths — the app ships in ten languages; the public website publishes six with hreflang, and the four extra languages exist only behind sign-in so every page keeps one URL per language.
- ✓Responsible health content — every recovery guide lists its sources (ACOG, NHS, Cleveland Clinic) and says plainly when something needs a call to a midwife or doctor rather than a read.
Architecture & Evolution
The Flutter app uses a feature-first structure — onboarding, check-in, workout, timeline, journal, learn, premium and referral — with Riverpod for state, GoRouter for navigation, and separate data, domain and presentation layers. Firebase provides authentication, Firestore, Analytics, Crashlytics and push notifications.
The core loop is Today → Recommendation → Workout → Feedback → Adaptation. The morning check-in feeds the recommendation, a guided workout player runs the session, and rep targets step up after the fourth and tenth completed sessions.
The Next.js website is more than a marketing site. Its public side carries the recovery guides, a week-by-week recovery hub and the blog; behind sign-in it runs the same product as the app (today's plan, workouts, check-ins, journal), with Paddle checkout and a RevenueCat webhook keeping subscriptions in sync with Android.
The Solution
A Flutter Android app and a Next.js web app on one Firebase backend. The plan is built from birth type and weeks since birth, then sized each morning by the mother's own check-in. Premium is sold through RevenueCat on Android and Paddle on the web, and both write to the same Firestore subscription record, so a purchase on one platform unlocks the other. The public website ranks for postpartum recovery questions with sourced, week-specific guides and sends readers into the app.
Tech Stack
Key Features
Screenshots










Deployment
Web — Next.js deployed on Vercel at matrabloom.online
Android — Google Play Store
iOS — waitlist open
Subscription webhooks from RevenueCat and Paddle write to Firestore, so entitlement changes reach both platforms even when the app is closed.
Lessons Learned
- →Specific thresholds beat vague encouragement — naming the week a movement opens after a specific kind of birth is more useful than "listen to your body", and it forces the content and the app to agree.
- →Sharing one exercise library between the app and the website kept the published guides and the in-app plan from drifting apart.
- →Designing for exhaustion matters — the default response to a low-energy morning is a shorter session, not a skipped one.
- →When a product sells on more than one platform, entitlements need one server-side record that every payment source writes to; client-side mirroring alone misses renewals and refunds that happen while the app is closed.
Outcome
Launched the MatraBloom website at matrabloom.online in six languages.
Launched the Android app on Google Play in ten languages.
Delivered a free tier and a Premium subscription that works across Android and the web.
Built a recovery content hub of sourced, week-by-week postpartum guides.
Services used in this project
Other Case Studies
Read the Blog
Technical articles on SaaS development, MVP strategy, mobile apps, and SEO — written while building real products.
Visit the blog →Like what you see?
I am available for freelance work. Tell me about your project and I will get back to you within 4 hours with an honest assessment.




