- Overview
- Features
- Why HLS (HTTP Live Streaming)?
- Architecture
- Project Structure
- Getting Started
- Screenshots
- Future Requirements
E2E Video Streaming Platform is a modern, full-stack application for uploading, sharing, and watching videos. It leverages a scalable, cloud-native backend and a beautiful, responsive React frontend. The platform is designed for creators and viewers, supporting adaptive streaming, comments, and robust AWS-powered infrastructure.
- User authentication (Google sign-in, email/password)
- Video upload with progress and thumbnail
- Video feed and detail pages
- User profile and "My Videos" management
- Comments on videos
- Responsive UI (MUI + Tailwind CSS)
- AWS S3 for video storage
- AWS Lambda for video processing (FFmpeg layer)
- AWS DynamoDB for metadata
- AWS SQS for event-driven processing
- GitHub Actions CI/CD for infrastructure and code
- Swagger UI for API documentation
- Adaptive video streaming for web and mobile
- Live event broadcasting (sports, concerts, webinars)
- Video-on-demand platforms (YouTube, Netflix, etc.)
- E-learning and online courses
- Corporate video delivery and internal communications
- HLS is the industry standard for delivering video over the internet, supported by all major browsers and devices.
- Enables smooth playback by adapting video quality to the viewer’s network conditions.
- Essential for scalable, reliable, and secure video delivery at global scale.
- Adaptive Bitrate Streaming: Automatically adjusts video quality for the best user experience.
- Cross-Platform Support: Works on iOS, Android, desktop browsers, smart TVs, and more.
- Scalability: Easily integrates with CDNs for massive audience reach.
- Resilience: Handles network interruptions gracefully, resuming playback when possible.
- Security: Supports encryption and secure key delivery.
- Frontend: React + Vite + MUI + Tailwind CSS
- Backend: Express.js, AWS SDK
- Storage: S3 (videos), DynamoDB (metadata)
- Processing: Lambda (FFmpeg), SQS (event queue)
- CI/CD: GitHub Actions
├── backend/ # Express.js API, AWS integration, video upload logic
├── frontend/ # React app (Vite, MUI, Tailwind CSS)
│ ├── src/
│ │ ├── components/ # Navbar, VideoCard, VideoPlayer, etc.
│ │ ├── pages/ # Home, Feed, Upload, MyVideos, VideoDetail
│ │ └── ...
├── .github/workflows/ # GitHub Actions for AWS infra & deployment
└── README.md
- Node.js 18+
- AWS account & credentials
- Yarn or npm
cd backend
cp .env.example .env # Fill in AWS and DB config
npm install
npm run devcd frontend
npm install
npm run devSee worker/README.md for details on the Lambda function that processes video files (transcoding, thumbnails, etc.) in response to S3/SQS events.
This Lambda function is automatically built and deployed using GitHub Actions workflows defined in the .github/workflows/ directory of the repository.
- Workflow:
provision-lambda-function.yml- Description: This workflow packages the Lambda code, publishes the FFmpeg layer, creates or updates the Lambda function, and configures SQS triggers and IAM roles. It ensures the Lambda is always up-to-date and properly integrated with the rest of the AWS infrastructure.
For full deployment orchestration (including S3, SQS, DynamoDB, and Lambda), see deploy-master.yml.
A high-level overview of the platform’s architecture, showing the flow between frontend, backend, AWS services, and CI/CD pipelines.
The landing page welcomes users and highlights the platform’s core features, with options to sign in or register.
A clean and simple login dialog for user authentication, supporting Google and email sign-in.
Displays a grid of trending and recent videos from all users, allowing easy browsing and discovery.
A responsive video player with playback controls, showing the selected video in detail.
Shows the video, its description, uploader info, and related videos, providing an immersive viewing experience.
Users can view and add comments under each video, fostering community interaction.
A user-friendly form for uploading new videos, including title, description, and thumbnail selection.
Confirmation screen shown after a successful video upload, with a link to view the new video.
Displays the user’s profile information and a list of their uploaded videos for easy management.
Swagger API documentation for all backend endpoints, supporting easy testing and integration.
- Video transcoding to multiple resolutions
- User roles (admin, moderator, creator, viewer)
- Video analytics dashboard
- Live streaming support
- Subscriptions and notifications
- Social features (likes, shares, follows)
- Advanced search and filtering
- Multi-language support
- Accessibility improvements
- Mobile app (React Native or Flutter)