2 min read

Project Mixtape

Project Mixtape
mixtape — make someone a tape
Make someone a mixtape. Like it’s 1996 and you mean it.

Mixtape Is Live: Make One for Someone You Love
There’s something that got lost when streaming took over. Not the music — the music is all there. What got lost was the gesture. The act of sitting down, choosing songs in a specific order, for a specific person, and handing it to them. A mixtape wasn’t a playlist. It was


Here's a changelog based on the full commit history:


Uristocrat Mixtape — Changelog

Spotify Integration

  • Added Spotify as an alternative search source alongside Apple Music
  • Spotify tracks play 30-second previews via HTML audio (no account required)
  • Source toggle in the search bar — switch between Apple Music and Spotify mid-search
  • "No preview" badge shown for Spotify tracks that lack a preview URL
  • Mixed tapes (Apple + Spotify tracks) supported; playback routes to the right player automatically
  • Homepage and create page copy updated to reflect both sources

Embedding

  • Mixtapes can now be embedded as iframes on any website
  • "Embed this tape" CTA visible to all viewers — reveals a copyable <iframe> snippet
  • ?embed=1 mode hides bottom actions for a clean embedded experience
  • Amplitude tracks embed and referrer on tape_opened so you can see where embeds are playing

Sharing & Social

  • Share button on both arrival and player screens (native share sheet or clipboard fallback)
  • Social sharing with UTM params; Instagram Story image generation

Tape Creation

  • Creator's name (fromName) field — shows on the arrival screen ("Edwin made you a tape.")
  • Public/private visibility toggle
  • Remix feature — clone any public tape's tracklist as a starting point for your own
  • Playlist editing after a tape is created (/t/:id/edit)
  • Side A / Side B separation maintained throughout — tracklist restarts numbering per side

Player

  • Side A / Side B clearly labeled in the tracklist with dividers and per-side track numbers
  • Dynamic page title: "Mixtape — [tape name]"
  • Cassette graphic flips label to "SIDE B" when playing side B tracks
  • "Make your own mixtape", "Remix this tape", "Edit this tape" CTAs on both arrival and player screens

Homepage & Build Page

  • 5 most recent public tapes shown on the homepage
  • CassetteTape SVG replaces the video cassette emoji
  • /build page with full app prompt for remixing
  • Markdown mode toggle on /build — strips to plain text for easy copying into AI agents
  • Vibe Shift CTA on /build page
  • Footer with "remix this app" and "Uristocrat Studios" links

Analytics

  • Amplitude tracking across all key events: tape_opened, tape_inserted, playback_started, track_added, tape_shared, embed_code_copied, and more
  • Embed and referrer data captured on open

Infrastructure

  • Deployed on Cloudflare Workers via @opennextjs/cloudflare
  • Apple Music JWT signed with Web Crypto API (compatible with Workers runtime)
  • Tapes stored in Cloudflare KV