The main task was to create a large-scale web application with easy administration. To facilitate the work of content managers while creating new objects we used CKEditor, and some custom plugins to provide ready-made templates. Among additional plugins is one that allows content managers to add videos from another service to CKEditor.
Since the app contains a lot of video content, our specialists used the Brightcove service to assign a specific ID to each video and to compress video files, therefore, speeding up the loading of video content and making the process of placing files easier.
We were also working on a partner location block: it provides the user with locations of the partner doctors and additional information with an option to make an appointment or contact a specialist. For this feature, we used Google Maps, and also developed a special React component allowing the user to filter locations. This component also allows switching between different languages.
The application menu is rather complex, so we configured its caching during the first page loading. For this we used HTML documents with menu item titles and the necessary data. The app contains many other static elements. Not to overload the servers, different levels of caching are used. The first level is performed via Symfony, and then everything is cached via Varnish.
To adapt the interface to the main types of modern devices, the client’s designers created a separate design for each type. While implementation, our team used a grid-based layout system to display everything in the appropriate size. To speed up the loading on mobile devices, we developed a special module for Drupal. It creates 3 copies of the original pic in different quality for certain devices and loads what is needed.
One of the highly important tasks was to adapt the app for people with visual impairments. The dev team used HTML Accessibility, which allows users to listen and navigate the content.
During the project development, we followed Scrum methodology, with two-week sprints. Every 2 weeks the development team arranged general online meetings to evaluate and distribute the tasks for the next sprint. Also, every morning our team got in touch with the client and provided reports on the work performed.