Get in touch
All work

Case study · Health

Sleep Station

The sleep app that joins up the four things you already do at night. Track it, listen to it, wake at the right moment, and catch the dream before it goes.

Solo build. iOS and Android, one codebase, one backend. Researched, designed, built and shipped by me.

Client
Personal project
Role
Research, product design, engineering and copy. All of it.
  • Expo
  • React Native
  • TypeScript
  • Supabase
  • On-device audio

The dream you can’t get back

It is 6:48 on a Wednesday and I am awake with an entire dream still intact. A harbour, a house I have not lived in for twenty years, and the specific feeling of the whole thing.

I reach for my phone to write it down. By the time I have unlocked it and found Notes, I have three words and the sense that there used to be a lot more.

Ten minutes later I am making coffee and it is gone. Not fuzzy. Gone.

That is the moment this started. Not a gap in a market. Just a thing that had happened to me a couple of hundred times.

Three things that bothered me every night

Once I looked properly, the sleep aisle had the same shape as my nightstand.

  1. Everything measured, nothing intervened. Every app I tried was excellent at telling me I had slept badly and had nothing to say about what to do tonight. For someone busy and already anxious about it, that is not neutral, it is worse. There is a name for it. Orthosomnia, sleep anxiety caused by sleep tracking.

  2. Nothing existed for 3am. Every feature in every app lives either before sleep or after it. The one moment you genuinely want your phone, awake at 3am and losing, is the moment the software is empty.

  3. The alarm and the journal had never met. Dream recall is far higher when you wake near the end of REM. Sleep apps have estimated REM for a decade, dream journals have existed for years, and nobody had connected the two, because nobody had built both.

I was neglecting my sleep and losing dreams I wanted to keep. Those turned out to be the same problem.

Screen to come

The empty 3am screen every other app leaves you with

The one hour you want your phone is the one hour nobody had built for

Sleep Station is one loop. Wind down, track, wake at the right moment, capture, understand, and plan tonight.

Tag

Three taps before bed. Caffeine, alcohol, late screen.

Tag → Track → Wake → Capture → Story → Plan → tag again

  1. Tag. Three taps before bed. Caffeine, alcohol, late screen.
  2. Track. The phone tracks and listens, with Can’t Sleep mode one tap away at 3am.
  3. Wake. The alarm finds your lightest sleep inside a window instead of firing at a number.
  4. Capture. On Dream Recall nights it aims just past REM and opens a recorder before you are properly awake.
  5. Story. One screen. Seven hours twelve, snored twenty two minutes, woke in light sleep at 6:48.
  6. Plan. A bedtime for tonight, which is where the next night starts.

The night, end to end

You tag the night before it starts. Three taps: caffeine, alcohol, late screen. Then the phone tracks and listens.

If you wake at 3am there is a Can’t Sleep mode one tap away. Red shifted, a breathing pacer, a box to dump the worry that woke you, and the clock hidden, because clock watching measurably makes it worse and nobody else was willing to take the time away.

Then the alarm finds your lightest sleep inside a window instead of firing at a number. On Dream Recall nights it does the opposite on purpose, aiming just past REM and dropping you into a voice recorder before you are properly awake.

You talk. It transcribes. Thirty seconds later you get one screen that tells the story of the night. Seven hours twelve, snored twenty two minutes around 2am, woke in light sleep at 6:48, dream logged. Then a bedtime for tonight.

That last part is the whole product. The measuring is the easy half.

What it turned into

Five sections. Today is the morning story, and after lunch an energy forecast and a caffeine cutoff, so it earns a place in the daytime too.

Sleep is the analytics: hypnograms, snore clips you can play, and correlations once there is enough data to be honest about them. Alarm is the trust surface. Dreams is the journal, plus the part I built this for, recurring themes surfacing across months. Sounds is eight of them, not three hundred.

Underneath it, one rule I wrote down early and never broke. No streaks, no red, no failing grades, no guilt for a missing night. An app that makes you anxious about sleep damages the thing it is selling.

Screen to come

The night view, tracking without asking anything of you

Screen to come

The dream capture screen, open before the memory goes

The two halves of it: what the night did to you, and what your dreams keep returning to

Building it

Expo and React Native, one codebase across iOS and Android, with Supabase holding the auth, the sync and the row level security. AI coding assistants did the typing while I did the deciding, which is the only reason a marketer shipped a product instead of a deck about one.

The interesting problems were never the interface.

You are recording someone’s bedroom, all night, every night. So the audio never leaves the phone. Analysis runs on device, only flagged episodes are kept as clips, the rest is discarded as it is processed, and retention has a default that assumes nobody ever opens the setting. It was the harder build and the only version I was willing to ship.

The alarm has to fire. Not usually. Always. iOS background execution and Android’s Doze are two different problems with two different answers, and getting either wrong means somebody misses a flight. So there is a hard backstop behind the smart alarm, a screen that lets you test it, and a promise on setup I had to be able to keep.

And never sell an estimate as a fact. Phone based staging is rough, so weak nights carry a confidence marker, the score is always tappable through to what drove it, and the snore screen describes what it heard and never suggests what it means. Detect and describe, never diagnose. That one line settled the copy, the App Store category and the liability at once.

The dream analysis works the same way. It surfaces themes and emotional tone and asks you a question. It never tells you what a dream means, because it cannot.

The business model has the same shape. Your own nights stay free, the depth is the subscription, and the paywall carries no fake countdown, because trust is the entire brand.

Screen to come

The on device notice: heard, analysed, discarded as it goes

Everything the microphone hears is analysed on the phone and discarded as it goes

What I would do differently

Phone based staging is an estimate and I have nothing to check it against. A phone on a mattress infers stages from movement and sound, and short of a sleep lab I cannot tell you how close it lands. That is why weak nights carry a confidence marker, and it is why I would not defend a single night’s hypnogram as fact. Before claiming accuracy anywhere in the marketing I would run it beside a wearable for a month and publish the disagreement.

Keeping the audio on the phone was the right call and it cost me the thing everyone else has. Nothing leaves the device, so nothing accumulates centrally, so the snore detection cannot get better from other people’s nights. I would make the same choice again. It is worth saying that it was a choice, and what it bought and what it gave up.

And there are no usage numbers on this page. Nothing here has a baseline, a period and a source behind it yet, so this one argues from decisions rather than from results, which is the honest way round for a product this young.

What I took from it

I started this tired, losing dreams I wanted to keep. I finished it having made real calls about on device processing, background execution on two operating systems, audio retention and health claims.

The most useful thing I learned was not technical. It was that measurement is the easy half of a product and the smaller half of the value. Anyone can show you a number. The work is knowing what to do with it, and being disciplined enough to say nothing when you do not know.

Screen to come

6:48, woken in light sleep, the dream still on screen

6:48, awake in light sleep, and the dream still there