Welcome to the repository for our video upload, transcode, and live stream application. This project is currently under development, and I am excited to share my progress with you. Below, you will find all the necessary details about the project, its structure, technologies used, and how to get started.
This application allows users to upload videos, which are then transcoded and made available for live streaming. The backend is built with Node.js and Express, while the frontend is developed using Angular. We use a combination of MongoDB and PostgreSQL for data storage, and Kafka for messaging between microservices.
- Frontend: Angular 16, NGRX
- Backend: Node.js 18.17, Express
- Databases: MongoDB with mongoose, PostgreSQL with Sequelize ORM
- Messaging: Kafka
- Testing: Jest
- Containerization: Docker
- Orchestration: Kubernetes
- Authentication: JWT HSA/RSA
- Email: Node-Mailer
- File Storage: AWS S3
- Error Handling: Custom NPM package
root
│── backend
│ ├── apigateway
│ ├── auth
│ ├── infra
│ ├── isolated-uploader
│ ├── profile
│ ├── video
│ ├── ...
│── frontend
│ ├── src
│ │ ├── app
│ │ ├── assets
│ │ ├── environments
│ │ └── ...
│ ├── angular.json
│ ├── package.json
│ └── ...
└── ...
-
Prerequisites
- Node.js 18.17
- Docker
- Kubernetes
- MongoDB
- PostgreSQL
- AWS S3 CLI/aws-sdk
- Node.js 18.17
-
Clone the repository:
git clone https://github.com/AswinES97/Video-app-pub.git
-
Install dependencies:
1. In backend, npm install on all services if you want to run individual services.
2. create .env for all services as mentioned in the respective readme file.
3. In frontend, 'npm install'.
- In backend, if you have a k8s cluster/minikube follow the readme on the backend to start.
- In frontend, ng serve
- Fork the repository
- Create a new branch (git checkout -b feature-branch)
- Commit your changes (git commit -am 'Add new feature')
- Push to the branch (git push origin feature-branch)
- Create a new Pull Request