Skip to content

Decentralized music player and podcast platform on Internet Computer - Censorship-resistant audio sharing for artists and podcasters

Notifications You must be signed in to change notification settings

Inturious-Labs/rivet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rivet

A decentralized media player and podcast platform built on the Internet Computer. Rivet enables censorship-resistant audio and video sharing for artists, podcasters, and groups, inspired by the peer-to-peer spirit of Napster.

Vision

Rivet provides a platform where:

  • Artists can share music without fear of censorship or regional restrictions
  • Podcasters can host RSS feeds with permanent, decentralized storage
  • Users can upload and share audio/video files with friends or private groups
  • Private groups can share media accessible only to members (China-accessible, unlike YouTube)
  • Content creators maintain control over their work through decentralized infrastructure

Key Concepts

Theaters (Media Vaults)

Users create personal "Theaters" - dedicated canisters that store their media content. Like AWS S3 buckets, but on the Internet Computer. Each Theater contains thematically related content (album, podcast series, video collection) and generates its own RSS feed.

Visibility Modes

  • Public: Discoverable by anyone, indexed in search
  • Unlisted: Secret link access (like YouTube unlisted)
  • Private: Invite-only access, requires login

User Roles

  • Listener: Anonymous users who can discover and play public content
  • Member: Registered users (via id.ai) who can like, follow, bookmark, and access private Theaters
  • Curator: Members who own Theaters and upload content

Features (Planned)

Core Playback

  • No Account Required: Anyone can discover and stream public content
  • Audio Format Support: MP3, M4A, FLAC, OGG, WAV
  • Video Format Support: MP4, MKV, WebM (max 500MB per file)
  • In-Browser Playback: No app download required
  • HTTP Streaming: Range request support for seeking

Social Features

  • Follow Curators: Get notified of new uploads
  • Like Tracks: Build your personal collection
  • Bookmark Theaters: Quick access to favorites
  • Playlists: Create custom collections (future)

Content Creation

  • Personal Theaters: Create your own media vault
  • Easy Upload: Drag-and-drop audio/video files
  • 7-Day Free Tier: Upload free for 7 days, pay to persist
  • Podcast RSS: Auto-generated feeds for podcast apps
  • Social Sharing: Share media on Twitter, Facebook, etc.
  • SEO Friendly: Google-indexable media pages

Censorship Resistance

  • Decentralized: No single point of control
  • User-Funded: Creators pay for their own storage cycles
  • Permanent URLs: Content-addressed on Internet Computer
  • Regional Freedom: Accessible globally, including from China

Technology Stack

  • Backend: Motoko on Internet Computer
  • Storage: IC Stable Memory & Theater Canisters
  • Identity: DFINITY id.ai (passwordless authentication)
  • Frontend: React/Svelte/Vue (TBD) + Asset Canister
  • Landing Page: inturious.com (Web2 entry point)

Architecture

Rivet uses a multi-canister architecture for scalability and user ownership:

  • Frontend Canister: Player UI, discovery interface, Theater management
  • Backend Canister: User management, Theater registry, social graph, discovery engine
  • Theater Canisters: User-owned canisters for media storage (dynamically created)
    • Each Curator can create multiple Theaters
    • Each Theater is a separate canister with its own cycle balance
    • Theaters serve audio/video via HTTP and generate RSS feeds

For detailed architecture documentation, see:

Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/Inturious-Labs/rivet.git
cd rivet

# Install dependencies (when available)
npm install

Development

Running Locally

# Start the IC replica in the background
dfx start --background

# Deploy canisters to local replica
dfx deploy

# Check canister status
dfx canister status rivet_backend

Testing

# Run unit tests (when available)
npm test

# Run integration tests
dfx canister call rivet_backend greet '("Rivet")'

Project Status

This project is in early development. Current phase: Initial scaffolding and architecture design.

Resources

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

License

MIT License (TBD)

Acknowledgments

Inspired by the peer-to-peer music sharing revolution and the vision of a decentralized internet.

About

Decentralized music player and podcast platform on Internet Computer - Censorship-resistant audio sharing for artists and podcasters

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages