Viddyoze

Product

Web application

Industry

Video software

Our participation

Front-end, Back-end, QA, Design

This application allows to create videos on various topics to promote your business/brand, etc. The application has over 3,000 templates created by a team of animators, which can be customized through a user-friendly graphical interface. Rendering of the customizable templates is made in the application itself. As a result, 
the user receives the finished video in several formats.

Screen

Product support, Video customization and Payments

Product support

Bug fixes and impovements, new features.

Video customization

Added customization of fonts
Added ability to customize audio
Working with Blender API + Python

Translations system

Improved termination of subscriptions due to failed payment (failed payment due to credit card issues) 
for each of the three payment systems used in the system. Also, ability to terminate subscriptions for user with admin privileges was added.

image 1774

Search, User roles 
and permissions

Search

Algolia Search and Algolia Recommend have been implemented, allowing to get a personalized search for the users of the system thanks to a reliable infrastructure, high performance API. A system was also implemented to track user behavior during searches, allowing to optimize the search process.

User roles and permissions

A system was developed that allows you to configure access to absolutely any part of the functionality.
By making a couple of clicks in the admin panel you can deny/allow any user action, display/hide any item on 
the front. It is also possible to configure accesses for
a particular user.

image 17745

API v2

Since the application was initially created hastily as a startup, it did not have a unified architecture. This entailed a problem with code support. Implementing new features started to take longer than we would have liked. Finally this problem was solved by rewriting the application from scratch using the latest technologies. The main task was to 100% recreate the APIs to make them identical to the old version, because rewriting the front end was not implied. In parallel, many aspects of the application were improved, the application was covered with tests, as well as the API documentation was created.

54516
Challenge #1

Payment

The system uses three payment systems and implemented independent subscription systems with different completeness of functionality for each. This made it very difficult for the admin to control and manage subscriptions and often led to confusion and misunderstandings with system users.

Solution

A unification was performed and a common subscription management system was implemented for all three payment systems with a more functional management of subscriptions from admin panel. This made subscription management more transparent and faster.

Challenge #2

Algolia Search

The cost of using Algolia Search and Algolia Recommend depends on the amount of indexed information and the number of requests to the system and increases with increasing number of requests.

Solution

After analyzing the implementation of the standard Algolia Search bundle, we performed our own refinement and implementation of caching, which reduced the number of queries to Algolia and more than halved the cost of using Algolia Search.

Challenge #3

Risk of error

Because the application is quite large and was fundamentally rewritten, there was a risk of errors. 
We wanted to avoid them as much as possible.

Solution

We decided to split the endpoints into parts and gradually migrate to the new API.
The old API continued to work while we launched the new one. We created a tool that allowed us to redirect requests from one API to another. That way in case of a problem we were able to revert back quickly.
This solution was fully tested on the test servers and allowed us to successfully migrate to the new version.

Challenge #4

Application tests

The new application contains a large number of application tests. These tests take more time than unit tests. This in turn slows down the development.

Solution

We found a library that allows to implement the testing process in multithreading mode. We also modified this library and it allowed us to speed up the testing process in several times. In total the testing process accelerated by 11 times.

Timeline

Ongoing project (started July 2020) 

Our participation

3 back-end developers
1 front-end developer
1 QA engineer
1 project manager
1 designer

Used technologies

Server-side

PHP, Symfony, Domain Driven Design, PHPUnit, Redis, Algolia

Client-side & tools

React, JavaScript, Next, Axios, HTML, SCSS, Git, Redux

Do You Have an Idea?