Today's post will be devoted to a broader description of one of our recent projects, it is an application monitoring the pollination of allergens in specific locations in Poland - Allegra.
Functional description of the application
The application is available in the Google Play store: Allegra - an app for allergy sufferers.
After installation, the user is asked to register via e-mail or Facebook account. The next step is to select allergens whose level you want to follow, such as: Beech, Birch, Yew, Beetle, Oak, Ash and many more, including a selection of almost 30 allergens.
The next step is adding the first location. The area of Poland has been divided into several areas facilitating the forecast, the user adds a location in one of the zones. After completing this step, we are redirected to the home screen from the list of locations. From this place the user can add new locations at any time (eg plot or place of the current holiday stay).
We can preview the dusting forecast by selecting one of the added locations, a new tab opens with a list of previously selected allergens and the level of dusting.
One of the most important functionalities of the application is sending push notifications to the application user. Thanks to these notifications, the user does not have to check the current pollination status, each change of the selected allergen in the area in which the user has added one of the locations will result in a system notification. This functionality is very useful because it does not require the user to constantly monitor the pollen state.
Interested in the subject, I refer to the dusting calendar run by Sanofi.
Detailed list of allergens: Altenaria, Ambrosia, Plantain, Birch, Beech, Bean, Cis, Cladosporium, Oak, Hornbeam, Ash, Maple, Komosha, Filbert, Goldenrod, Alder, Platan, Nettle, Pine, Sorrel, Poplar, Grass, Willow, Elm. Each allergen has a description and a photo.
The application also includes weather forecast in added locations and allergy tips for allergic people.
Technical description of the application
The application was created in the React Native technology, this framework allows you to build mobile applications using ready-made components of the excellent React framework. Then, these components are compiled to the native code for Android and iOS platforms, thus saving the time needed to write the code separately on two platforms.
React Native has a rich collection of components that allow, among others, to support Google maps, pop-up menus (so-called burger menus), bookmarks, popups and many more.
After the initial analysis of the application requirements, the choice was made on the React Native. In 2017, when the application was created, the React Native itself was still a new technology without an established position and only appeared on the programming languages. However, we took up the challenge (and also the risk) and we started the task.
From the backend, the REST API is written in Node.js, and the role of the database is MongoDB. It is a natural choice for us, Node.js and MongoDB are very scalable, and applications are created in the blink of an eye. We always use TDD technique, thanks to which mobile developers got a ready and functional API with full documentation in Swagger.
The application also has an administration panel, which allows you to manage allergen dusting states and other content in the application (eg, descriptions of aliases). The panel was written in the Vue.js framework. The situation was similar to that of the React Native. Unfortunately, I have had bad experiences with Angular, and React itself is not attracting interest in its folding. When I saw Vue.js, literally within a few minutes I knew it was worth a try. At the moment of application development (2017), the panel was one of the first projects written by us in Vue.js and it turned out to be a complete success. The ease of writing frontend applications in conjunction with the ready-made REST API in Vue.js creates a lot of joy and programmers discouraged by the frontend should return to find pleasure in this kind of work.