DecentraStream is a blockchain-powered video-sharing platform that empowers creators by eliminating centralized control. Upload videos, engage with comments, and earn crypto tipsβall while maintaining ownership of your content.
π Live Demo: DecentraStream
# Clone the frontend repo
git clone https://github.com/TechSmith90210/decentrastream && cd decentrastream
# Install dependencies
npm install
# Start frontend
npm run dev
# Clone the backend repo
git clone https://github.com/TechSmith90210/decentrabackend && cd decentrabackend
# Install dependencies
npm install
# Start backend
npm start
- π‘ Decentralized Video Hosting β Videos stored on IPFS, ensuring censorship resistance.
- π Adaptive Streaming β Videos are transcoded with FFmpeg and stored in multiple qualities on IPFS.
- π On-Chain Comments β Managed via
DecentraComments.sol
. - π° Crypto Tipping β ETH tipping powered by
DecentraTipping.sol
. - π€ Custom Profiles β Users can create and manage profiles via
DecentraProfile.sol
. - π Web3 Authentication β Seamless MetaMask login via Wagmi v2.
- Frontend β Next.js, Tailwind CSS, Wagmi v2, Axios
- Backend β Express.js, Node.js, FFmpeg, Multer (Deployed on Railway)
- Storage β IPFS (via Pinata)
- Blockchain β Ethereum Sepolia Testnet (Solidity Smart Contracts)
DecentraStream's smart contracts power the platform:
DecentraStream.sol
β Stores video details and core functionality.DecentraProfile.sol
β Manages user profiles.DecentraComments.sol
β Enables on-chain comments.DecentraTipping.sol
β Facilitates ETH tipping.
All contracts are deployed on the Sepolia Testnet.
Create a .env
file in the root directory and add the following:
NEXT_PUBLIC_PROJECT_ID=your_project_id
PRIVATE_KEY=your_private_key
# Contract Addresses
NEXT_PUBLIC_VIDEO_CONTRACT_ADDRESS=0xYourVideoContractAddress
NEXT_PUBLIC_PROFILE_CONTRACT_ADDRESS=0xYourProfileContractAddress
NEXT_PUBLIC_COMMENT_CONTRACT_ADDRESS=0xYourCommentContractAddress
NEXT_PUBLIC_TIPPING_CONTRACT_ADDRESS=0xYourTippingContractAddress
NEXT_PUBLIC_BACKEND_URL=your_backend_url
NEXT_PUBLIC_PINATA_API_KEY=your_pinata_api_key
LIVEPEER_API_KEY=your_livepeer_api_key
PINATA_SECRET_API_KEY=your_pinata_secret_key
NEXT_PUBLIC_PINATA_JWT=your_pinata_jwt
Method | Endpoint | Description |
---|---|---|
POST |
/upload |
Transcodes video into multiple qualities, uploads them to IPFS, and returns their IPFS CIDs. |
We welcome contributions! To contribute:
- Fork the repo.
- Create a new branch (
feature/new-feature
). - Commit your changes.
- Open a pull request and let's improve DecentraStream together!
This project is licensed under the MIT License.