Video editing platform modernization

Video editing platform modernization

Itransition helped the customer modernize their legacy video editing platform, developed a complementing screen recording application, and improved their DevOps processes.

Case study

Video editing platform modernization

Challenge

The customer is an Australian startup that has a video editing platform for streamlining video production. The company offers camera kits for users to shoot all types of video content, which users can then upload to the video editing platform for the customer’s team of professional editors to work on. The platform also offers a range of add-ons that users can apply to streamline the video editing process, hire voice-over actors, add animation, and more. 

The platform is subscription-based, with users getting access to various add-ons, the number of videos they can shoot, special discounts, etc. according to their subscription plan. Back when the customer developed the platform, they planned that add-ons would be static entities, so their initial code wouldn’t allow for extension. But then the customer’s business model changed, and they needed to be able to modify their existing add-ons. What is more, they wanted to develop new add-ons to complement the platform’s functionality. 

The customer has an in-house team responsible for product development but they lacked the expertise to carry out all the intended changes, so the company decided to set up a dedicated development team with Itransition, following one of our past customers’ recommendations.

Solution

Initially, the Itransition team consisted of two developers. They began by analyzing the existing platform and internal documentation sent by the customer. After that, they fixed the detected bugs and introduced minor enhancements to the platform. Satisfied with the level of service we provided, the customer engaged our specialists in modifying the functionality of add-ons as well as the development of the screencast solution. Within three months, the Itransition team working on the project grew to twelve people. 

Platform enhancements

The customer’s major priority for this project were improvements to their existing add-ons. Our team rewrote and refactored the code and extended the databases of the add-ons. These changes allowed the customer to extend the platform with new add-ons and modify the existing ones.

We also implemented the functionality enabling the customer’s editors to make changes to the add-ons chosen by users. For example, an editor can change the add-on pricing if the scope of work exceeds the standard offer or add other add-ons to the user’s subscription plan to help them accomplish their video goals.

The platform also has a reporting feature connected to add-ons that allows the customer to quickly get necessary data on each specific user. We configured this feature to ensure it displays the correct information and implemented the functionality allowing the customer to generate comprehensive user reports. Users who rarely apply add-ons are automatically marked in the report as users at risk of churning.

Beyond that, the Itransition team improved the customer’s notification process since many of their editors complained about a large number of unnecessary notifications. Our team reviewed and changed the list of notification recipients and discontinued some notification types.

Screencast sub-application development

Aiming to extend their service offering and grow the platform’s user base, the customer decided to build a new subscription-based sub-application for screen recording. The customer’s CTO researched similar solutions on the market and developed a PoC using the Electron framework. Proceeding from the PoC, our team developed the full-fledged solution.

Itransition developed screencast applications for Mac and Windows which allow users to capture their camera or desktop screen. Using the solution, users can film demos, lectures, tutorials, training, and more types of content. We equipped the app with features allowing users to draw directly on the screen, pause and resume recording, and share the video. We also added the possibility to add comments to the recorded video so that the viewers could leave their feedback. All videos created with the screencast app are stored in the video editing platform. 

On the user’s side, the solution has the following features:

  • Menubar, enabling user authentication, changing settings, and changing the recording modes.
  • Camera, displaying the camera image and enabling its configuration.
  • Controls, allowing to pause, restart and turn off the recording.
  • Drawer, displaying drawing and handwriting notes during the recording.

Application signing and notarizing

Starting from macOS 10.14.5, Apple made it mandatory to sign and notarize a new application, so we helped the customer to accomplish these tasks. 

First, we purchased an application certificate in the Apple developer account with the necessary information for notarization, including certificate number, the app’s bundle ID, etc. As it turned out, to sign the application we needed to add camera and microphone permissions as well as accessibility permissions. Our team leveraged Electron’s native API to create camera and microphone permissions and used NPM libraries to add accessibility permissions. 

When the application was signed, it was automatically sent to Apple servers by the Electron-notarize library for an automated notarization. After the notarization was completed, the system stapled the app.

While Windows doesn’t require application notarization, we still helped the customer with signing the software. 

The AWS-based microservices architecture 

We build the applications using the microservices architecture. It consists of 20+ separate modules built around specific features and interacting with each other via REST APIs. We created application modules using AWS services and applied the following AWS tools during applications development:    

  • Amazon ECS for container management 
  • Amazon CloudWatch and New Relic for performance monitoring
  • Amazon RDS for database operation management across the USA, Australia, Europe, and Asia
  • AWS CodePipeline for managing CI/CD activities
  • AWS CloudFormation and Terraform for describing app environments and network settings in text format
  • AWS Systems Manager for managing the infrastructure across private and local networks

DevOps automation

We applied DevOps and CI/CD practices and AWS CodePipeline service to automate our release pipelines. Initially, the build took from five to six minutes, so our DevOps engineer reconfigured the build process by rewriting Docker files and setting up caching. This way, Docker could use a cache layer for each new build, which allowed us to reduce the build time to 1.5 minutes, achieving a 70% performance increase.

Technologies and tools

We built the screencast application with the Electron framework, using Node.js for the backend and React for the frontend. 

To ensure communication between the backend and frontend, we implemented the Publisher-Subscriber pattern to the architecture design. Since the platform encompasses multiple features, we implemented them as separate plugins. Each plugin has a view controller responsible for rendering its behavior. The communication between different features occurs through IPC service. 

The main file of the platform is the application that stores all events that plugins can subscribe to. The architecture of the solution also comprises various application services that manage its business logic, for example, user login and screen recording.

One of the most challenging parts of the project was to find the technology that would ensure seamless application updates across development, staging and production environments. We chose the Nuts application for its Docker support and deployed it as a separate Docker container in our environment so we can regulate and monitor its work. 

For release automation, we applied the native Electron AutoUpdater solution for macOS and the electron-builder package for Windows and GitHub releases. However, we found that the Nuts service did not always send the correct requests in the production environment, so we customized the logic of its API to ensure its proper operation.

After the application development, we performed unit testing using the Jest testing framework and the React Testing Library.

Process

Our team worked in two-week sprints. Before each sprint began, we had a meeting with Itransition’s project manager and business analyst and the customer’s product owner and product manager where we discussed the scope of work for the next sprint and planned the tasks for our team. 

Our project manager reported our team progress daily via emails and provided a sprint report at the end of each sprint. The reports contained sprint goals, completed and uncompleted tasks, etc. as well as burndown and team velocity charts, plans for the next sprint, and the predictions for possible project bottlenecks.

Results

Itransition’s dedicated team helped the customer modernize their legacy video editing platform by renovating its architecture to improve reporting and allow for modifying add-ons. We also developed a new sub-application from scratch that enables users to record a camera or desktop screen and create promotional and educational materials. Besides, we improved existing DevOps processes and implemented CI/CD practices, achieving a 3x reduction in the build time.