Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/toufiq-austcse/video-touch
Video Touch is a Video Hosting & Streaming platform. In Video Touch users can easily upload, manage and stream videos on demand
https://github.com/toufiq-austcse/video-touch
cloudfront ffmpeg graphql mongodb nestjs nextjs rabbitmq s3 shadcn-ui streaming
Last synced: 3 months ago
JSON representation
Video Touch is a Video Hosting & Streaming platform. In Video Touch users can easily upload, manage and stream videos on demand
- Host: GitHub
- URL: https://github.com/toufiq-austcse/video-touch
- Owner: toufiq-austcse
- Created: 2024-03-15T13:24:13.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2024-07-12T21:35:17.000Z (4 months ago)
- Last Synced: 2024-07-13T00:12:01.286Z (4 months ago)
- Topics: cloudfront, ffmpeg, graphql, mongodb, nestjs, nextjs, rabbitmq, s3, shadcn-ui, streaming
- Language: TypeScript
- Homepage: https://video-touch.vercel.app
- Size: 4.28 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# Video Touch
> Video Touch is a Video Hosting & Streaming platform. In Video Touch users can easily upload, manage and stream videos on demand.## Table Of Contents
- [The Goals of This Project](#goal)
- [Features](#features)
- [Technologies](#technologies---libraries)
- [Backend Architecture](#the-domain-and-bounded-context---service-boundary)
- [How to Run](#how-to-run)
- [Documentation Apis](#documentation-apis)
- [Frontend](#frontend)
### The Goals Of This Project
---
* Implementing video processing with the help of asynchornus job queue
* Generating video thumbnail
* Using RabbitMQ as a Job Queue
* Using Event Driven Communications
* Using GraphQL for client side communications
* Using AWS s3 as storage
* Stream videos with CDN (AWS Cloudfront)
* Building a simple Dashboard with Next.js and shadcn/ui
* Using Github Actions for implenting CI
* Using Docker-Compose for our deployment mechanism.
### Features
---
* User Login/Registration
* Video Upload
* Video Transcoding in several resolutions(720p,540p,480p,360p)
* Automatic Thumbnail Generation
* Stream videos on Demand with CDN
### Technologies
---
* [NestJS](https://nestjs.com/) - A progressive Node.js framework
* [MongoDB](https://www.mongodb.com/) - As Database
* [RabbitMQ](https://www.rabbitmq.com/) - As Job Queue and Event Driven Communications
* [GraphQL](https://graphql.org/) - For writing Client Side API's
* [AWS S3](https://aws.amazon.com/s3/) - As Video Storage
* [AWS CloudFront](https://aws.amazon.com/cloudfront/) - As CDN
* [Next.js](https://nextjs.org/) - For developing dashboard
* [shadcn/ui](https://ui.shadcn.com/) - UI compoenent
* [Docker](https://www.docker.com/) - For deployment
* [Github Actions](https://github.com/features/actions) - For CI
### How To Run
---
To run this project locally, follow these steps:
1. Clone this repository
```
git clone [email protected]:toufiq-austcse/video-touch.git
```
2. Run server app
* You will need AWS credentials, S3 Bucket and Cloudfront distribution
* From project directory run the following commands:
```
cd server
cp example.env .env
```
* Put your aws credentials, s3 bucket name and cloudfront cdn url in the following env's value
```
AWS_ACCESS_KEY_ID=
AWS_REGION=
AWS_SECRET_ACCESS_KEY=
AWS_S3_BUCKET_NAME=
CDN_BASE_URL=
```
* Create a seperate diretory for videos in your s3 bucket and put directory url in the following env value. Example value `https://test-bucket.s3.ap-southeast-1.amazonaws.com/videos````
VIDEO_BASE_URL=
```
* Put your JWT secret key and token expiren value in seconds in the following env's value
```
JWT_SECRET=
JWT_EXPIRATION_TIME_IN_SEC=
```
* Run the follwong command
```
docker compose up -d
```
3. Run the Frontend app
* From project directory run the following commands:
```
cd frontend
docker compose up -d
```Click here to show the screenshots of the project
SignUp Page
Login Page
Dashboard
Video Details Page
Import Video From Link
Upload Video
Edit Video Details