A modern live streaming platform built with React/TypeScript frontend and C# .NET backend, featuring real-time streaming, chat, and adaptive bitrate playback.
- Node.js 18+ and npm/yarn
- .NET 9 SDK
- FFmpeg (for stream processing)
- OBS Studio (for streaming)
Frontend (React/TypeScript):
git clone https://github.com/shepherrrd/bytecast.git
cd bytecastBackend (C# .NET):
git clone https://github.com/shepherrrd/bytecast-backend.git
cd bytecast-backendCreate a .env file in the root directory:
# Backend API Configuration
VITE_API_BASE_URL=https://localhost:7127
VITE_SIGNALR_URL=https://localhost:7127/streamHub
# HLS Streaming Configuration
VITE_HLS_BASE_URL=https://localhost:7127/hls
# RTMP Configuration (for OBS)
VITE_RTMP_URL=rtmp://localhost:1935/livenpm installnpm run devThe frontend will be available at http://localhost:5173
Note: This README covers the frontend setup. You'll also need to clone and run the backend separately:
Backend Repository: https://github.com/shepherrrd/bytecast-backend
Make sure your backend (.NET API) is running on https://localhost:7127 with the following endpoints available:
/api/auth/*- Authentication endpoints/api/stream/*- Stream management/api/user/*- User management/streamHub- SignalR hub for real-time features/hls/{streamKey}/*- HLS streaming endpoints
- Settings → Stream
- Service: Custom
- Server:
rtmp://localhost:1935/live - Stream Key: Use your API key from the Studio page
- Go to
/studioin the app - Create a new stream
- Copy the stream key
- Configure OBS with the stream key
- Start streaming in OBS
- The preview will appear automatically in the Studio page
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- Live Streaming: RTMP ingestion with HLS playback
- Adaptive Bitrate: Multiple quality levels (1080p, 720p, etc.)
- Real-time Chat: WebSocket-based chat system
- Stream Management: Create, manage, and monitor streams
- User Authentication: JWT-based authentication
- Stream Preview: Real-time preview while streaming
- VOD Support: Video on demand functionality
src/
├── components/ # Reusable React components
│ ├── VideoPlayer.tsx # Basic video player
│ ├── EnhancedVideoPlayer.tsx # Advanced HLS player with quality selection
│ ├── StreamPreview.tsx # Stream preview component
│ └── ...
├── pages/ # Page components
│ ├── HomePage.tsx # Landing page
│ ├── StudioPage.tsx # Streaming studio
│ ├── LiveStreamPage.tsx # Stream viewing page
│ └── ...
├── services/ # API and service integrations
│ ├── api.ts # REST API client
│ └── signalr.ts # SignalR client
├── contexts/ # React contexts
└── types/ # TypeScript type definitions
- Check if backend is running on
https://localhost:7127 - Verify OBS is configured with correct RTMP URL and stream key
- Check browser console for errors
- Test HLS URL manually at
/hls-test
- Verify all environment variables are set correctly
- Check if SignalR hub is accessible
- Ensure CORS is configured properly in the backend
- Try different browsers (Safari has native HLS support)
- Check network connectivity
- Verify HLS segments are being generated by the backend
Use the built-in HLS test page at /hls-test to manually test stream URLs and debug playback issues.
- The app uses HLS.js for adaptive streaming in browsers
- SignalR provides real-time features (chat, viewer count, stream notifications)
- Streams are ingested via RTMP and transcoded to HLS
- Quality selection is available for adaptive bitrate streaming