UX / UI Case Study · Mobile Application
Reading, as it
was always meant
to feel.
Readr is a premium reading app engineered for long-form content lovers who find traditional reading apps cluttered, visually exhausting, or lacking in customization. This case study documents the full design journey from problem to pixel.
Contents
What's in this
case study
Problem Statement
Existing reading apps treat
the interface as a utility.
Modern e-reading apps, Kindle, Apple Books, Pocket, were designed to store and deliver content. They were not designed around the act of reading itself. This creates a compounding set of problems for avid readers who spend 60+ minutes a day in text.
"Readr treats the reading interface as the product, not the container for it."
Target Audience
Three readers.
One shared frustration.
Every design decision in Readr traces back to one of these three composite personas, built from diary studies and in-depth interviews with 18 participants over three weeks.
User Research
What we found.
What we did about it.
Methods included two-week diary studies (n=12), comparative usability testing against Kindle and Pocket, expert typographer interviews, and a full accessibility audit with VoiceOver and TalkBack.
Design Thinking
Five phases.
One guiding question.
HMW create a reading environment so frictionless and personalized that it fades into the background, leaving only the reader and the text?
Design System
Tokens, type,
and intention.
Every color, typeface, and spacing value is a deliberate choice. The system is small enough to memorize and principled enough to scale. Nothing is decorative, everything communicates.
Color Palette
Typography Scale
Lora 500
Lora 400 / 1.75
Inter 400
Inter 600 Caps
Core UI Screens
Four screens.
Every detail considered.
What follows are detailed UI specifications for each core screen, written to be handed directly to a Figma designer or developer. Zone labels (A, B, C…) correspond to vertical regions from top to bottom.
80px including safe area. Left: circular avatar (32px) showing user initial, taps to account/settings. Center: "Readr" wordmark in Lora Medium, 20px, charcoal, the typographic name is the brand, no icon logo. Right: Search icon (22px feather-style) + Import icon (downward arrow into box). Background is transparent, the header is part of the page, not floating above it. No shadow, no card.
200px. Full-width with 24px horizontal margins. Background treatment: A soft, blurred, desaturated version of the book cover fills the card at ~20% opacity, atmospheric, not photographic; the cover sets a mood. Content (left-aligned): eyebrow label "CONTINUE READING" (Inter 500, 10px, sage, 0.1em tracking) → Book title (Lora Medium, 22px, charcoal) → Author (Inter Regular, 14px, slate) → thin 3px progress bar in sage/eggshell → caption "Chapter 4 · 34% complete · ~22 min left." Tap action: crossfade directly to Reading Interface, resuming exact scroll position. Press state: scale(0.98).
130×190px. Card anatomy: top 75% = cover image with 6px corner radius + soft bottom vignette; bottom 25% = Title (Lora, 13px, charcoal) + Author/Source (Inter, 12px, slate). Small sage dot top-right = unread indicator (disappears once opened). Final card in row: dashed-border "+" Add Content card with eggshell background.
54px above system home indicator. Items: Library (home icon, active state), Discover (compass icon), Insights (sprout/leaf icon, sets the organic metaphor for the Insights tab). Active: filled icon + Inter Medium 10px label in charcoal. Inactive: stroke icon + Inter Regular 10px in slate. 1px top hairline border at rgba(0,0,0,0.07). Flat, no blur, no card.
44px. Appears on load; fades to 15% opacity after 3 seconds of scroll inactivity. Left: ← back chevron (returns to Library, preserves scroll). Center: Chapter title in Inter Regular, 13px, slate, intentionally small (reference, not navigation). Right: "Aa" Typography button (opens Design Drawer).
-webkit-font-smoothing: antialiased · text-rendering: optimizeLegibility36px tall, 90% screen width, centered, 16px corner radius, rgba(44,44,44,0.88) background with blur. Controls: Skip Back 30s · Play/Pause · Skip Forward 30s · Speed (0.75×, 1×, 1.25×, 1.5×, 2×) · Close. Currently-spoken sentence highlighted with a --sage underline at 40% opacity, tracking in real time. Auto-scroll follows playback; user scroll overrides without stopping audio.
24px top corner radius. Height: 65% of screen, the top portion of text remains visible for live preview. Live preview: every change reflects in the text behind in real time (200ms ease). No "Apply" button. Background: --eggshell with backdrop-filter: blur(24px). Handle pill: 40×4px at top center. Spring physics on open: stiffness 280, damping 32.
52px diameter: Parchment (warm off-white bg, charcoal text) · Sepia (amber bg, dark brown text) · Dusk (grey-beige bg, off-white text) · Ink (#1A1A1A bg, light grey text) · True Black (#000 bg, pure white, OLED & high contrast). Selected swatch: sage 2px ring, 3px offset. Below swatches: a Brightness slider with circular 20px thumb, adjusts brightness within the app context without leaving the drawer.
Text Size: Large centered px value in Lora at 32px, flanked by − and + buttons (44×44px tap targets). Slider alternative below.
Line Spacing: Labeled "Breathing Room", not "Line Height." Same control pattern. Language is for the reader, not the developer.
Margins: Four icon buttons, Narrow · Normal · Wide · Max, illustrated as tiny column icons showing relative margin width.
Alignment: Two micro-typographic illustration buttons: Left-Align and Justified. Icons show the actual text layout, not abstract symbols.
Bionic Reading toggle: Full-width row. Description: "Bolds the first syllable of each word to guide the eye." Pill toggle on right. When ON: text behind drawer immediately shows Bionic formatting.
OpenDyslexic toggle: Description: "A typeface that anchors letter shapes to reduce visual rotation." When ON: replaces current font with OpenDyslexic and hides Font Family selector to prevent conflicts.
High Contrast toggle: Forces True Black theme + pure white text + disables ambient modes.
Start Reading Aloud button: Full-width, sage background, white label "▶ Start Reading Aloud" (Lora Medium). Closes drawer and activates TTS from current position.
Word Spacing slider: Contextually visible only when OpenDyslexic or Bionic Reading is active. Labeled "Word Breathing." Range: Normal → Relaxed → Airy.
Motion Principles
Invisible choreography.
Motion in Readr serves to maintain context, never to entertain. Animations are swift, easing is natural, and transitions are continuous.
400ms with a slow ease-out. No sliding, to prevent distracting the eye from the text.stiffness 280, damping 32. Text canvas behind it does not shrink, just blurs slightly to maintain context.stiffness 400, damping 40.Accessibility
Built for everyone.
Accessibility was not a checklist at the end; it was the foundation of the typographic engine and interaction model.
Outcomes
Measuring success.
The redesign was tested against the legacy app with a beta group of 2,000 active users over 4 weeks.