YT-ENGINE is a backend-driven video streaming platform that supports uploading, transcoding, and serving videos in multiple resolutions using HLS. It is built with a modular architecture to handle channels, subscriptions, playlists, and user engagement efficiently.
- Clone the repository:
git clone <repository-url>
cd yt-engine-
Ensure all required configuration files are added (database credentials, S3 settings, etc.).
-
Start the services using Docker Compose:
docker compose up --buildOnce running, you can explore API routes and features through the API documentation.
YT-ENGINE is designed as a service-oriented backend for video streaming:
- API Gateway – Central entry point for all requests (video, channel, user, subscription).
- Worker Services – Handle video transcoding, chunking, and background tasks via BullMQ.
- Artifact Storage – Videos are stored in S3 and served as HLS streams (
.m3u8+.tschunks). - Database Layer – Tracks users, videos, playlists, subscriptions, and watch history.
- Asynchronous Event Flow – Ensures reliable processing of uploads, encodings, and notifications.
- Register/login with profile images.
- Update account details and password.
- Fetch user profile, watch history, and uploaded videos.
- Upload videos and thumbnails.
- Transcode videos into multiple resolutions using ffmpeg.
- Generate HLS streams (
.m3u8playlists +.tschunks). - Fetch, update, or delete videos.
- Create, update, and delete playlists.
- Add/remove videos from playlists.
- Subscribe/unsubscribe to channels.
- Comment on videos with CRUD operations.
- Like/unlike videos and comments.
- Fetch channel stats (views, subscribers).
- API status available at
/api/healthcheck.
- Adaptive bitrate streaming via HLS (handled by HLS.js).
- Private video access control and permissions.
- Background encoding for additional resolutions.
- Analytics and engagement metrics (views, watch time).
- WebSocket support for live comments and notifications.
YT-ENGINE is an experimental backend project. Contributions and feedback are welcome:
- Open an issue for bugs or feature requests.
- Submit pull requests for improvements.
- Focus on clarity and intent; perfection is not required.
- Open an issue on the GitHub repository.
- Reach out via email or discussion forums for help.