A full-featured video streaming platform built on Node.js and Express.js, offering an interactive, personalized user experience with real-time analytics, secure user management, and dynamic media content handling. Deployed on Azure App Services, this application employs a CI/CD pipeline via GitHub Actions for smooth, scalable deployment.
- Secure User Authentication: JWT-based authentication with separate access and refresh tokens, stored securely in the user model, ensures safe and reliable user access.
- User Profile and History Management: MongoDB tracks user profiles, watch history, and subscription details, allowing seamless video consumption and personalized interaction tracking.
- Channel Subscription System: Users can subscribe or unsubscribe to channels, view the list of their subscriptions, and check a channel’s subscriber details.
- Cloud-Based Media Management: Cloudinary integration enables users to easily upload and update profile avatars and channel cover images.
- Efficient Data Management: MongoDB aggregation pipelines power advanced features, supporting efficient handling of user watch history and subscriptions.
- Robust Error Handling and Validation: Comprehensive error handling ensures a smooth user experience with clear error messaging and input validation.
- CI/CD Pipeline for Scalable Deployment: GitHub Actions streamline the CI/CD pipeline, enhancing deployment efficiency and scalability.
- Real-Time Analytics and Health Monitoring: Real-time analytics and a health-check API maintain platform stability and responsiveness.
- Backend: Node.js, Express.js
- Database: MongoDB (with Aggregation Pipelines)
- Authentication: JWT for access and refresh tokens, bcrypt for secure password hashing
- Media Management: Cloudinary for avatar and cover image storage
- CI/CD and Deployment: GitHub Actions, Azure App Services
- Node.js (v14+)
- MongoDB
- Cloudinary Account for media management
- Azure App Services for deployment
-
Clone the Repository
git clone https://github.com/your-username/video-streaming-app.git cd video-streaming-app
-
Install Dependencies
npm install
-
Configure Environment Variables: Add a
.env
file for JWT secret keys, MongoDB URI, Cloudinary credentials, and any other configuration. -
Run the Application
npm start
-
Test the Application
npm test
- Configure Azure App Services settings.
- Deploy using GitHub Actions for automatic deployment on each commit to the main branch.
Contributions are welcome! Please fork this repository, create a new branch, and submit a pull request with your changes.
This project is licensed under the MIT License. See the LICENSE file for details.