Matea Raić — Portfolio, 2026 Open to roles
← All work

Zorya

A privacy-first pregnancy tracker for iOS. Built and owned by me, solo: from the first research question to the App Store and everything after it.

Project
Own product, iOS, 2026
Role
Founder and product designer
Team
Solo. No design manager, researcher or engineer
Platform
iOS, React Native and Expo
Status
Live on the App Store

Held directly

  • Research
  • Product strategy
  • Pricing
  • UX and flows
  • UI and design system
  • Copy
  • Device QA
  • App Store and ASO
  • Website

Directed

Engineering execution. Directed through an AI coding agent (Claude Code). I wrote the specs, made the product decisions and reviewed every change before release.

Three Zorya screens: Today at week 28, Journeys with the current pregnancy, and History

5.0

App Store rating, from 5 ratings

71

First-time downloads, no paid ads

53

Mothers surveyed before design started

2

Languages, English and Croatian

The apps holding the most sensitive data had the worst record.

I was pregnant with my second child and using pregnancy apps every day. They hold weight, symptoms, blood pressure and due dates. When I checked, the largest apps in the category all had public privacy cases.

Flo

Settled with the US Federal Trade Commission over sharing health data with third parties.

Glow

Settled with the California Attorney General over privacy and security failures.

Ovia

Reported for sharing aggregated pregnancy data with employers.

A survey of 53 mothers.

Run on Prolific and screened for mothers. It was affordable for a solo project and reached people outside my own network.

96%

had used an app with a documented privacy violation

70%

rated local-only storage as extremely important

FindingResponse
Using a separate app to time contractions
Contraction timer with 5-1-1 detection
Content locked to the current week
Browse weeks: all 40 are open
US-focused apps miss European care context
Croatian localization and local context
Interest in community features
Planned outside the app, so no server is needed

Two product principles, used as criteria.

Principle 1

Local only

All data stays on the device. There is no server, account or sync, so there is nothing to breach or hand over.

Excludes: accounts, cloud sync, analytics SDKs, live content

Principle 2

Mirror, not doctor

The app shows what a person logged. It does not interpret, score, flag or predict.

Excludes: risk scores, diagnosis, predictive nudges, AI health advice

Features I left out

Bump photo gallery
Moves the app toward photo storage
In-app community
Needs a server and accounts
Appointment scheduler
Moves the app toward a shared calendar
Mood tracking
Leads to scoring emotional state
Live content feed
Would change the privacy label. Content ships bundled
AI postpartum companion
Clinical territory at a vulnerable time

Calm daily use, with tools that appear when they're needed.

Kick count opens from week 27 and the labor tools from week 36, so the app never shows features before they make sense. The kick counter is a full-screen tap target, usable one-handed without looking closely.

Today screen: week 28, weekly note, trimester bar, kick count and quick log
Today

Week counter with a short weekly note, trimester bar, kick count and quick log.

Journeys screen: current pregnancy with week and due date
Journeys

Current pregnancy with week, due date and log count. Earlier pregnancies are archived below.

History screen: entries filtered by type
History

Every entry in one list, filtered by type. No scores or trends are added on top.

Privacy and support in the interface

Local only badge

The same header on every tab, as a constant reminder of where the data is kept.

Support Zorya

Always visible, never a popup or a prompt.

Export and delete

In Settings, the user can export all data or delete it.

Review prompt

Shown only after three or more entries.

One theme file. No hardcoded values.

AubergineHeadings, buttons
BerryLinks, status
PinkIcon tiles, pills
CreamBackground
LavenderHeader gradient
PurpleTrimester bar
  • Hanken Grotesk, one family
  • Defined in Claude Design
  • One primary action per screen
  • Gradient only behind the header

A designer directing an AI coding agent, one brief at a time.

  1. Frame

    Check the idea against both principles.

  2. Design

    Started in Figma, finalised in Claude Design.

  3. Brief

    A written build brief with fixed constraints.

  4. Build

    The AI coding agent implements one brief at a time.

  5. Review

    Test on a device and compare with the design.

  6. Ship

    Production build and App Store submission.

Constraints in every brief

  • Read the project rules file first
  • Theme tokens only
  • No new dependencies
  • No network calls
  • Small, targeted changes

I am a designer, not an engineer. I wrote the specs, made the product decisions and reviewed every change before release.

The architecture follows the first principle: the app and a SQLite database live on the phone, export and delete are controlled by the user, and there is no server, account or sync. The App Store privacy label reads Data Not Collected. Anything that collects data, like the user survey, is hosted outside the app, and content ships with each release instead of being fetched live.

The paywall asked for money before the features people came for.

Before

Paywall

A 28-day trial, then a one-time lifetime pass. Conversion was low. The trial ended long before the kick counter (week 27) and contraction timer (week 36) became available.

After

Tip jar

A free app. Three optional tips of about €5, €15 and €25. Nothing is locked or unlocked, and every tier leads to the same thank-you screen.

How I decided

There was no funnel data to analyse. I separated two possible causes, the idea of paying and the timing of the request, and checked the timing against the pregnancy timeline. One constraint came out of it: no payment prompts near the end of pregnancy.

Growing without paid acquisition.

App Store

Subtitle "Private. Local. No cloud." Keywords and screenshot captions written for search.

Website

A bilingual English and Croatian site. Analytics run on the site, not in the app.

Articles

Ten articles a month across five topics. Drafted with AI, each one reviewed by me before publishing.

Channels

LinkedIn, Instagram, Reddit and Product Hunt, with founder disclosure.

App Store Connect, 26 June to 23 September 2026

6.64K

Impressions

301

Product page views

71

First-time downloads

1 in 4

About 1 in 4 product page visitors download the app

Daily impressions grew from under 50 in early July to around 100 or more most days in September, with no paid acquisition.

5 ratings, all five stars.

"No account, no ads, everything stays on my phone."

App Store review — United States

"Easy to navigate UI and extremely intuitive to use."

App Store review — Sweden

"Clean, calm design and simple to use. Really appreciate the local only approach."

App Store review — Netherlands

"Since day one I have been a bit anxious. This app is really helping me."

App Store review — Canada

Revisiting my own decisions.

The paywall and the AI companion were both my own ideas that I later changed or dropped. Checking decisions against the two principles, instead of reopening them each time, kept the product consistent. A rules file and project docs hold the constraints, so they don't depend on my memory. I moved fast on the core build and slower on pricing and postpartum, where mistakes affect trust.

What I would change

Check pricing timing before launch

Mapping the payment request against the pregnancy timeline would have shown the problem earlier.

What I would change

Set up feedback from day one

Without analytics, an external survey is the main source of input. It should have shipped with version one.

Next

  • Android from the same codebase
  • Home screen widgets using local data
  • Period and postpartum apps as a suite
  • On-device AI, only if data stays on the phone
getzorya.app ↗
Next case study

Smarter Product Discovery →