Hello folks 👋
The first phase of my GSoC is pretty exciting and challenging , together with my mentor I decided to complete the video processing part of the project in the first phase of the project.
Before started working on the project me and my mentor Andi Bräu figured out a video processing workflow so that we get a bird’s-eye view of the project and can figure out systems need to be implemented for the project.
Video Processing Workflow
Systems Involved in the project:
1 . Videoodyssee Frontend : A React frontend application for the users to submit the video data and admin dashboard for the admins.
2. Videoodyssee API : A Node.js REST API implemented using Express framework.
3. Videopipeline : A GoCD server with processing pipeline to process and publish the video.
Video pipeline
After evaluating several CI/CD tools we chose to use the GoCD tool to build the pipeline as it suits better for the video processing pipeline we are looking to build.
Tasks completed:
- We created a config repo in GitHub to store the pipeline code so that whenever we change the pipeline code GoCD server will automatically pull the changes and builds the new pipeline.
- Automated the installation of the GoCD server and GoCD agent in our remote machines using ansible playbooks.
- Implemented processing pipeline upto the video encoding part.
- Changed the previous video processing bash scripts to make them work with the current GoCD pipeline.
Videoodyssee Frontend
For the users to submit the video details we need a frontend application which takes the data from the user and sends it to the REST API which will eventually trigger the pipeline using the GoCD API to start the video upload workflow.
We chose to use the React to implement the frontend application as it is quick and easy. The frontend application will have a upload form for normal users and admin dashboard for the admins for all administration tasks like approving/rejecting videos , updating video details etc.
Tasks Completed:
- Completed the video upload form so that a user can submit the details of a new video .
- Automated the deployment of the frontend application to GitHub pages using GitHub Actions by implementing a deploy workflow.
- UI design of the admin dashboard is also completed.
Below is how the admin dashboard will look like:
Videoodyssee API
We used Node.js Express framework to implement the REST API which will handle the requests from the Videoodyssee frontend. We chose Express as it is quick and easy to implement a REST API using Express framework.
Tasks completed :
- Implemented a route which will take the video details from the frontend and triggers the GoCD processing pipeline.
- Automated the deployment process of the pipeline using Ansible by implementing videoodyssee-api playbook.
Conclusion:
Finally the first phase of GSoC is very exciting and challenging for me and my mentor Andi Bräu really helped me a lot in making design choices and development. I hope the second phase of GSoC would be as exciting as the first phase.
Tasks for the second Phase:
- Completing the remaining part of the processing pipeline upto the publishing step.
- Automating the pipeline deployment process using Ansible .
- Implementing the Unit testing in the REST API.
- Completing the Admin Dashboard frontend and backend.