← John Jenkins

Case study · 2026 · Ended

In The Liners, hand-lettered script logo

In The Liners

Every song arrives with a story.

A music-sharing experiment I designed and built in the summer of 2026. You handed one song to one person, with one sentence about why. Later it grew into a playlist made by twelve people, one song each, with the names hidden until the end.

Role
Concept, design, build
Ran
Summer 2026, among friends
Status
Sunset September 15, 2026
Built with
Next.js, Postgres, Resend, Spotify

The idea

Liner notes are the part of a record that is about people.

The credits, the thank-yous, the story of the room it was made in. Streaming kept the songs and quietly dropped the liners, and now music mostly finds us because a system noticed a pattern.

In The Liners put the note back and made it personal. Not who played on the record: who handed it to you, and what it means to them. We rarely love a song on its own. We love what it holds, the drive home, the winter an album got you through, the friend who played it for you first. That was the material. Not recommendations. Attachment.

A hand holding up a cassette tape

How it worked, 1

Pass a song, with a sentence.

Choose one song, write one sentence about why, and send it to one person. Whoever received it could pass it on with a sentence of their own, and the record kept every hand it had been through, like the stamped card in a library book.

The limits were the design. Three passes a week meant every pass cost something to give. Three in hand at most meant the friend with the best taste never got buried. There was no score, no follower count and nothing that read as a ranking: when a song you passed was handed on, you were told, in words, and that was the whole reward.

The pass One song moves from Maya to Priya to Devon to you. Each person adds one sentence about why. The record keeps every hand it went through, like the stamped card in a library book. Each person has three passes a week, holds at most three songs, and has seven days to pass one on. 01 · THE PASS · ONE SONG, HANDED ON M MAYA started it P PRIYA D DEVON Y YOU pass it on, or not + a sentence + a sentence + a sentence HOW IT REACHED YOU “The bass at 1:40 does something I still can’t explain.” 01MAYAMar 2 02PRIYAMar 4 03DEVONMar 6 WHAT KEPT IT SMALL 3 PASSES A WEEK every one costs something to give 3 IN HAND AT MOST nobody with good taste gets buried 7 DAYS TO HOLD IT then it lapses, quietly

How it worked, 2

Make a playlist out of twelve people.

After two weeks of real use the product changed direction. Instead of passing the same song on, you added the one it reminded you of. A chain became a relay: twelve positions, one person each, every song chosen to follow the last.

The rule that made it work was about what you could see. On your turn you could hear every song that came before yours, but you saw only one name: whoever invited you. Taste, with the names removed until the end. When the twelfth song landed the relay locked, every name and note appeared in order, and it became a public playlist with its own page.

The relay of twelve A playlist built by twelve people, one song each, in order. Seen from position four: the three songs before yours are playable, but the names of the people who chose them are hidden, except the person who invited you. Positions five to twelve are still open. At twelve the relay locks, every name and note appears in order, and it is published as a public playlist with its own page. 02 · THE RELAY · TWELVE PEOPLE, ONE PLAYLIST, SEEN FROM SEAT FOUR 01 Borderline Tame Impala 02 Glide Pure X 03 Pink + White Frank Ocean SAM 04 You your turn now 05 06 07 08 09 10 11 12 locks here ON YOUR TURN You hear every song that came before yours. You see one name: whoever invited you. You add one song that follows, and a note. Then you invite the next person. AT TWELVE, IT LOCKS Every name and every note appears, in order. It is published as a public Spotify playlist with its own page, and everyone gets the credits roll by email.

How it worked, 3

The clock is on the seat, never on the relay.

A relay of twelve people will stall; somebody always goes quiet. So each turn got 72 hours and one reminder, and a lapsed turn went back to the person before, who could invite someone else. The relay itself never expired. At six songs it was worth keeping, and the person who started it could lock it and publish what existed, or leave it open for as long as it took. Below six, a stalled relay folded back into ordinary passes so nothing anyone added was wasted.

The clock is on the seat, never on the relay Each turn has 72 hours. The turn email goes out when the position opens, one reminder at 36 hours, and at 72 hours the turn goes back to the person before, who invites someone else. Adding a song opens the next position. Across the whole relay: below six songs a stalled relay folds back into ordinary passes; from six the creator may lock it early and publish, or leave it open indefinitely; at twelve it locks by itself. 03 · THE CLOCK · ONE TURN 0 H position opens, turn email goes out 36 H one reminder, never two 72 H the turn goes back one seat, and they invite someone else a song and a note are added, the next position opens the baton moves on; the relay itself never expires THE WHOLE RELAY · HOW MANY SONGS IT HOLDS 1 6 12 1 TO 5 If it stalls here, it is let go and the songs go back to being ordinary passes. 6 TO 11 Worth keeping. The creator may lock it and publish what exists, or leave it open for as long as it takes. 12 Locks itself.

How it worked, 4

Getting someone in without a wall.

Email was identity: no passwords, no app. That is clean, and it is also a wall when you are sitting next to someone and only have their number. So there were three ways to hand over a turn, all arriving at the same page. The rule for the second one was strict: you shared exactly the link the email carried, never a second one.

Three ways to hand someone a turn Tag them by email and they get an invite with their link. Or hand them the same link yourself, by share sheet, text message or copy, never a second link. Or open a seat by link before anyone is named, and whoever opens it types their own address and takes the seat. All three arrive at the same place: their turn. 04 · GETTING SOMEONE IN · THREE WAYS TO HAND OVER A TURN 1 TAG BY EMAIL You type their address. They get an invitation carrying their own link. the default, always sent 2 HAND IT OVER The same link, shown to you, to send yourself: share sheet, a text, or the clipboard. never a second link 3 OPEN A SEAT No name needed yet. Whoever opens the link types their own address and takes the seat. for the person beside you THEIR TURN one page, one song to add Email is identity. No passwords, no app to install.

The look

Ink on paper, not a notification.

The design brief was one sentence: receiving a song should feel like a hand-addressed envelope. A hand-lettered script mark. Four colors taken from a warm page and the ink on it. A serif for anything a person wrote, a plain sans for everything else. On the screen that mattered most, the note was the largest thing, bigger than the song title and bigger than the album art.

Most of it arrived by email, because that is where people already open letters, so the emails were designed as carefully as the pages.

The look of In The Liners The hand-lettered script lockup. Four colors: paper F4F1EA, ink 0E0E0C, muted 6B665C, and one accent A8431F used at most once per screen. Two typefaces: Instrument Serif for anything a person wrote, Geist for everything else. THE LOOK · INK ON PAPER, NOT A NOTIFICATION Every song arrives with a story. A hand-addressed envelope, not an app. The note is the largest thing on the screen. FOUR COLORS, NOT A PALETTE PAPER#F4F1EA INK#0E0E0C MUTED#6B665C ACCENT#A8431F The accent marks one action per screen, at most. No dark mode. TWO FACES, THAT IS THE SYSTEM Instrument Serif the voice: anything a person wrote Geist the chrome: everything else, and it recedes
Receiving a song: the sender's note set large in serif, then the track, then every hand it passed through
Receiving a song. The note comes first.
A relay turn email: your position in the relay and the songs before yours
Your turn in a relay, by email.
A finished relay: every song and note in the order it arrived, with names revealed
A finished relay. Every note, in order.

How it was built

One app, and most of it happened in the inbox.

I designed and built it end to end: a single Next.js app on Vercel, Postgres on Neon, mail through Resend, song search and playlist publishing through the Spotify Web API, and listen links for every other platform through iTunes Search and Odesli. An hourly job wound the turn clock and sent reminders.

How it was built People reach the product in two places: a browser and their email inbox. One Next.js app on Vercel does everything. It stores every pass, relay, seat and link in Postgres on Neon, where nothing is ever deleted and expiry is a status. It sends mail through Resend. It searches Spotify for songs and publishes finished relays to a project Spotify account. It resolves listen links for Apple Music, YouTube and Bandcamp through iTunes Search and Odesli. An hourly cron winds the turn clock and sends reminders; a Sunday cron nudges unspent passes. 05 · HOW IT WAS BUILT A BROWSER receive, pass, take a turn, read a finished relay AN INBOX where most of it arrived, like a letter ONE NEXT.JS APP on Vercel TypeScript, Drizzle, Tailwind POSTGRES ON NEON passes, chains, relays, seats, links nothing deleted; expiry is a status VERCEL CRON hourly clock sweep, Sunday nudge RESEND pass, turn, reminder and credits emails SPOTIFY WEB API search, and publishing every finished relay ITUNES + ODESLI listen links for Apple, YouTube and Bandcamp No app to install, no password, no feed. Email is identity; every link is a key to one thing.

A few decisions that shaped it

What it taught

Songs arrive fine. The hard part is having someone in mind.

It ran quietly, among friends, through the summer of 2026. Every song that was handed to someone was opened. Fewer were handed on. That turned out to be the finding. Delivery was never the problem. What makes a song worth passing is the specific person you are passing it to, and that is not something software can supply.

When that person does exist, a single sentence about why is the most intimate thing a playlist can carry.

How it ended

Shut down on purpose, and written down.

By September it was idle, while the weekly email kept going out. A security review the same week found that fixing two account issues would mean reworking how sign-in worked, and nobody was exposed because every member had already joined. I chose to close it cleanly rather than rebuild it for nobody.

Mail was stopped first, then scheduled jobs, then every sign-in link was revoked, then the database was backed up, verified row for row, and deleted. The domain is kept on purpose, so no one can buy it and inherit old links sitting in people's inboxes. intheliners.com is now a record of the project, with two small working demos of the mechanics. The code, the decisions and a restart plan are archived.