← Back to work

Case file 02 · Web · Client

What Came After

A custom Next.js and Sanity rebuild for a podcast telling the stories of people whose lives changed after October 7. Five seasons of real episode data, behind an audio player that keeps playing as you browse.

Year
2026
Role
Solo: client rebuild, design, build
Read
4 min
80+Episodes integrated
20+Daily visitors
5Seasons, plus a miniseries
3Weeks to build from scratch

Context

A podcast about people whose lives were changed by October 7 and the war that followed. Five seasons, hosted on Podbean and distributed through Spotify and Apple. It was on Squarespace, and the brief was blunt: it doesn't pop, it feels outdated, and the About page is a block of text, not something you move through.

The subject is heavy, so the design had to stay editorial and restrained, not dramatic. The identity was the way in. The logo is an anemone breaking out of a Star of David, and the anemone is both the flower in the mark and the memorial landscape around the Gaza envelope. Everything else came from it: a maroon, crimson, gold and ivory palette, and Bebas Neue over Cormorant Garamond.

The shipped hero

The problem

The rebuild had to solve three problems at once. The episodes live in a podcast RSS feed, and the real feed was messier than any spec assumed. 30 of its 80 items had no season tag and three had no episode number, so seasons couldn't just be read off it. The site also had to stay editable by people who aren't developers, because the team needed to add guests and swap images without calling me. And the show was moving between podcast hosts, so any URL scheme tied to the host's own IDs would break the day it moved.

A fourth problem only showed up once I was building: the visual direction was still changing. Finishing pages against a design that might turn is how a rebuild ends up being rebuilt twice.

What I built

A Next.js 16 site with Sanity for content, on Vercel. Episodes are pulled from the feed at build time and refreshed every hour, with slugs based on titles so they last, guest names parsed out, and a season map that fills the gaps the feed leaves. All eighty-plus episode pages are generated ahead of time.

One audio player, held in React context, keeps playing as you move between pages, and every play button on the site controls it. Each season has its own URL, so you can share a season, and going back returns you to the one you were browsing. About, Contact and the team pages are Sanity documents. Editors link an episode by searching its title, not by a feed ID they'd never be able to find.

A season, at its own URL
Episode detail

Decisions & iterations

The slug scheme went first. The spec wanted paths like /episodes/s5e8, but the feed couldn't support that, so slugs are title-only and survive the move between hosts.

The biggest call was visual. The first hero was a saturated red fill, and once I saw it live I thought the connotation was wrong. The show is about rebuilding, not violence. So it became a photo of an anemone field, where the red reads as remembrance, not aggression. What made that change cheap was the order I built in. The whole skeleton was built on real data with no design decisions in it, and all the visual work was saved for one paint pass at the end. So only the hero needed redoing, not a batch of finished pages. It's the order I'd use again on any project where the design is still moving.

The design itself was handed over as a working prototype, not a picture: a running build with a panel for adjusting the colours and type live, so the palette could be judged in motion instead of argued about. Later, working with the team, the nine “Live From Israel” episodes became their own miniseries instead of being folded into Season 5. The contact form was connected to Notion, because that's where the executive director works, and the raw feed ID an editor could never find was replaced with a dropdown of episode titles.

The miniseries, kept separate

Outcome

Live at whatcameafter.com, off Squarespace and onto the new build. Every page has been restyled, 141 tests pass, and typecheck, lint and build are all clean. Real content is in Sanity, and the team has a branded guide to the editor, so they can add a guest or swap an image without me. The best signal isn't a number: they brought me onto the team for their next project.

Credits & tools
Solo: client rebuild, design, build — Alfie ReesNext.js 16 · Sanity · VercelLive at whatcameafter.com · live
Case file 02 of 06