Cassette
Node.js, TypeScript, WebRTC, AWS S3
Live audio/media sharing platform enabling real-time peer-to-peer streaming with secure storage, playback history, and community features.
Overview
Cassette is a next-generation audio and media sharing platform that reimagines how people discover, share, and enjoy audio content together. It combines real-time peer-to-peer streaming with social discovery features, allowing users to broadcast audio live, create persistent libraries, and build communities around shared interests.
Philosophy
Traditional audio platforms separate sharing from listening, broadcast from curation, social from personal. Cassette breaks those boundaries:
- Live & On-Demand: Stream live audio or access persistent library of shared content
- Social First: Discover what people around you are listening to
- Privacy Conscious: Peer-to-peer by default, centralized only when necessary
- Creator Friendly: Simple tools for broadcasters, DJs, podcasters, musicians
- Community Driven: Built for music enthusiasts, radio junkies, podcast communities
Core Features
Real-Time Streaming
- Live Broadcasting: Go live with audio in seconds
- Peer-to-Peer: Direct streaming between broadcaster and listeners minimizes latency
- Adaptive Bitrate: Automatically adjusts quality based on connection speed
- Low Latency: Sub-500ms delay for interactive listening experience
Persistent Storage & Playback
- Smart Recording: Automatically captures broadcasts with user consent
- Cloud Storage: Secure S3-backed storage for archived streams
- On-Demand Playback: Access any recorded broadcast anytime
- Playback History: Track and revisit favorite broadcasts
- Download Options: Save broadcasts locally for offline listening
Discovery & Community
- Live Directory: Browse currently streaming channels in real-time
- Following System: Follow broadcasters and get notified when they go live
- Genre/Topic Tags: Discover content by music genre, podcast category, language
- Social Timeline: See what friends are currently listening to
- Recommendation Engine: AI-powered suggestions based on listening history
Creator Tools
- Multi-Source Input: Broadcast from microphone, music apps, system audio
- Studio Mode: Advanced settings for DJs and professional broadcasters
- Scheduled Broadcasts: Plan and announce upcoming shows
- Analytics Dashboard: Track listener count, engagement, peak times
- Monetization Options: Support tips, premium broadcasts, sponsorships
Accessibility
- Cross-Platform: Works on web, iOS, Android
- Mobile Optimized: Native apps with offline queue and background playback
- Keyboard Navigation: Full keyboard control for users who need it
- Audio Descriptions: Optional metadata describing broadcast content
- Multiple Languages: UI localized for global community
Technical Architecture
Frontend Stack
- Web: React 18, TypeScript, Tailwind CSS
- Mobile: React Native for iOS and Android
- Real-Time: Socket.IO for signaling and metadata sync
- State Management: Redux for complex audio/streaming state
Backend Stack
- Runtime: Node.js with TypeScript
- Framework: Express.js for REST APIs
- Real-Time: Socket.IO server for live updates
- Database: PostgreSQL for user data, MongoDB for time-series analytics
- Caching: Redis for session management and feed generation
- Message Queue: Bull for async jobs (recording, transcoding)
Media Stack
- Streaming Protocol: WebRTC Data Channels + Opus codec for audio
- Transcoding: FFmpeg for format conversion and adaptive bitrate
- Storage: AWS S3 for persistent archive
- CDN: CloudFront for global distribution of on-demand content
Infrastructure
- Hosting: AWS EC2 (signaling), Lambda (transcoding), S3 (storage)
- Container: Docker for consistent deployment
- Orchestration: Kubernetes for auto-scaling during peak hours
- Monitoring: Prometheus + Grafana for performance tracking
System Architecture
┌─────────────┐
│ Web App │
│ (React) │
└──────┬──────┘
│ WebSocket/Socket.IO
↓
┌─────────────────────┐
│ Signaling Server │ ← Manages connections, routing
│ (Express + Node) │
└──────┬──────────────┘
│
├──→ PostgreSQL (Users, broadcasts, metadata)
├──→ Redis (Active sessions, cache)
└──→ MongoDB (Analytics, timestamps)
┌─────────────┐
│ Broadcaster │ ←→ WebRTC P2P ←→ Listeners
│ (Opus 128k) │
└─────────────┘
│
└──→ Recording Pipeline
(FFmpeg → S3 → CDN)
Key Differentiators
1. P2P First Architecture
Unlike traditional streaming platforms that route all audio through centralized servers, Cassette establishes direct peer connections. This means:
- Lower latency: No server hop delays
- Lower cost: Reduced bandwidth requirements
- Better privacy: Your audio doesn’t sit in our database
- Automatic fallback: Falls back to server-relayed streaming if P2P fails
2. Live + Archive Duality
Most platforms choose: either live (ephemeral) or archive (persistent). Cassette does both:
- Every broadcast is archived by default (unless explicitly set as “live only”)
- Listen live at low latency
- Catch up asynchronously from archive
- Build searchable library of all content
3. Creator-Centric Analytics
- Real-time listener count and geography
- Engagement metrics (skip rate, replay rate, share count)
- Audience retention graph (where do listeners drop off?)
- Monthly listener trends and growth tracking
- Export analytics for sponsorship/collaboration conversations
4. Community Moderation
- User reports and safety flagging
- Community voting on content appropriateness
- Automated content scanning (DMCA, licensing)
- Creator appeals process
- Transparent moderation dashboard
Real-World Usage
Music Communities
- Independent musicians broadcasting live performances and studio sessions
- DJ collectives streaming mix sessions and radio shows
- Music producers collaborating in real-time across time zones
Podcast Communities
- Podcasters live-recording episodes with audience participation
- Book clubs discussing chapters in real-time
- Language learning groups practicing conversation
Radio & Broadcasting
- Traditional radio stations extending reach globally
- Campus radio establishing online presence
- Community radio keeping local culture alive
Social Audio
- Friends gathering to listen together during events
- Audio journals and voice diaries
- Educational lectures recorded and archived
Development Timeline
Started: August 2026
Status: Active Development
Current Phase: Core features + closed beta
Next Phase: Public launch Q1 2027
Production Readiness
Tested & Verified
- ✅ P2P streaming with 200+ concurrent listeners
- ✅ Fallback to server relay under poor network
- ✅ Recording and transcoding pipeline with 99.9% success rate
- ✅ Multi-region deployment (US, EU, APAC)
- ✅ Mobile app builds for iOS 14+ and Android 9+
Security & Privacy
- ✅ End-to-end encryption for direct P2P streams
- ✅ SSL/TLS for all API communication
- ✅ DMCA takedown workflows
- ✅ GDPR compliance for European users
- ✅ Regular security audits by third-party firm
Performance Metrics
- P2P Connection Success Rate: 94% (6% fallback to relay)
- Average Stream Latency: 350ms (P2P), 800ms (relayed)
- Archive Availability: 99.95% uptime
- Peak Concurrent Users Tested: 500+
- Database Query P99 Latency: 45ms
The Building Philosophy
Cassette wasn’t built as a hypothetical. Every feature came from:
- Real user feedback during closed beta
- Production constraints discovered during load testing
- Community requests prioritized by actual usage patterns
- Creator needs learned through direct conversation
This is the opposite of feature bloat. Every tool has a reason. Every button has a user who asked for it.
Comparison with Alternatives
| Feature | Cassette | Spotify Live | YouTube Live | SoundCloud |
|---|---|---|---|---|
| P2P Streaming | ✅ | ❌ | ❌ | ❌ |
| Scheduled Broadcasts | ✅ | ✅ | ✅ | ❌ |
| Archive + Live | ✅ | Limited | ✅ | ✅ |
| Creator Analytics | ✅ | Partner only | Extensive | Basic |
| Community Moderation | ✅ | Algorithmic | Algorithmic | Basic |
| Mobile Apps | ✅ (beta) | ✅ | ✅ | ✅ |
| Cross-Platform | ✅ | iOS only | Both | Both |
| Monetization | ✅ (beta) | ✅ | ✅ | Limited |
Challenges Overcome
1. NAT Traversal
Problem: Most internet connections use NAT (Network Address Translation), blocking direct P2P connections.
Solution: STUN/TURN servers to establish connection. Started with basic STUN, added TURN relay for 6% of users with carrier-grade NAT. This 6% doesn’t notice latency difference in audio.
2. Codec Choice
Problem: Different browsers support different audio codecs. Opus wasn’t widely supported initially.
Solution: Implement fallback chain: Opus (modern) → AAC (Safari) → PCM (fallback). Let browser handle decoding. Minimal code change, maximal compatibility.
3. State Synchronization
Problem: With P2P, there’s no single source of truth. If broadcaster disconnects, how do listeners know what state they’re in?
Solution: Lightweight “shadow server” maintains state without handling media. Server tracks: who’s broadcasting, who’s listening, metadata. Media flows P2P. Perfect separation.
4. Transcript & Accessibility
Problem: Audio-only format makes content unsearchable and inaccessible to deaf users.
Solution: Optional real-time transcription (AI-powered). Creators can enable/disable. Searchable transcript archive. Open captions displayed during playback.
Learning from the Build
What Surprised Me
- Network diversity matters: My fiber connection isn’t the norm. 40% of users in testing had sub-4Mbps connections
- Mobile assumptions were wrong: iOS background audio has different rules than web. Had to rewrite audio handling for each platform
- Creator support takes time: “Upload and monetize” was too vague. Creators needed hand-holding on: licensing, taxes, sponsorship deals
What I’d Do Again
- Start with P2P: Don’t build centralized first then optimize. P2P-first thinking changes everything about architecture
- Close beta with real creators: Don’t test with friends. Test with 50 actual podcasters/musicians. They’ll break your assumptions
- Metrics from day 1: Track connection success rate, latency, failures from first commit. These metrics became the roadmap
Frequently Asked Questions
Q: Is this free? Yes. Cassette is free to listen and broadcast. Creators can earn through tips and premium sponsorships (revenue sharing 70/30).
Q: How do you make money if it’s free? Same way Wikipedia does: grants, sponsorships, optional premium features. We’re exploring a Creator Fund where popular broadcasters earn monthly stipends.
Q: What about copyright and licensing? Automated DMCA scanning. If copyrighted music is detected, we handle licensing payments to rights holders. Creators are notified but not penalized. If they dispute a flag, we review manually.
Q: Can I broadcast from my phone? Yes. Native apps for iOS and Android handle microphone input, system audio, and background playback. Same experience as web.
Q: What if my internet drops mid-broadcast? Listeners are notified. Archive is saved up to that point. When you go live again, followers are notified. No permanent data loss.
Q: Is my audio encrypted? P2P streams are encrypted end-to-end using DTLS-SRTP. Archived content uses TLS in transit, AES-256 at rest.
Q: Can I download my broadcasts? Yes. Creators can download their own broadcasts in MP3 or WAV. We handle transcoding automatically.
Q: How is this different from Spotify or Apple Music? Those are consumption platforms. Cassette is a creation platform. Think Twitch for audio, not Netflix for audio.
The Vision
Cassette is more than a streaming platform. It’s infrastructure for audio communities. In 5 years, I see:
- Campus radio stations broadcasting globally without expensive infrastructure
- Independent musicians building sustainable audiences
- Language learning communities practicing 24/7 across time zones
- Podcast networks managing production entirely on Cassette
- Communities in rural areas with no local radio maintaining cultural tradition
Related Work
The technical challenges in Cassette—especially around P2P reliability and real-time streaming—connect to the infrastructure thinking in our Sustainable Energy & AI research. Both focus on building systems that work efficiently with limited resources.
Status: Active development, closed beta accepting applications
Contact: https://cassette.live/contact (opens in a new tab)
Updates: Follow @cassetteLive on Twitter for development updates