The full stack audit
Twenty intentional craft failures. One interface. Find every one.
## How to use this exercise
Approach it like a code review, domain by domain.
### Pass 1: Typography
Scan every piece of text:
- **Straight quotes** in rendered copy. Should be curly.
- **Faux styles**. Bold or italic without a true font file. The browser synthesises distorted letterforms.
- **Letterspacing on body text**. Positive letter-spacing helps uppercase, harms lowercase.
- **Proportional figures in tabular data**. Use `font-variant-numeric: tabular-nums` so digits align.
- **Flat heading hierarchy**. Can you distinguish h2 from h3 instantly?
- **Widows**. A single word alone on the final line.
- **Non-breaking spaces**. "10 MB" should use a non-breaking space.
### Pass 2: Animation
Interact with every animated element:
- **ease-in on entrances**. Entrances use ease-out. ease-in is for exits.
- **ease-in-out on popovers**. Perceptible start delay. Use ease-out.
- **Missing prefers-reduced-motion**. Every animation needs a reduced-motion check.
### Pass 3: Craft
Inspect interaction details:
- **Missing focus-visible styles**. Tab through everything. Can you see focus?
- **Missing alt text**. Decorative images: `alt=""`. Meaningful images: descriptive text.
- **Missing autocomplete**. Email fields need `autocomplete="email"`.
- **No loading delay**. Spinner appears instantly on fast responses.
- **Pure #000000 black**. Near-black (#0a0a0a, #111) is easier on the eye.
- **Redundant borders**. Bottom border on one item _and_ top border on the next.
### Pass 4: Copywriting
Read every word:
- **Generic CTAs**. "Submit" tells nothing. "Start free trial" is specific.
- **Generic empty states**. "No results found" is a dead end.
- **CTA before headline**. Context, then value, then action.
- **"Click here" link text**. Describe the destination.
## The real audit
Close this page. Open your own product. Run the same four passes.