Back to home
Daily · 2026 An app that ends

An app you can finish

One good thing a day, then a door that closes. A self-directed thesis on designing for attention you give back. The conviction underneath it: the most valuable thing software can offer a tired person is a clear place to stop.

Product designer & strategist
Role
Thesis → spec → prototype
Scope
2026 · iOS
Year
DailyTuesday, June 25

One small thing a day, then you're done.

A note written for you. No feed, nothing to scroll.

When you've read it, the app gets out of your way.

archive concepts · three ways to keep your notes

The cover, and three explorations for keeping the year. The archive is reflection only, never a new note.

Every product I admire as a craftsman, I distrust as a user.

They are built to hold attention, and they are very good at it. In May 2023 the U.S. Surgeon General issued an 81-page advisory naming loneliness a public health epidemic, putting its mortality risk on par with smoking up to fifteen cigarettes a day. The same report points a finger at the tools meant to connect us: people on social platforms two or more hours a day were over twice as likely to report feeling isolated. We are more reachable than ever and lonelier for it.

The mechanism is not a mystery. The feed has no last page on purpose. It runs on variable reward, the same on-and-off schedule that makes a slot machine hard to walk away from, because a session that never resolves is a session that never ends. The business is measured in time captured, so the design optimizes for time captured.

The brief I set myself was the inversion of that. Design something genuinely worth opening that is also, by its very build, impossible to binge. A product whose central promise is that you can leave.

How do you design a thing whose best feature is that it ends?

Success is not time spent. It is time respected.

You open Daily, tap a few words for how you feel, and receive one note written for you: a short affirmation grounded in what you chose, a verified fact, and sometimes a book worth reading. You read it. You are done until tomorrow. No feed, no second helping, no way to refresh your way into a fifth note.

The scarcity is the thing being sold. Capping the experience at one note a day is what lets each note be aimed instead of optimized. Better aim, not more notes. Everything else follows from that one inversion. It is why the constraints below are written as system rules rather than preferences, and why the hardest engineering went into making the boundary real rather than the loop tighter.

An app with an ending dies by a thousand reasonable optimizations.

The defense is to write the boundary down and treat any violation as a bug, even a profitable one. The constraints below are load-bearing. Above all of them sits one rule that governs every other decision.

The keystone rule

Memory makes the moment fitting. It never makes the app sticky.

Memory exists for one job: to make today's note land a little closer to home. It tunes the single note. It never adds a second one, never pings you to come back, never unlocks "more." The instant the algorithm starts pointing at frequency instead of fit, the product becomes the machine it was built against. This rule sits above every other decision.

One a day, enforced

One meaningful note per day, and the finished state is enforced server-side. You cannot binge it even if you want to.

Reflect, don't enforce

Show someone their run of days as celebration. Give it a flame, a count, a thing to defend, and it becomes coercion. No streaks.

One delivery, zero win-back

The app may notify once, at a time the user chose. After a miss there is only silence. The "we miss you" pipe is never built.

Charge for permanence, not promises

Premium adds something genuinely yours: kept notes, deeper reflection, sync. Never the timing of a thing already promised.

Anonymity that still remembers

Others can never trace a recommendation back to you. The system still credits you for making it. Both at once, on purpose.

Witness, not verdict

A feeling reflected back as a bare number is cold. The same number in a kind voice is company. Never aggregate a feeling without a voice around it.

Growth is three rungs, each earning the next.

The riskiest capability is gated behind the most earned trust instead of bolted on and moderated later. Books stand in as a low-stakes proxy for shared humanity, and a person can stop at any rung.

I

Consume Phase 1

Receive your daily note. No account, memory kept on-device, fully anonymous. For most people this is the entire product, and it stands completely on its own.

II

Contribute Phase 1

Pass a note along to people who feel the way you did: "this helped, send it to people like me." Tied to a feeling, never a clinical label. It carries no likes and no public clout, which is exactly what makes it an honest signal of what actually helped. It is also the first and only moment the product asks for an account, exactly when the user wants the thing it unlocks.

III

Connect Phase 2 · deferred

Meet people nearby who share your sensibilities, matched on affinity and reading rather than appearance. Named now, built later, and deferred honestly. It carries the real risks (age verification, location safety, moderation, the platonic-versus-dating question), and it needs a local density of users that does not yet exist. Standing accrues toward it from day one, so the reputation graph is already seeded when it ships.

Why merit-gating, not pay-gating. You cannot buy into the meeting pool. You earn standing by being useful over time, and because the app is capped at one note a day, standing is capped at one unit a day. It cannot be farmed. The daily cap quietly handles most of the abuse problem that would otherwise need a moderation team.

Designing the door that closes.

The hardest interface problem in the product: how do you build a screen whose job is to tell the user, warmly, to leave? When the note is read, the interface strips itself down. Navigation, choices, anything tappable, all gone. What remains is a still, warm visual and a rolling countdown set in even-width figures so the digits never jitter.

It is the visual equivalent of a closed door, and the closed door is the point. By making it effortless to leave, I make it safe to arrive. A person who knows a thing will release them is far more willing to let it in.

You have been seen today. Now put the phone down.

You're done for today.

No feed waiting, nothing to refresh.

Next note in
14:22:08

The Finished State, the signature screen, recreated live. A real ending rendered as a calm dawn.

Enforce the values in the data model, not in discipline.

A principle that lives only in a doc gets optimized away under pressure. So the two rules most likely to break, anonymity and the Memory Rule, are enforced by how the data is shaped. A single recommendation tap produces two separate writes, and they never touch:

Collective signal

Fully anonymized: [fact ID] + [context chip] + weight. This is all other users and the matching engine ever see. No user ID, no affirmation, nothing that resolves to a person.

Private ledger

Keyed to you, server-side, never exposed to anyone else. It powers your standing and your year-in-review. The system remembers you contributed; no one else can find out.

The same thinking governs everything sensitive. There is no streak counter and no streak-break job, so there is nothing to defend and nothing the system can threaten you with losing. There is no way to win a lapsed user back, because that pipeline is simply never built, and you cannot misuse a tool that does not exist. And the decision to unlock the next note is always made by the server against its own clock, never by the phone reading a clock the user could change. The boundary is built in, not just promised.

A flat engagement curve is the proof the product works.

Pitching an app that limits screen time means redefining what a good number looks like. Daily active use is lifted legitimately by the one scheduled note. But DAU alone invites pressure to make the notification work harder, so it never travels without its honesty metric beside it:

≈ 1  target

Opens per active userShould sit near one and stay there. If engaged users open four times a day, the product is broken and the DAU is lying.

< 60s

Task successThe user reads their note and exits, in under a minute. Success is measured by their leaving, not their staying.

The revenue model keeps the same promise. The spine is a subscription that charges for permanence and depth (kept notes, deeper reflection, syncing across devices), but never for timing and never for connection. Choosing when your note arrives is free for everyone, because charging for that would be charging for basic respect. Book links are honest, labeled, occasional, and always offer the local shop beside the fast one.

A year you didn't have to perform.

Because Daily never grabs, the little it gathers over a year feels earned rather than extracted. The year-in-review is the opposite of a cold recap of hours spent. It is written with deliberate care: how your feelings moved across the seasons, the anonymous strangers your recommendations reached, the books that traveled furthest through people who felt exactly the way you did. The harder the stretch the data shows, the warmer the framing around it. "Top feeling: worn out" is a verdict. "It was a worn-out season, and you showed up for it anyway" is company. Same data, opposite effect, and only one of them is worth keeping.

Daily is a small argument that something useful does not have to be endless.

Every token serves one of two feelings: calm, and finished.

The system is small on purpose. A calm app earns trust by restraint, so the design holds back rather than reaches: a soft dawn palette, a serif rationed for the words that matter, and one accent at a time.

Color

Ink
#26303B
Primary text & button
Muted
#6B7682
Secondary text
Faint
#97A0AA
Captions, metadata
Paper
#FBFAF7
Card surface
Line
#E7E3DA
Borders, dividers
Indigo
#51609F
Private / affirmation
Indigo soft
#EEF0F8
Soft fills & buttons
Ochre
#A8783A
Fact / learn moment
Green
#4F7A5B
Local / contribute
Dawn
warm → cool
The morning you open into

Typography · Spectral rationed, Hanken Grotesk everywhere else

You showed up 187 mornings.
Display · Spectral 600 · year-in-review numbers
Tired is information, not a verdict.
Affirmation · Spectral 500 · 26px / 1.34 · the centerpiece
The first recorded computer bug was an actual moth, found in 1947.
Fact · Spectral 400 · 17px / 1.5
Tap whatever fits this morning. It shapes one note written for you.
Body · Hanken Grotesk 400 · 15px
Just for you
Eyebrow · Hanken Grotesk 700 · 11px · 0.16em · uppercase

Component kit

Buttons · primary for the one action, soft for the social gesture
Context chips · multi-select, indigo when chosen
Source pill · grounding turned into a trust signal
Wikipedia · Software bug
Buy pair · convenient and local, honestly labeled
Standing strip · earned reputation, capped at one a day
Trusted neighbor
18 / 25
Helpful recommendations build standing over time.
Countdown · tabular figures so it never jitters
14:22:08

Related work