A pattern library for software that respects attention

Calm software is useful without being demanding. These patterns show what that looks like in practice—and what to avoid.

Defaults State vs. Feed Cheap Deviation Contextual Data Notifications Personality
Principle

Default over choice

If the user must choose every time, they carry the burden forever. Calm systems decide, then let the user correct.

Don't: Blank slate
Monday dinner
Select a meal...
Tuesday dinner
Select a meal...
Wednesday dinner
Select a meal...

0 of 7 planned

Do: Pre-filled defaults
Mon — Pasta with roasted tomatoesswap
Tue — Black bean tacosswap
Wed — Sheet pan chickenswap
Principle

State, not feed

Feeds create obligation—"I should check." Calm software shows state: what's true right now, what's decided, what needs attention.

Don't: Activity feed
2m ago — Your grocery list was updated
1h ago — New recipe suggestion: Thai Basil Chicken
3h ago — Reminder: plan tomorrow's meals
5h ago — Sarah shared her meal plan with you
yesterday — 12 more items...
Do: Current state
Tonight
Black bean tacos
Groceries
Everything's set for this week
Principle

Make deviation cheap and guilt-free

Reality wins. Swaps are expected. Skipping doesn't create red badges. "Not today" is normal, not failure.

Don't: Guilt and streaks
M
T
W
T
F
S
S

Streak broken! You missed Thursday. Start over?

Do: It's fine
Mon — Pastacooked
Tue — Tacoscooked
Wed — Stir-frycooked
Thu — Skippedordered in
Fri — Pizzatonight
Principle

Ask for data at the moment of pain

Upfront questionnaires are work. Calm systems earn personalization through contextual corrections.

Don't: Upfront interrogation

Let's get to know you! (Step 2 of 7)

Dietary restrictions
Select all that apply...
Spice tolerance
Choose level...
Cooking skill
Beginner / Intermediate / Expert
Step 2 of 7 • ~4 min remaining
Do: Learn from corrections

You swapped "Spicy Thai Basil Chicken"

Was that too spicy? I can avoid spicy dishes most nights.
Anti-pattern

Notifications are a last resort

A calm product should be safe to ignore. If it needs reminders to function, it's compensating for weak pull-value.

Don't: Notify for engagement
!
You haven't opened the app today. Your streak resets in 2 hours!
5
5 friends shared meal plans this week. Check them out!
!
Weekly digest: 47 things happened while you were away
Do: Notify only when it matters
Grocery list ready, whenever you need it.

That's it. Nothing else needs your attention.

Principle

Calm is not austere

Calm software can be playful, warm, even delightful. Weiser's Dangling String spins with network traffic—whimsical, then ambient. Something can demand attention temporarily and still be calm, as long as it recedes.

What calm software refuses

Engagement as north star
DAU/MAU metrics optimize for time captured, not time saved.
Streaks and nags
If your product needs a streak to retain people, it's not useful enough.
Infinite scroll
"Discovery" as default mode is a feed masquerading as a feature.
Preference dashboards
If the user must configure the system to make it usable, the defaults are wrong.
Guilt-driven empty states
"You haven't planned Tuesday" treats absence as failure.

The manifesto