Selected Work
Case study · 03 / 03

nocturnal-nights

Expo · Habit-building

Built with my partner for the people who mean to be asleep by midnight and end up scrolling until 2am. A nocturnal creature companion works for you while you sleep, and the longer you leave your phone alone, the more it earns you.

ExpoReact NativeZustand
nocturnal-nights welcome screen introducing your creature companion
RoleDuo — design & build
TypePersonal project
PlatformiOS · Android
StatusIn development
01

Overview

Forest, but for bedtime.

So many people struggle to switch off at night. You pick up your phone for a minute and it's 2am, and you're due up at 7. We wanted to build something that locks you out from a bedtime you choose, the same idea as the app Forest, but built around sleep instead of focus.

The incentive is a nocturnal creature companion who works on your behalf while you sleep. The less you interrupt them, the more they earn you, rewards you can spend on decorating their den, buying them items, or protecting your streak.

02

The problem

Willpower alone doesn't keep people off their phones at night. We wanted a system that makes staying off your phone feel like it's doing something for you, rather than just another rule you're trying to follow.

03

My role

A duo project with my partner: she's designing and illustrating the creature and world, I'm designing the product and building it.

Product design & UX
React Native / Expo build
Onboarding flow & state management
Sleep session tracking
04

How it works

nocturnal-nights sleep screen with the phone locked for the night

A bedtime that locks you out

Set the time you want to be off your phone, and the app shuts you out from there, the core mechanic the whole experience is built around.

nocturnal-nights onboarding to name and meet your creature

A companion that works while you sleep

Name and meet your creature during onboarding. The longer you leave your phone alone overnight, the more they earn for you.

nocturnal-nights den screen for spending rewards

Rewards worth staying off for

Spend what your companion earns on decorating their den, new items, and streak freezes for the nights that go wrong.

05

Stack & architecture

Client
ExpoReact NativeExpo Router
State
ZustandAsyncStorage
Design
Custom illustrationGradient-based theming

Onboarding and sleep preferences run through a Zustand store with AsyncStorage persistence, so the wizard, dashboard and sleep sessions all stay in sync without reloading state from scratch.

06

What I learned

The mechanic that actually changes behaviour, locking the phone out, turned out to be the hardest and most important part to get right, just as hard as the reward layer sitting on top of it.