Personal project · UX/UI · 2025

Letterboxd

Reading the whole app for friction — from the first log to the fiftieth list.

Type
Personal project
Tools
Figma · Figma Make · Claude
Scope
UX research · UI redesign · Prototyping
Status
In production
Open the prototype

Built in Figma Make.

Letterboxd redesign — overview of the redesigned screens

letterboxd/hero.jpg — redesign overview

01

Frame

I started using Letterboxd to keep a proper log of what I watch. For an app built around something as simple as logging a film, the everyday experience is rougher than it should be.

Every primary action — log, rate, watchlist — sits behind a “⋯” menu instead of on the film page.

Naming doesn't help either: “Journal” reads like a personal diary but is actually the editorial section. Several menu pages overlap in purpose. The objective: improve the UX and UI while leaving the branding intact.

Scope — the six pillars

  • Logging & rating
  • Watchlist
  • Discovery
  • Lists & curation
  • Profile & social
  • Reviews
01 — Depth

Everything lives behind “⋯”

Log, rate and watchlist are each one menu deeper than they need to be, on the single screen where you'd actually reach for them.

02 — Naming

“Journal” isn't a journal

It reads as a personal diary. It's the editorial section — interviews, festival coverage, criticism. The label describes the wrong thing.

03 — Redundancy

Five tabs, nearly one grid

Films, Diary, Watched, Likes and Ratings each show a slightly filtered version of the same posters. More pages, less clarity.

02

Research

Instead of a heuristic scorecard: a full screen-by-screen flow map in FigJam, annotating friction where it actually happens, then grouping issues by Jobs to Be Done rather than by app section.

The app feels built first and designed second — features layered on over time rather than planned as one system.

Film page Log · Rate · Watchlist buried behind ⋯ Discovery Filters decorative, not wired My Lists Reorder a list type a position number News Editorial feed labelled “Journal” Profile Films / Diary / Likes five tabs, one grid Home friction logged on the board

The flow map redrawn — every surface walked, friction marked where it happens. Clustering those marks by what the person was trying to do is what produced the six jobs below.

03

Six jobs, six journeys

J01 Shipped

Remember what I've watched

Friction — every action behind “⋯”; quick-add marks watched with no confirmation.

Fix — log, rate and watchlist directly on the film page.

J02 Shipped

Decide what to watch next

Friction — the watchlist is a flat add-order grid; no sort, no recommendation surface.

Fix — live filters and sort on the list itself.

J03 Shipped

Build and share a collection

Friction — reordering means toggling “Ranked List”, then typing a position number per film.

Fix — native drag-to-reorder, on by default.

J06 Shipped

Stay current on film culture

Friction — “Journal” reads as personal diary; it's editorial content.

Fix — rename to News, matching the real-world term.

J04 Shipped

Follow people whose taste I trust

Friction — Films, Diary, Watched, Likes and Ratings are five tabs of nearly the same grid.

Fix — one profile, plus a Friends tab that makes activity worth checking.

J05 · Parked

Say something about a film

Friction — formatting a review on web means hand-typing HTML tags.

Why parked — the mobile composer is designed; the web toolbar is a separate fight.

04

Choosing what to build

Six journeys is more than one case study should try to fix. Plotting them by impact against effort picked the first three plus the Journal rename; J04 and J05 were parked.

quick wins big bets nice to have money pits Impact → Effort → J6 Rename Journal J1 Surface log actions J3 Drag to reorder J2 Filter the watchlist J4 Consolidate profile J5 Review toolbar (web) built this pass stretch parked

J1–J6 plotted by impact against effort. The rename was almost free, logging was the biggest single win, and the two parked jobs sit where the cost stopped making sense for one pass.

A — Inline bar poster Log Rate List Seen Always visible. More weight per page. B — Bottom sheet poster Log Rate List Seen Page stays clean. Gesture isn’t obvious. C — Inline bar selected ✓ poster Log Rate List Seen Matches the flow map. No hidden gesture.

Three directions for surfacing the film-page actions, before committing to one.

05

Design

One system across every journey: dark theme, glass surfaces, rounded actions, and three accents each doing exactly one job — green for logging, sky blue for a chosen option among several, orange for something new needing attention.

Logging — J01

The buried “⋯” menu is gone. Log, Rate & Review, Watchlist and Add to List sit in one bar on the film page, the same four wherever you arrived from. A long-press on any poster surfaces them without opening the page at all.

Resolves — buried CTAs, unconfirmed quick-add.

Home

Homeletterboxd/home.webpHome · 227:1872

Home
Home — long-press quick actions

Home — long-press quick actionsletterboxd/home-longpress.webpHome — Long-press quick actions · 255:18

Home — long-press quick actions
Film page — inline action bar

Film page — inline action barletterboxd/film.webpMovie Info Page · 260:2

Film page — inline action bar
Film page — rated state

Film page — rated stateletterboxd/film-rated.webpMovie Info Page — Rated (variant) · 386:26

Film page — rated state
Rate & Review composer

Rate & Review composerletterboxd/rate-review.webpRate & Review · 266:2

Rate & Review composer
Diary — calendar

Diary — calendarletterboxd/diary-calendar.webpDiary — Calendar (Default) · 264:2

Diary — calendar
Diary — list view

Diary — list viewletterboxd/diary-list.webpDiary — List view · 265:2

Diary — list view

Discovery — J02

Filters that actually filter: tap a genre chip and the grid updates live, sky blue marking the choice. The filters that aren't wired yet are labelled as such rather than faked.

Resolves — decorative filters, no browsing path.

Discovery

Discoveryletterboxd/discovery.webpDiscovery · 356:83

Discovery
Discovery — filters open

Discovery — filters openletterboxd/discovery-filters.webpDiscovery/filters open · 356:271

Discovery — filters open

Lists — J03

Watchlist gets top billing as the list everyone already has; everything else sits below with a cover mosaic and a public/private badge. Reordering is drag-and-drop — no “Ranked List” toggle, no typing position numbers.

Resolves — clunky reordering, no dedicated list home.

My Lists — hub

My Lists — hubletterboxd/lists-hub.webpMy Lists — Hub (Default) · 363:2

My Lists — hub
Watchlist — detail

Watchlist — detailletterboxd/watchlist.webpWatchlist — Detail · 368:2

Watchlist — detail
A curated list

A curated listletterboxd/list-detail.webpMy List — Best of the Decade · 369:2

A curated list
Create a new list

Create a new listletterboxd/list-create.webpCreate New List · 370:2

Create a new list

Profile & social — J04

One profile with one clear identity: films logged, followers, following and a liked-films grid up front. A Friends tab paired with News turns other people's activity into something worth checking, and notifications get their own surface.

Profile

Profileletterboxd/profile.webpProfile · 372:2

Profile
News — Friends tab

News — Friends tabletterboxd/news-friends.webpNews — Friends tab · 353:44

News — Friends tab
Notifications

Notificationsletterboxd/notifications.webpNotifications · 371:2

Notifications

Film culture — J06

“Journal” becomes News — the real-world term for what it actually is: editorial, interviews and festival coverage, not a personal diary.

Resolves — a nav label that described the wrong thing.

News tab

News tabletterboxd/news.webpNews — News tab (Default) · 352:2

News tab
06

Reflect

The most useful decision was mapping the whole app before touching a single screen. Grouping friction by what people are trying to do — rather than by which tab it lives in — turned a long list of annoyances into six jobs, and made it obvious which two to leave alone.

07

The prototype

The film-page actions built as something you can actually press — logging a film, rating it, and adding it to a list, end to end.