Stream2Peer is a decentralized video stream management platform built on top of Livepeer. Inspired by StreamYard, this project replicates the core functionalities of StreamYard with added advantages of decentralization, scalability, and enhanced user control. Stream2Peer allows users to broadcast, record, and manage live streams seamlessly using the power of Web3 and Livepeer's open-source technology.
You can join our Discord here.
We are committed to fostering an open and welcoming environment. Please read our Code of Conduct to understand the behavior we expect from our contributors and maintainers
- Decentralized Streaming: Stream2Peer uses the Livepeer protocol to deliver highly scalable and decentralized video streaming services.
- Multiple Streaming Destinations: Broadcast to multiple platforms like YouTube, Twitch, LinkedIn, and more simultaneously.
- Customizable Layouts: Flexible layout options for live streaming, allowing you to control how guests and shared media appear.
- Multi-Guest Support: Invite guests easily to join your live streams with a simple URL.
- Recording and Playback: Record live streams and provide playback options for your audience.
- Browser-Based Streaming: No additional downloads required; Stream2Peer operates entirely from the browser.
- Chat and Audience Interaction: Built-in tools for live chat and audience engagement.
- Monorepo Setup: Organize both frontend and backend codebases in a single repository using
pnpm
workspaces.
-
Frontend:
- Framework: React with Vite for a fast development environment.
- UI: TailwindCSS for styling and flexibility in design.
-
Backend:
-
Streaming & Transcoding:
- Livepeer: Utilized for decentralized transcoding and media handling.
-
Monorepo Management:
- Managed with pnpm workspaces for streamlined dependency management and easy package sharing between the frontend and backend.
Before you begin, ensure you have met the following requirements:
-
Clone the repository:
git clone https://github.com/tobySolutions/stream2peer.git cd stream2peer
-
Install dependencies:
pnpm install
-
Setup environment variables: Environment variables must be set up for both the
frontend
andbackend
. The environment variables are in aenv.example
. -
Run the development server:
-
For backend:
pnpm dev:backend
-
For frontend:
pnpmm dev:frontend
stream2peer/
│
├── packages/
│ ├── frontend/ # React with Vite (Client-side code)
│ └── backend/ # ExpressJS (Server-side code)
│
├── pnpm-workspace.yaml # pnpm workspace setup for monorepo
├── package.json # Root package file
└── README.md # Project documentation
The backend is powered by ExpressJs, and it handles stream creation, user management, and more. The API endpoints are RESTful and support integration with Livepeer’s transcoding API for video handling.
The frontend uses React and Vite, offering a fast and optimized development environment.
Contributions make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. Check out the Contributing guide to see how to set things up on your machine.
- Fork the Project.
- 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.
If you have any questions or need help with setup, you can join our Discord here.
Distributed under the GPL 3.0 License. See LICENSE for more information.
- Code refactoring for more optimizations
- UI migration to be heavy on Shadcn
- Single frontend deployment on Fleek
- Husky tests and CI workflows
- Creator program launch (Integrations with Livepeer tokens)