Haven Docs

Buddy and streaks

Haven's mascot is Sam, a small plant. Sam is the emotional counterweight to everything else in the app: the blocking is a wall, and a wall alone is a miserable thing to live with.

Sam is drawn entirely in code — every stage, mood, cosmetic and animation is vector drawing on a canvas. There are no image assets.

Free. The buddy layer is not gated on a subscription, although some cosmetics are.

Design rules#

These are enforced throughout, and are worth stating because gamification in a recovery app can go badly wrong:

  • Nothing ever decays. Sam never gets hungry, never wilts, never looks sad at you. The plant only ever grows.
  • Nothing is ever taken away. There is no punishment mechanic anywhere.
  • Earning is capped, so it can never become a score chase.
  • Sam never influences protection. No blocking behaviour is gated on, sped up by, or slowed down by anything in this section.
  • No gambling language on Sam's surfaces. Especially not on the widget.

Treats and growth#

A small on-device care economy. Treats are earned at desired-behaviour moments:

MomentCap
Simply opening the app todayOnce per day
Haven quietly keeping something away — a fresh blockA few per day, and only for recent blocks
Finishing a rest exerciseA small daily allowance, shared across the whole rest library

Feeding a treat to Sam grows his sprout through four stages: sprout → leaf → bud → bloom. Growth is permanent and lifetime-based, so it survives any gap. Playing with Sam deepens the bond directly, without a treat, so a day with an empty jar can still be a caring day.

The block-reward has a recency window and a daily cap for honest reasons. A months-old block from before the feature existed should not greet a returning user with "Haven just caught something"; and one noisy blocked domain retrying every few seconds in a background tab must not mint an endless stream of treats.

Sam has moods — calm, contented, sleepy, happy, curious — and never a negative one. He can be tapped, he has a rotating daily thought, and he can perform a one-off trick on demand.

The streak#

The streak counts days the app was opened while signed in. It advances once per UTC day and is owned by the server, so it survives a reinstall or a new phone.

Because it is server-owned, it needs an account. Without one — or without a network — the streak simply stays dark and the rest of Haven is untouched. A failed sync writes nothing, so losing signal never flashes the streak to zero.

The streak is the only progression Haven keeps. An earlier XP/coins/level system was removed: it was awarded but never shown, and nothing was gated on it.

Cosmetics#

Sam can be decorated across five slots — hat, face, neck, backdrop and companion — plus a set of one-off tricks.

Two ways to unlock something:

  • Streak milestones — free, and reaching one always frees something tangible.
  • Haven Pro Plus — available while the subscription is active.

Unlocks are derived, never stored: an item is available if the best streak ever reached its milestone, or if Pro is currently active. Only the user's chosen items are saved.

That has a deliberate consequence when a subscription lapses: an equipped Pro item quietly stops being drawn, but the choice is kept, so it comes back exactly as it was if Pro returns. Nothing is wiped and nothing crashes.

Crossing a milestone produces a small celebration naming what was freed.

Sam's room#

A dedicated screen for equipping cosmetics and playing tricks. A gentle hint appears elsewhere in the app when a milestone has freed something the user has not seen yet — and because the "seen" marker only moves forward, an already-seen unlock never re-surfaces to nag.

Sam elsewhere#

  • Home — the buddy card, the feed button, the daily focus tile.
  • The tours — Sam walks the user through the app on first run, on the first visit to settings, and through the Pro features if the user asks for that tour. The Pro tour is never started automatically; a sales pitch nobody asked for is an ad.
  • The loading moment — while the app resolves its start screen, Sam breathes quietly rather than showing an empty page.
  • The home-screen widget — the quietest surface of all.