Anya Ngay mascot

Live on iOS & Android

Anya Ngay

A twenty-second mood check-in for the people who answer “okay lang” on reflex.

Role

Product design — end to end

Scope

Product · design system · iOS & Android app

Type

Self-initiated · shipped

Year

2026

Overview

The people who most need to pause are the ones who never ask.

Anya Ngay names a feeling in the language its user actually speaks — and is explicit that it offers awareness, not treatment. I designed, built and shipped it solo. It is live on the App Store and Google Play.

47

Days, first decision to both stores

643

Commits across four repos

37

Locked decisions

111

Ilokano strings read by a native speaker

What this proves

Evidence

The usability test failed my own design.

A flow I was confident in finished 2 of 12 times — and testers rated it the easiest of the three. Confidence while going the wrong way is the most expensive failure to find late.

Integrity

I dropped a claim the research killed.

The six mood shapes were presented as drawing on Cordillera visual culture. A deep research pass found no documented motif carries an emotional meaning — so the claim went, and the artwork stayed.

Shipping

I designed it, built it, and shipped it.

Solo, from first decision to live on the App Store and Google Play in 47 days — then 1.0 to 1.5 in the month after launch.

Research · Product · Design system · Prototyping · Localization

01 · Discover · Define · Design

Clinical feels like overkill. Journalling loses to a packed schedule.

High-functioning people mask stress until it surfaces as burnout. What exists is either too clinical to identify with, or too effortful to sustain — and for an Ilokano speaker, English-first as well.

The wedge: non-clinical, low-effort, in-language. Awareness, not treatment.

Localisation is copyable — any competitor can translate a string file. The register is not: the way a kabsat actually asks how you are.

Twenty-eight decisions are logged with their reasoning. These six carried the most weight.

D1 · Local-first, account optional

No required signup in the first version. It removes first-run friction and makes “your data is yours” literal rather than a line in a policy.

D20 · Voice is 50% English, 30% Tagalog, 20% Ilokano

An earlier decision made Ilokano lead. Read back, it sounded like a textbook to bilingual users — so I flipped it. Ilokano stays potent precisely because it is the accent, not the whole dish.

D19 · Anonymous-minimal telemetry

Four content-free events, no session replay, no autocapture. Mood values, reflections and history never leave the device in any build.

D18 · Consent gate on test builds

Session replays are personal data. Recording testers without telling them would contradict the exact promise the product makes.

Emoji as a system

Hybrid by necessity. Vectors cannot do soft-3D shading, so hero emoji are 3D renders and the small system set stays outlined vector, with strokes outlined to fills so they scale at any size.

Grounded, not decorated

Eleven behavioural mechanisms — affect labelling, emotional granularity, self-determination, peak–end — mapped to concrete patterns, alongside an explicit list of dark patterns the product refuses to use.

02 · The product

Dark everywhere, except the one moment that matters

Dark-only by decision — the app is opened one-handed, at the edges of the day. The one exception is the check-in, which floods the screen with the colour of the mood you pick, so naming a feeling reads lighter than everything around it. These are the shipped screens.

Anya Ngay check-in screen, shipped app

Check-in

The one light moment — the screen takes the colour of the mood you pick

Anya Ngay home screen with month calendar, shipped app

Home

The month at a glance, and a count that only goes up — no streak to lose

Anya Ngay Rants screen, shipped app

Rants

Type or speak what is on your chest. It deletes itself in 24 hours

03 · Colour

One accent, held back

Mint is the only accent, so it always means the same thing: this is the thing to touch. Mood colour floods the screen on check-in, then recedes. Coral is reserved for destructive actions.

Page

#00201D

The base. Dark-only, by decision.

Raised

#005049

Cards and raised surfaces.

Mint

#39FCE9

The one accent. CTAs and highlights.

Tint

#B2EEE5

Muted text and quiet supporting copy.

Coral

#FC4039

Reserved — destructive only.

04 · Voice

Fifty English, thirty Tagalog, twenty Ilokano

I started with Ilokano leading every line. Read back it sounded like a textbook — this user thinks and texts in a mix. The ratio settled near 50 / 30 / 20: English carries the interface, Tagalog carries the sentence, Ilokano carries the relationship.

English · 50%

“How are you today, kabsat?” · “Let’s go nga dagus”

The neutral base. Interface verbs and anything technical stay in English — the way this user reads them.

Tagalog · 30%

“Walang tama o mali, kabsat.” · “Hindi iisang mood ang buwan mo.”

The connective tissue. The everyday register that carries the sentence.

Ilokano · 20%

“Anya ngay?” · “Naimbag nga aldaw!” · “kabsat”

The address, the greeting, the name-line. One or two beats a screen, never a paragraph.

05 · Deliver

Tokens, components, product

Three tiers plus a mood layer — 240 variables and 20 components, versioned to v0.9. The semantic tier is named for emotion rather than hue — Anxious, not Orange — so the mapping from feeling to colour lives in one place and changes without touching a screen.

1 · Primitives

117

Raw ramps — six mood hues plus mint and green. Never bound to a screen directly.

Color/Green/950 · Color/Mood/Coral/700

2 · Tokens

13

The numeric layer: radius, border width, scale.

Border-Radius/md = 16 · Border-Width/sm = 1

3 · Semantic

100

Role-named — and emotion-named for moods, never hue-named.

Surface/Page · Text/Muted · Mood/Anxious/Base

06 · Process

47 days from first decision to both stores

Solo, across four repositories and 643 commits. The design system and the product were built in separate contexts on purpose — one authors ANYA-DS, the other consumes it — so a gap found mid-screen went back as a token request instead of being hand-built. And it kept shipping after launch.

Jun 28

Decide and systemize

The first locked decisions and a three-tier design system in Figma. 37 decisions were on the record by launch.

Jul 20

Prototype and test

A coded, instrumented prototype. Fifteen real sessions caught a flow finishing 17% of the time.

Jul 22

Build the real app

One Expo and TypeScript codebase for iOS and Android. The first build reached Google Play testers three days later.

Aug 12

Ship

Live on the App Store on August 12, and on Google Play production on the 14th.

Aug 27

Keep shipping

Rants that delete themselves in 24 hours, every one of 111 Ilokano strings read by a native speaker, and home-screen widgets on both platforms.

The stack

Figma

Design system

Claude Design

Screens · emoji

Claude Code

The build

Notion

PRD · decisions

Expo · TypeScript

iOS + Android, one codebase

PostHog · Clarity

Instrumentation

Vercel

Prototype + website

Storybook

Live component workbench

07 · Validation

Two tasks passed. The third finished 17% of the time.

Fifteen real sessions, 439 tracked interactions, three timed tasks.

Task

Task

Started

Started

Completed

Completed

Median

Median

SEQ

SEQ

Setup

Setup

11

11

100%

100%

41.9s

41.9s

5.3

5.3

First check-in

First check-in

12

12

100%

100%

7.4s

7.4s

5.6

5.6

Data control

Data control

12

12

17%

17%

5.4s

5.4s

6.0

6.0

Changing what the app may keep finished twice in twelve attempts — and was rated the easiest of the three, at 6.0. People were confident while going the wrong way, which is the most expensive kind of failure to find late. 64% never scrolled home, and the first tap landed on settings half the time. The control was not hard to use. It was somewhere nobody looked.

08 · Reflection

The decision I reversed

The six mood shapes were originally presented as drawing on Cordillera visual culture. A deep research pass — 21 sources, 98 claims, 25 of them adversarially verified and 10 killed — found that no documented Cordillera motif carries an emotional meaning. Every recorded gloss is theological, agricultural, protective or status-bearing. Sun-as-happy was refuted outright. Worse for reuse, much of the vocabulary is rank-governed or earned, and using it without context is defined by Ifugao cultural authorities as irresponsible.

So I kept the artwork and dropped the claim. Sun-as-warmth and teardrop-as-sadness are near-universal, and the shapes still work — they simply are not heritage, and saying so would have been a nicer story than the truth. The limits of that finding are on the record too: it argues from an accessible-record silence, oral tradition was out of scope, and the consent question under IPRA remains unanswered. Genuine grounding would require community consultation, not a research pass.

What I would validate next

UI / UX

Re-test the flow the test broke

The data-control task finished 17% of the time, and 64% never scrolled Home — so everything below the fold is unproven rather than unpopular. Move the control to where the first tap already lands, then run the same three tasks again and compare.

Business

Retention is the whole bet

Mental-health apps sit near 3.3% median D30 retention, so the honest target is 4+ days a week among activated users, not everyone. The moat is the register, not the translation: a competitor can copy a string file, never the way a kabsat asks how you are.

Neuroscience

Affect labelling is the mechanic

Naming a feeling reduces its intensity — among the better-replicated findings in affective neuroscience. Eleven mechanisms map to concrete patterns, but the line between strong and merely suggestive evidence stays explicit. The product promises awareness, not treatment.

Marketing

Language choice is a demand signal

The test build logs which locale people switch to, which tells you where translation quality actually returns. Positioning as awareness rather than therapy also sidesteps the stigma that keeps this audience away from clinical apps — and away from the category’s usual playbook.

Resolved at launch: the app ships with the NCMH Crisis Hotline 1553 inside its awareness-not-treatment notice. It is still not a crisis tool — and it says so plainly.

menu

Create a free website with Framer, the website builder loved by startups, designers and agencies.