{"id":24801235,"url":"https://github.com/sahariardev/eduscope","last_synced_at":"2025-10-13T02:31:58.424Z","repository":{"id":270105205,"uuid":"909347282","full_name":"sahariardev/eduScope","owner":"sahariardev","description":"This repository contains a highly scalable 🎥 course platform that leverages modern 🔧 technologies to provide video streaming in 🎥 HLS format. The platform includes both an 🔨 admin panel for course management and a user-facing interface for consuming 📝 content.","archived":false,"fork":false,"pushed_at":"2025-01-29T16:25:29.000Z","size":1478,"stargazers_count":1,"open_issues_count":6,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-29T17:29:52.750Z","etag":null,"topics":["aws","ffmpeg","hls-stream","mysql","nest","next","nodejs","s3","sqs","video-streaming-server"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sahariardev.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-28T12:36:40.000Z","updated_at":"2025-01-29T16:25:32.000Z","dependencies_parsed_at":"2025-01-12T17:18:43.948Z","dependency_job_id":"4f7d7c84-639e-445c-bb01-c6caffd54c2e","html_url":"https://github.com/sahariardev/eduScope","commit_stats":null,"previous_names":["sahariardev/eduscope"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahariardev%2FeduScope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahariardev%2FeduScope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahariardev%2FeduScope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sahariardev%2FeduScope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sahariardev","download_url":"https://codeload.github.com/sahariardev/eduScope/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236294633,"owners_count":19125883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","ffmpeg","hls-stream","mysql","nest","next","nodejs","s3","sqs","video-streaming-server"],"created_at":"2025-01-30T04:19:48.816Z","updated_at":"2025-10-13T02:31:58.419Z","avatar_url":"https://github.com/sahariardev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📺 Video Course Platform\n\nThis repository contains a highly scalable  course platform that leverages modern 🔧 technologies to provide video streaming in  HLS format. The platform includes both an 🔨 admin panel for course management and a user-facing interface for consuming  content.\n\n## 🔬 Tech Stack\n\n- **Frontend**: Next.js\n- **Backend**: Nest.js\n- **Storage**: 📥 Amazon S3 (for file storage)\n- **Queue Service**: 📢 Amazon SQS (for asynchronous task management)\n- **Database**: 📊 MySQL (for data storage and retrieval)\n\n---\n\n## 🌐 Features\n\n### 🔨 Admin Panel\n\n- 💾 Upload files in chunks using a multipart upload mechanism.\n- 🎮 Create and manage courses.\n- ✨ Automatic transcoding of uploaded videos to HLS format.\n\n### 👤 User Interface\n\n- 🔄 Browse available courses.\n- 🎥 Stream in HLS format for a smooth viewing experience.\n\n### 🔄 Backend Features\n\n- 💾 Handles uploads to Amazon S3 using multipart upload for efficient handling of large files.\n- 📢 Publishes SQS events upon successful upload.\n- ⏳ Listens to notifications for triggering the transcoding process.\n- ⚙️ Transcodes into HLS format for adaptive streaming.\n- 🌐 Scalable and fault-tolerant architecture.\n\n---\n\n## 📊 System Architecture\n\n1. **Frontend**: The Next.js frontend allows admins to upload in chunks using multipart upload. Regular users can browse and view courses.\n\n2. **Backend**:\n\n    - The Nest.js backend processes uploads and communicates with Amazon S3.\n    - After a upload, it sends a notification to an Amazon SQS queue.\n\n3. **SQS Worker**:\n\n    - A separate service listens to the queue for new events.\n    - This worker processes the uploaded and transcodes it into multiple HLS formats for adaptive streaming.\n\n4. **Storage**:\n\n    - 📥 Amazon S3 is used for storing and HLS transcoded files.\n\n5. **Database**:\n\n    - 📊 MySQL is used to store information about courses and user data.\n\n---\n\n## 🔧 Installation\n\n### Prerequisites\n\n- 🛠️ Node.js (≥ 16.x)\n- 📊 MySQL (≥ 8.x)\n- 🌐 AWS account with access to S3 and SQS\n\n### Steps\n\n1. 🔄 Clone the repository:\n\n   ```bash\n   git clone git@github.com:sahariardev/eduScope.git\n   cd eduScope\n   ```\n\n2. 🔄 Install dependencies for both frontend and backend:\n\n   ```bash\n   cd edu-scope-backend\n   npm install\n\n   cd ../edu-scope-client\n   npm install\n   ```\n\n3. 🔧 Configure environment variables:\n\n- Create `.env` files in both `frontend` and `backend` directories.\n- Add the following variables:\n\n  **Frontend `.env`**:\n  ```env\n  NEXT_PUBLIC_API_URL=\u003cbackend-api-url\u003e\n  ```\n\n  **Backend `.env`**:\n  ```env\n  DATABASE_URL=\u003cdata_url\u003e\n  JWT_TOKEN=\u003cjwt_sign_key\u003e\n  AWS_ACCESS_KEY_ID=\u003caws-access_key_id\u003e\n  AWS_SECRET_ACCESS_KEY=\u003caws_secret_key\u003e\n  AWS_VIDEO_UPLOAD_BUCKET=\u003cvideo_upload_bucket_name\u003e\n  AWS_VIDEO_HLS_BUCKET=\u003chls_bucket_name\u003e\n  AWS_S3_REGION=\u003caws_region\u003e\n  AWS_SQS_URL=\u003csqs_url\u003e\n  ```\n\n4. 🔧 Set up the database:\n\n   ```bash\n   cd edu-scope-backend\n   npm run migrate\n   ```\n\n5. 🔄 Start the development servers:\n\n   ```bash\n   # Start backend\n   cd edu-scope-backend\n   npm run start:dev\n\n   # Start frontend\n   cd ../edu-scope-client\n   npm run dev\n   ```\n\n---\n\n## 🚀 Deployment\n\n### Backend\n\n- Use 🛠️ Docker or deploy directly to a cloud environment.\n- Ensure the `.env` variables are properly configured in the production environment.\n\n### Frontend\n\n- 🔄 Build the Next.js app:\n  ```bash\n  npm run build\n  ```\n- Serve using a 📠 hosting service like Vercel or deploy on your own server.\n\n### Worker\n\n- Deploy the 📢 SQS worker service alongside the backend or as a standalone service.\n- Ensure it has access to the 📢 queue and 📥 S3 bucket.\n\n---\n\n## 💡 How It Works\n\n1. **🎥 Upload**: Admins upload files in chunks. The frontend communicates with the backend to manage multipart uploads to S3.\n2. **📢 Notification**: Once the upload is complete, the backend sends an event to the SQS queue.\n3. **⚙️ Transcoding**: The worker service picks up the event from and transcodes the into multiple HLS formats.\n4. **🎥 Streaming**:  Users stream the directly from S3 in HLS format.\n\n---\n\n## 📚 Contributing\n\nWe welcome 🌐 contributions! Please submit a  pull request or open an issue for discussion.\n\n---\n\n## 🌐 License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n---\n\n## 📧 Contact\n\nFor any inquiries, please contact: rifatsahariar@gmail.com\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsahariardev%2Feduscope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsahariardev%2Feduscope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsahariardev%2Feduscope/lists"}