We were asked to build an application that is supported by the Android and iOS mobile platforms and is capable of running in all the major web browsers. This included the following tasks: To develop a system that allows users to take tests and get a graphical representation of the test results accompanied by text explaining their meaning. To create a polling system with questions that can be answered by app users and students/social organizations, to identify interests users have and activities organizations conduct. To be able to match users' answers against those given by organizations to determine which organizations are best suited for individual users to help them develop their skills and/or bring them to the next level. To create a global filter to enable fuzzy search across multiple data categories used by the app such as registered users, social contacts, organizations, personalized test results, etc. To create functionality that allows app users to conduct live one-to-one conversations as well as create group chats. Users should also have the ability to block conversation invites, remove chat participants from existing chats etc.
A decision was made to build a Progressive Web Application. This approach allowed us to create the Frontend part that is shared by both web and mobile versions of the app with just some minor additional adjustments required for each version. The fact that we did not have to build a separate Frontend for web and mobile helped to save development effort and time significantly. The frameworks deployed are: Cross-platform development: Ionic version 3, Angular version 6. Backend: Symfony 2.8 The test result generation system that has been developed uses Beanstalk which makes it possible to process a large amount of incoming data without affecting user experience. We have developed and integrated the matchmaking algorithm. Global search filtering was made possible through integration of Elasticsearch, development of the complex custom search queries To accomplish the chat task we chose to intergrate our system with the Openfire server. In addition to deploying Openfire out-of-box capabilities, we had to develop customized structure for group conversations, add custom chat features such as (un)mute options and integrate Thryver user database with that on the Openfire server side to mention just a few.