[ CRAFT ]

How the work gets made.

Most PM portfolios show what shipped. This page shows how. Design tokens, vector logo construction, motion language, voice ruleset. The verb chain from research through brand, motion, and launch, made legible.

[ 01/05 ][ DESIGN TOKENS ]

Five hex-locked names.
No hardcoded colors anywhere.

The Aatram design system runs on five named tokens on a true-black surface, with body copy at #F0EDE8 to pass WCAG AA 4.5:1. A no-hardcode rule is enforced in code review: every color must resolve through the token layer.

Naming is load-bearing. aRose tells you it is the rose-coded dread ramp. aMint tells you it is the momentum signal. Tokens describe the role, not the value.

aLavender#B8A9D4

Primary accent. Highlights and calls to attention.

aRose#C9929B

Dread tiers 1–4. Rose-coded emotional escalation.

aMint#7DBFAB

Momentum, calm, in-session signals.

aSand#C9B97A

Insights and softer informational copy.

aSlate#8BA4B8

Neutral metadata and secondary chrome.

[ 02/05 ][ LOGO AS CODE ]

Eighty stroke segments.
Zero raster assets.

AatramLogo is drawn as a SwiftUI Canvas in 80 overlapping stroke segments faking a continuous opacity gradient from 0.85 to 0.08 over a 25° to 145° arc, with four dissolving particles on golden-ratio-decay radii (3.00 / 2.16 / 1.56 / 1.12).

Because the logo is code, it renders crisp at any size: 24pt widget glyph, Live Activity, onboarding hero, App Store icon. No exported PNGs. No rasterization. The same recipe, every size.

Approximation rendered in SVG. Production uses SwiftUI Canvas.

[ 03/05 ][ MOTION LANGUAGE ]

Motion has rules.
Springs are reserved.

~85% of motion is .easeInOut 0.18–0.4s. Springs are reserved for the SwipeableTaskCard, where the physical feel matters (response 0.3, dampingFraction 0.8).

The signature interaction is the breathing pulse on DreadedTaskCard: it scales with dread tier so the higher the dread, the more anxious the card breathes. Motion is doing semantic work, not decoration.

Tier 1Light3.0s
Tier 2Steady2.0s
Tier 3Heavy1.5s
Tier 4Crushing1.1s
Tier 5Massive0.8s

Tier 5 breaks rose for gold. The escalation has an out.

[ 04/05 ][ MOMENTUMARC ]

A 240° gauge.
Not 270° on purpose.

MomentumArc is an instrument gauge sweeping 150° to 390° with 41 tick marks (major every 10, mid every 5, minor between), color-by-zone fill at 5pt round caps, and zone labels at 12.5 / 31 / 69 / 87.5% midpoints.

240° instead of 270° leaves the bottom of the arc open so the stats row underneath has room to breathe. A gauge that closes feels like a verdict. A gauge that stays open feels like a story still being written.

68MOMENTUMBuildingRollingStartingLocked In
StartingBuildingRollingLocked In

Eight-rank UserTitle ladder: Sleeper → Awake → Standing → In the Arena → Scarred → Forged → Unbreakable → Settled.

[ 05/05 ][ VOICE RULESET ]

Anti-cheerleader.
Witness, not coach.

Codified as a 7-Always / 13-Never ruleset, enforced through code review and AI prompt templates. The rules exist because cheerleader copy is the failure mode the entire habit-tracker category falls into. Witness copy treats the user as someone who already decided to show up.

Always · 07

  • 01The antagonist is the subject. The user is never under inspection.
  • 02Best-friend text test: would your best friend actually text this?
  • 03Name the obstacle directly. The dread. The resistance. Your brain.
  • 04Witness, do not cheer. We saw you show up.
  • 05Outcome, not content. Share that you moved, not what you avoided.
  • 06Short sentences. Stronger verbs.
  • 07Lowercase by default. Capitals are pressure.

Never · 13

  • 01No leaderboards. Ranking is a compile-time impossibility, not a copy choice.
  • 02No streak panic. Misses are absorbed, not punished.
  • 03No surveillance metaphors. The eye became a chart for a reason.
  • 04No em-dashes. They were killed in the V2 audit.
  • 05No exclamation points unless quoting a user.
  • 06No “you got this.” It is not a coach. It is a witness.
  • 07No countdown timers. Deadlines increase dread for avoidance-prone users.
  • 08No notifications pulling users out of focus they chose to enter.
  • 09No public comparisons. Crews are small. Trust over performance.
  • 10No surface that earns a tap without earning the user’s permission.
  • 11No “gentle reminder.” Either say what you mean or stay quiet.
  • 12No fake personalization. Templated copy beats fake intimacy.
  • 13No copy that survives the best-friend-text test only on a good day.

Canonical Lines

We’re ON.

Alright alright.

Yeah we’re cooking.

Procrastination took an L.

No notes, honestly.

Want this on your team?

I'm a PM who designs end-to-end. Looking for full-time roles starting May 2026 where design ownership and product judgment live in the same person.

Get in Touch