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.
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.
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.
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.
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?