A decentralized file storage platform built on Shelby Protocol. Upload any file type and store it permanently on the Aptos blockchain with erasure coding.
- π Universal File Upload - Support for all file types: documents, images, videos, audio, archives, and more
- π³ Petra Wallet Integration - Real wallet connection with transaction signing
- π Blockchain Storage - Files stored on Shelby Protocol with Clay erasure coding
- π― Drag & Drop - Easy file upload with drag-and-drop interface
- π± Modern UI - Responsive design with file preview and gallery
- π¬ File Management - View, preview, and download all your uploaded files
- π Decentralized - Files stored across distributed Shelby network nodes
- β° Expiration Management - Set custom expiration dates for stored files
- π Performance Benchmarking - Real-time metrics comparing Shelby with AWS/Azure/GCP
- β‘ Speed Analytics - Track upload/download speeds with detailed breakdowns
- Frontend: Next.js 14 App Router, TypeScript, Tailwind CSS
- UI Components: shadcn/ui, Lucide icons
- Blockchain: Aptos Shelbynet
- Storage SDK: @shelby-protocol/sdk with Clay erasure coding
- Wallet: Petra browser extension
git clone https://github.com/PhiBao/SkyStorage.git
cd SkyStorage
npm installCreate .env.local:
# Shelby API Key (optional - for enhanced features)
NEXT_PUBLIC_SHELBY_API_KEY=your_shelby_api_key
# Aptos API Key (optional - uses public endpoints by default)
NEXT_PUBLIC_APTOS_API_KEY=npm run dev-
Connect Wallet
- Click "Connect Wallet" button
- Important: Switch Petra wallet to Shelbynet network
- Approve the connection
-
Configure Shelbynet in Petra
- Network Name:
Shelbynet - RPC URL:
https://api.shelbynet.shelby.xyz/v1 - Chain ID: Check Shelby Documentation
- Network Name:
-
Upload Files
- Drag & drop any file or click to browse
- Supports all file types up to 100MB
- Approve the blockchain transaction in Petra wallet
- File will be encoded and uploaded to Shelby network
-
Manage Your Files
- All uploaded files appear in the gallery
- Click Preview to view images/videos inline
- Click Download to download from Shelby network (with speed metrics)
- Click the explorer icon to view on Shelby Explorer
-
Performance Metrics
- View real-time upload/download speeds
- Compare with AWS S3, Azure, Google Cloud
- See detailed timing breakdowns
- Understand trade-offs between Web2 and Web3 storage
- Documents: PDF, DOC, DOCX, TXT, RTF, ODT
- Spreadsheets: XLS, XLSX, CSV
- Images: JPG, PNG, GIF, WEBP, SVG, BMP
- Videos: MP4, AVI, MOV, WEBM, MKV, FLV
- Audio: MP3, WAV, OGG, FLAC, AAC
- Archives: ZIP, RAR, 7Z, TAR, GZ
- Code: JS, TS, PY, JAVA, CPP, HTML, CSS
- Data: JSON, XML, YAML, YML
- And more!
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β File to Shelby Flow β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β Select/Drop File Locally β
β (Any file type, up to 100MB) β
ββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β Erasure Coding (Clay) β
β - Split into chunks β
β - Add redundancy β
β - Generate merkle root β
ββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β Register on Blockchain β
β - Sign with Petra wallet β
β - Store merkle root on-chain β
β - Set expiration β
ββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β Upload to Shelby Network β
β - Distribute chunks across nodes β
β - Decentralized storage β
ββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββ
β Access Anywhere β
β - Download from any node β
β - Preview in browser β
β - Verify with merkle root β
ββββββββββββββββββββββββββββββββββββββββββ
- Node.js v18 or later
- npm or pnpm
- Petra Wallet - Browser extension for Aptos
Visit petra.app and install the browser extension.
β Now works on Vercel! Since we removed yt-dlp dependency, this app can be deployed to any platform:
# Deploy to Vercel
vercel
# Or deploy to Netlify
netlify deploy
# Or deploy to Railway
railway upSee VERCEL_DEPLOYMENT.md for detailed deployment guides.
SkyStorage includes comprehensive benchmarking to compare Shelby Protocol with traditional cloud providers:
- File upload time (including erasure coding and blockchain transaction)
- Upload speed (MB/s)
- Download time from Shelby network
- Download speed (MB/s)
- Real-time comparison with AWS S3, Azure CDN, YouTube, Google Drive
View detailed comparison table showing:
- Shelby Protocol: Decentralized, permanent, blockchain-verified storage
- AWS S3: 5-25 MB/s upload, 10-50 MB/s download
- Azure Blob: 10-30 MB/s upload, 20-100 MB/s download
- Google Cloud: 15-40 MB/s upload, 25-120 MB/s download
- Cloudflare R2: 20-50 MB/s upload, 30-150 MB/s download
Key Insight: While Shelby may have higher latency due to blockchain transactions and erasure coding, it provides unique benefits: permanence, censorship resistance, and cryptographic verification that Web2 services cannot match.
See BENCHMARKING.md for detailed documentation.
GET /api/list-videos- Query files from blockchainGET /api/get-file- Retrieve uploaded file (legacy endpoint)
Build the application:
npm run buildStart production server:
npm startSkyStorage/
βββ src/
β βββ app/ # Next.js 14 App Router
β β βββ api/ # API Routes
β β β βββ get-file/ # File retrieval
β β β βββ list-videos/ # Query files from blockchain
β β βββ layout.tsx # Root layout with providers
β β βββ page.tsx # Home page
β β βββ globals.css # Global styles
β βββ components/ # React Components
β β βββ ui/ # UI Components (shadcn/ui)
β β βββ Header.tsx # Navigation with network warning
β β βββ FileUploader.tsx # File upload interface
β β βββ FileGallery.tsx # File management & preview
β β βββ BenchmarkComparison.tsx # Performance comparison table
β β βββ WalletProvider.tsx # Petra wallet integration
β β βββ WalletInstallModal.tsx # Wallet install prompt
β βββ hooks/
β β βββ useUploadToShelby.tsx # Shelby SDK upload hook
β βββ lib/
β βββ shelby-client.ts # Shelby & Aptos client config
β βββ utils.ts # Utility functions
βββ docs/ # Documentation
βββ README.md # This file
- Open Petra wallet
- Click network dropdown
- Select "Add Network" or "Custom Network"
- Configure:
- Name: Shelbynet
- RPC URL:
https://api.shelbynet.shelby.xyz/v1 - Chain ID: (from Shelby docs)
Wrong network error
- Ensure Petra wallet is on Shelbynet
- Check the RPC URL matches:
https://api.shelbynet.shelby.xyz/v1
File preview/download not working
- Verify file was uploaded successfully
- Check transaction on Shelby Explorer
- Ensure blob hasn't expired
Wallet connection issues
- Refresh the page
- Unlock Petra wallet
- Check wallet is on Shelbynet
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
- Shelby Protocol - Decentralized storage infrastructure
- Aptos Labs - Layer 1 blockchain platform
Built with β€οΈ using Shelby Protocol on Aptos