Inspiration
I became a father recently, and Conta Fraldas is the kind of app I would have loved to have: one easy place to log the baby's day and learn about everything that comes with having a baby. A lot of what's in it I learned the hard way, searching and asking around.
The pediatrician, the obstetrician and your partner keep asking the same things. How many diapers today? How much did the baby eat, how long did they sleep, how much have they grown? When is the next appointment, and which tests are due this trimester? Most of those answers end up scattered across notes, photos and memory. The information you need to make sense of them tends to arrive all at once, from feeds and forums, usually when you're too tired to read it, and often it makes you more anxious rather than less.
Conta Fraldas ("Diaper Counts" in English) is built on two ideas. The first is measuring things: cycle, pregnancy weeks, diapers, feeds, sleep, growth, fever and medicine, appointments and tests, in one place, quick enough to log half-asleep and ready to show at the next check-up. The second is knowledge in small, spaced doses: one short lesson at a time, picked for the cycle day, the pregnancy week or the baby's age, so you learn what's relevant now instead of everything at once. The app starts before there's a baby, for people planning to have children, follows the pregnancy week by week and keeps going through the first years. We want it to be worth opening at every stage, with always something to log and something new to read.
What it does
Conta Fraldas is for parents and parents-to-be, from trying to conceive through pregnancy and the baby's first years. Its main goal is to give people the information they need without adding to their anxiety. Deciding to have a baby is a lot to take in, so the app hands the information out slowly, next to logging that's fast enough to do with a baby in one arm.
The app has three modes, each with its own little mascot, and it moves with you from one to the next.
- Planning (the cloud). Track the cycle, the fertile window and the estimated ovulation, and share it with your partner if you want to. Short lessons cover the habits that help you get ready, like cutting back on caffeine or getting in shape. They don't promise better odds, only good preparation.
- Pregnancy (the grapes, because that's roughly what the baby looks like at first). The baby's size as a fruit of the week, and a trail of what's happening inside the body, released week by week as you reach it. The baby kit lists the essentials that actually count, what to look for before buying, and what not to buy (with safe sleep first). For the last weeks there's a kick counter, a contraction timer, a birth plan you can share with your doctor, the hospital bag checklist and supplement reminders.
- Baby (the little face). One-tap logging of diapers, feeds and sleep, plus growth (weight, height, head), medicines with reminders, appointments and soothing sounds. The journey shows what babies usually do each month, with simple things to do together and the signs worth raising with the pediatrician, so parents can act early. It keeps going until age five.
How it keeps you coming back
- The daily letter. A short lesson arrives as a notification at the time you choose, picked for where you are. A day you didn't open doesn't disappear and there's no streak to break: the lesson waits for you.
- Home-screen widgets for each mode, so the cycle day, the pregnancy week or the baby's last diaper are one glance away even when you forget to open the app.
- Guides by topic in the Read tab that stay available whenever you need to look something up.
Memories
Babies change every week, and the app has room to keep those moments: photos turned into memory cards with ready-made templates, kept along the baby's path, a gentle recap on each month-birthday, and an album you can export as a PDF and print as a small book.
Together, and private
- It works offline and needs no account to use alone. Entries stay on the phone, with no ads and no tracking.
- Partner sync (Conta Fraldas +): invite your partner with a link, a 7-character code or a QR code. Whoever accepts sees everything logged so far, and new entries show up on both phones with the name of who logged them. One subscription covers the shared baby, so the partner doesn't pay. Signing in is only needed for this.
- The cycle is shared only if the person who logs it turns that on.
- Portuguese, English and Spanish.
The free version covers diapers, feeding, sleep, growth, pregnancy, planning and the daily lesson. Conta Fraldas + (monthly, or annual with a 3-day free trial) adds partner sync, more than one baby or pregnancy, a PDF report for the pediatrician and home-screen widgets.
How we built it
- Kotlin Multiplatform for everything that is not pixels: presenters (Molecule), models, the event log, the sync engine and the RevenueCat layer live in shared Kotlin. The UI is fully native on both sides: Jetpack Compose on Android and SwiftUI on iOS, both rendering the same shared Model.
- RevenueCat via purchases-kmp, behind our own EntitlementService / PurchaseService interfaces. One entitlement (plus), one offering with monthly and annual packages, on both the App Store and Google Play. The paywall is custom (Compose + SwiftUI), reads prices from the SDK offerings, and opens from different origins (onboarding, adding a second baby, inviting the partner) with copy that matches the moment. It's a soft paywall: most of the app stays usable without paying.
- Backend: Node + Express 5 + tRPC 11 + Drizzle + Postgres, deployed on Railway, with Firebase Auth (native Sign in with Apple on iOS, Google on Android). The app calls Purchases.logIn with our user id, and a RevenueCat webhook (Authorization header + HMAC signature check) tells the server a plan changed; the server then re-reads GET /v1/subscribers as the source of truth, so partner sync is unlocked or paused server-side. A baby has Plus when any current member has the entitlement.
- Sync: an append-only event log per baby, with deterministic merge by Lamport clock and author, tombstones, duplicate-feed detection ("Looks like the same feed: same one / two feeds") and an offline queue that drains when the network returns.
- Lessons and reminders: the letters and reminders are scheduled locally as notifications, so they work offline and arrive at the time each person picks.
- Website + invite links: a Cloudflare Worker serves contafraldas.app and the invite deep links.
Challenges we ran into
- Webhook vs. first purchase race. Right after buying, the first invite can reach the server before RevenueCat's webhook does. The server's Plus gate now asks RevenueCat on demand (rate-limited per person) before refusing, and the app never loops the user back into the paywall when the device has Plus but the server has not caught up.
- When the plan ends. Losing Plus must never lose data: sync pauses only for that baby, local data and the queue are kept, both partners see a calm "Sync paused" screen, and server-side data is kept for 90 days with reminders at 60 and 80.
- Restoring without an account. The app works account-free, so "Restore purchases" had to work for people with no account and no Plus, silently asking the store on Android.
- Sharing health-adjacent data honestly. The menstrual cycle is only shared with explicit consent, turning it off deletes it on the server and on the partner's phone, and a positive pregnancy test asks before telling the partner.
- Informing without scaring. Every lesson and milestone had to be useful without sounding alarming, and never a substitute for a health professional.
- Two native UIs, one brain. Keeping Compose and SwiftUI in step meant every screen is driven by the same shared presenter and state, tested once in Kotlin.
Accomplishments that we're proud of
- A real two-phone experience: the same baby day on both phones, with who logged what, working offline.
- A subscription that sells something concrete (being in sync with your partner) instead of locking basic logging, which stays free.
- Android and iOS from one Kotlin codebase with fully native UI, in Portuguese, English and Spanish.
- An app that welcomes new parents and couples who are planning to have a baby. We're proud to give them good information and a place to keep their memories.
- An app as complete as the established ones on the market, with its own way of presenting each feature.
What we learned
- Treat the store/RevenueCat as the source of truth and make the backend ask again instead of trusting a single event.
- Design the "subscription ended" path as carefully as the purchase path.
- Parents at 3 a.m. need fewer taps, bigger targets and no surprises.
- Defining an MVP for something you've just lived through is hard: however many features we add, it never feels like enough.
What's next for Conta Fraldas
- Public release on Google Play and the App Store (both are in review, with open betas on TestFlight and Google Play), native-speaker review of the English and Spanish copy, and more home-screen widgets.
- A YouTube channel to extend the lessons and grow the audience, and a second one with music for babies, a v2 of the in-app sounds.
- Sharing the baby kit: a page with the list that friends and family can open to pick something to give.
- Kit recommendations with affiliate links, only for things we actually used.
The content is for information only and does not replace advice from a health professional.
Built With
- cloudflare-workers
- drizzle
- express.js
- firebase
- jetpack-compose
- kotlin
- kotlin-multiplatform
- node.js
- postgresql
- railway
- revenuecat
- swift
- swiftui
- trpc
- typescript
Log in or sign up for Devpost to join the conversation.