
A Music Sample Subscription Platform — Built Solo in 16 Weeks
Designed and built a full subscription marketplace from scratch — payments,
credits, secure downloads, and admin tooling — delivered on time, on budget.
React • TypeScript • Supabase • Stripe • PostgreSQL • Klaviyo • Vercel •
Full-Stack Development • SaaS • Subscription Platforms • Web Apps
The outcome was a fully delivered MVP — a working subscription
platform that the client launched and is now generating revenue
from. A few things I'd call out as the key results:
Project Description:
A music sample subscription platform built to compete with Splice, WAVS,
and Tracklib. The client owned a library of 10,000+ pre-produced audio
samples and wanted to move from one-off transactions to a true subscription
business — users subscribe monthly, receive credits, and spend credits to
download samples.
I delivered the full MVP solo over 16 weeks for $20K: subscription billing,
credit system, secure downloads, custom audio player, bulk admin tooling,
and email automation. The client released full payment on milestone sign-off
and re-engaged me for Phase 2 work immediately after launch.
I delivered the full MVP solo over 16 weeks for $20K: subscription billing,
credit system, secure downloads, custom audio player, bulk admin tooling,
and email automation. The client released full payment on milestone sign-off
and re-engaged me for Phase 2 work immediately after launch.
The Challenge:
The client had a working business selling individual audio files on a
third-party storefront — but no recurring revenue, no platform of their
own, and no way to scale beyond manual transactions.
The goal was to rebuild the business around a subscription model: monthly
plans, credit-based downloads, and a content library that could grow to
tens of thousands of samples.
Three constraints shaped every decision:
Solo execution — I'd own scoping, build, QA, and client communication
Non-technical client — the platform had to be usable end-to-end without developer support, including content management
THE BUILD:
I broke the project into 8 bi-weekly milestones, each with explicit
acceptance criteria. The client signed off on every milestone before
payment was released, which kept scope tight on both sides.
Core features delivered:
Three-tier subscription system (Starter / Pro / Elite) powered by Stripe recurring billing and the Customer Portal
Credit-based purchase system with variable per-sample pricing and idempotent re-downloads
Trial system — 5 free credits on signup to drive activation
Browse, search, and filter across the catalog (genre, BPM, key)
Custom audio player with interactive waveform visualization
Secure download delivery using signed URLs with time-limited access
Admin bulk upload — process 100+ samples at once via CSV + audio file matching, cutting content onboarding from hours to minutes
User dashboard with credit balance, subscription status, and download history (with no-charge re-downloads)
Klaviyo integration — 6 lifecycle events powering client-managed email automation
Phase 2A features — favorites, collections, and one-time credit purchases
TECHNICAL DECISIONS:
A few decisions shaped the build:
Supabase over a custom backend. Auth, Postgres, file storage, and CDN in
one platform meant faster delivery and ~$25/month hosting instead of
$150+ on AWS. Row-level security policies kept user data isolated without
extra middleware.
Stripe Customer Portal instead of custom billing UI. Saved 40+ hours of
work, PCI-compliant out of the box, and matches the UX users already
expect from Notion, Linear, and Vercel.
Klaviyo via webhook events, not direct integration. The platform emits
6 lifecycle events (signup, subscription, download, low credits, trial
depleted, cancellation). The client owns email content and flows in
Klaviyo's dashboard — no engineering needed to ship a new campaign.
Edge Functions for every external API call. Klaviyo and Stripe API keys
never touch the frontend. All event tracking and webhook handling runs
in Supabase Edge Functions with verified signatures.
HARDEST PROBLEM SOLVED
Credit system idempotency.
Audio files are large. Downloads can fail mid-stream, get accidentally
re-triggered, or be re-requested days later. I needed to guarantee that
re-downloading a sample never re-charged the user — but also that the
underlying file stayed securely gated.
I built a transaction ledger backed by a Postgres unique constraint on
(user_id, sample_id, format). The first successful download writes a
ledger row and deducts credits. Subsequent downloads of the same sample
return a fresh signed URL but skip the deduction. Credit-affecting and
file-access operations are wrapped in a single transaction so a partial
failure can't desync the two.
Verified end-to-end during client QA: first download deducted credits
and created a ledger row; re-download returned a new signed URL with
no charge and no duplicate row.
OUTCOME
Delivered on time and on budget — all 8 milestones hit on schedule
Full payment released on client sign-off
Business model transition complete — recurring subscription revenue replacing one-off sales.
TESTIMONIAL
"Worked with Sheng on the TSL subscription portal build across eight milestones. Code quality solid, deployments clean, work shipped on time without me having to chase him. Same-day replies on basically every thread, weekends included. When I flagged a tricky bug during QA, he diagnosed and shipped a fix fast, no back-and-forth. Pricing fair, scoping honest. Already lined up for the next phase. Easy yes for the next one."
— Jan
2 likes · 33 views · Jun 4, 2026
Built and launched a subscription platform that moved the client from one-off sales to recurring revenue. Delivered on time, on budget.
Timeline
Feb 4, 2026 - May 22, 2026