A decentralized Indie Media Streaming App built on Next.js and Shelby Protocol — decentralized hot-storage on the Aptos blockchain.
- 🎬 Upload Dashboard — Drag & drop audio/video files, uploaded to Shelby's decentralized network
- 🔍 Content Feed — Browse all media with gradient thumbnails and metadata
▶️ Media Player — Stream directly from Shelby's fast retrieval URLs- 👤 Wallet Accounts — Connect your Aptos wallet (Petra, etc.) to track your uploads
| Layer | Technology |
|---|---|
| Frontend | Next.js 15 (App Router, TypeScript) |
| Storage | Shelby Protocol — decentralized hot-storage on Aptos |
| Blockchain | Aptos Testnet |
| Wallet | @aptos-labs/wallet-adapter-react |
| Styling | Vanilla CSS with dark theme |
- Shelby API Key — Get one at docs.shelby.xyz
- Aptos Account — Fund with APT (testnet faucet) + ShelbyUSD (Shelby Discord)
# Install dependencies
npm install
# Configure environment variables
cp .env.example .env.local
# Fill in your keys in .env.local
# Run the dev server
npm run devOpen http://localhost:3000.
NEXT_PUBLIC_SHELBY_API_KEY=your_shelby_api_keyThat's it! No private key or account address needed — uploads are signed directly by the user's Aptos wallet in the browser.
- Push this repo to GitHub
- Import the repo in Vercel
- Add environment variables in Settings → Environment Variables
- Deploy!
Note: The JSON metadata store (
data/media.json) is a local MVP approach. For production, swap in a persistent database.
Upload (browser) → API Route (server) → Shelby SDK → Shelby Network (Aptos)
→ data/media.json (metadata)
Stream (browser) ← HTML5 <video/audio> ← https://api.testnet.shelby.xyz/shelby/v1/blobs/{addr}/{name}