FounderBRANDPRODUCTLAUNCH· Mar 2026 – Present

Casset

Founded and shipped a live music platform, solo and end to end

Casset gives artists a home for their music identity — founded, designed, and built solo. Artists claim a handle and get a profile world: songs, atmosphere, and release context in one place. Every track carries an authored 30-second hook — a window with synced lyrics and visuals that fans can export as vertical video for TikTok, so even unfinished songs can see the light of day. Fans collect with one tap of Apple Pay and artists keep roughly 90% through Stripe Connect. As music gets easier to generate, the scarce layer is authored identity — Casset is built around preserving it. It began as a way for artists to launch coins on Base — hence the name Casset (crypto asset) — before I pivoted to the simpler, broader product that’s live today at casset.fm.

YearMar 2026 – Present
RoleFounder — solo design & engineering
DeliverablesBrand Identity, Product Design, Full-stack Development, Commerce System

Live Demo

This is the actual product running live.

Profile

Open

Feed

Open

Store

Open

01

Origin - Base Network MVP

Where it started: launching artist coins through the Flaunch API on Base Sepolia, with Coinbase Wallet and Sign In with Base. I killed this direction in favor of a simpler, broader product - but it named the company.

Base Network MVP
The full UX/UI of the Base-network version (Sept 2025) - site, gate, artist card, player, onboarding, token launch, and purchase flows - the system before the pivot.

02

Create a casset - live

The most recent version, running, with the whole creation flow in the frame below; claim a name and walk it yourself on mobile. End to end: (1) Claim a handle on the landing and your artist world is built instantly (a profile with Hooks, Tracks, and a Room) before any sign-up. (2) Edit sets the avatar, cover, and bio and flips a one-tap Paid access toggle (fans pay once to unlock, or listen free). (3) Add track uploads your music - which stays yours, never used to train generative AI. (4) Design controls the surface fans see while hooks play: the track's own beat-reactive visuals, or a cover photo. (5) Continue with Apple or sign up with email saves and publishes it - signup is deliberately deferred until after you've already built something.

casset.fm - create your artist world, live on mobile
casset.fm - claim a handle to start creating.Live ↗

03

Creating a casset

The current flow, as a static screen since the live frame doesn't follow you onto mobile: claiming a handle is the whole onboarding - “build your first world.” Continue with Apple or Instagram, or email and password, and your artist world is created; the handle you pick becomes the link you share.

“Claim the link” - the current create-a-casset flow on casset.fm.

04

A closer look - inside the app

The shipped product, screen by screen - the artist profile, the hook player, and one-tap collecting.

The artist profile - hook player, releases, and atmosphere in one world.
Collecting straight from the profile.

05

Audio-reactive hooks & the collect gate

Every hook drives beat-reactive visuals off a shared playback clock; collecting unlocks the full track behind a per-stream entitlement check.

A hook running with its beat-reactive visual.
The collect gate - unlock the full track.

06

Visual Studio & packs

Artists compose beat-reactive shaders in an in-browser Visual Studio, then price and sell them as visual packs from their profile.

The in-browser Visual Studio - composing shaders.
Visual packs - composed, priced, and sold per artist.

07

Synced lyrics

Lyrics are cued in real time off the same playback clock that drives the hook and its visuals.

Adding and timing lyrics to the playback clock.

08

Feed, store & social

The discovery and social layer around every drop - a trending feed, a store of featured cassets, and direct messages.

Feed - trending hooks.
Store - featured cassets.
Direct messages between fans and artists.
Shared links carry 30-day referral attribution, tracked in an append-only credit ledger.

09

On the web

Casset on the desktop web.

Casset on the desktop web.
The web experience.
Casset merch - the brand off-screen.

10

Early brand exploration

Landing directions for the casset brand - the iridescent disc mark explored across light, cream, and dark treatments, with the wordmark scaled from a quiet lockup to a full-bleed graphic. Different bets on tone (“create a casset with exclusive content and tracks · earn money”) before the identity settled.

Six early landing directions for the casset identity.

11

casset.fm - live today

Where it landed - the current landing page: claim a handle, build an artist world, drop differently. Underneath the cinematic surface sits a canonical, machine-readable layer - releases, manifests, permissions, and provenance - built on Next.js, Postgres, blob storage, Stripe, and Redis.

casset.fm - the live landing page
Casset Recording Studios - a retro brand world moment from the landing page

12

The product system

The whole product mapped in one board - the site and gate, onboarding and token launch, profile creation, playing with beat-reactive hooks, preview and tip purchases, and the library. Everything that ships, in one view.

The end-to-end product system - every core flow in one view.

Under the Hood

Casset is a single Next.js application, designed, built, and operated by one person since March 2026. It spans authenticated audio streaming, Stripe Connect payments, realtime social systems, and a machine-readable release layer. The architecture is documented publicly at casset.fm/docs.

829
commits since March 2026
226
API routes across audio, payments, social & cron
119
screens in the app router
67
database models · 45 migrations
321
unit tests across 38 suites
17
public architecture chapters at casset.fm/docs

Product status

  • Solo-built since Mar 2026
  • Live creator profiles
  • Stripe Connect payments active
  • AI visual generation & campaign intelligence active
  • Mobile web + PWA
  • Artist onboarding underway

Architecture

Streaming pipeline

Tokenized audio behind a byte-range proxy with per-request entitlement checks. Preview windows are computed server-side from bitrate estimation; no public file URLs exist.

Payments

Stripe Connect direct charges with Apple Pay and guest checkout. Webhooks across six event types are idempotent on every write path; refunds and chargebacks revoke access immediately.

Campaign engine

Autonomous promotional drops with fraud screening. Payouts settle only when the ledger reconciles to the prize pool exactly, behind four independent idempotency layers.

AI layer

Claude-backed visual generation and campaign intelligence: sanitized inputs, Redis cost caps, bounded structured output, deterministic fallbacks.

Realtime systems

Redis presence and server-sent events behind comments, follows, activity, and an append-only referral ledger.

Visual runtime

Audio-reactive visualizers and themed players driven by a shared playback clock; per-artist OG images; offline-capable PWA with tiered caching.

Engineering challenges

Instagram's in-app browser

Half of traffic arrives here. Storage, autoplay, and viewport constraints shaped auth, playback, and checkout.

iOS Safari playback

Suspended audio contexts, NaN durations before play resolves, background-tab garbage collection - the player recovers from each.

Route-persistent audio

A single audio element owned above the router. Playback survives every navigation and powers lock-screen controls.

Tokenized streaming

Every stream passes entitlement validation, served with the 206 range semantics iOS requires for seeking.

Preview-window playback

30-second hooks enforced server-side and looped client-side with a ~50ms micro-fade.

Stripe Connect marketplace flows

Direct charges to artist accounts, merchant-of-record duties, and dispute-driven access revocation.

Realtime on serverless

Presence and SSE where connection lifetime is the constraint, with Redis as shared state.

2026 CONNOR LEE

LOS ANGELES, CA