Introduction #
What is an App server? #
The RADAR-base App Server provides mediation services to the RADAR-base Apps, splitting several app responsibilities into server-side functionality. A key responsibility of the RADAR-base App Server is to manage the protocol schedules and accompanying notifications (these may be calendared under specific time points or delivered under some random or pseudorandom scheme) through the use of Firebase Cloud Messaging (FCM).
If there are multiple frontend apps that rely on the same type of information and processing, then the app server can be used as a reusable entity, lowering the overhead of developing, deploying and maintaining software. One such example is having a front-end website and mobile app that fulfil the same client-side functionality.
Initially an XMPP based server was used for this purpose, but it had several limitations including limited visibility and supported only a legacy protocol. So, we developed a new App server. For the new General Purpose Application server (RADAR-base App Server) we decided to use the most mature Java framework, Spring Framework, and Spring Boot, for easy application development and deployment. We also decided to support the legacy protocol (XMPP) as the previous server (as a delivery receipt is important) and also expose a RESTful service for the same tasks (and more). This had multiple benefits:
- including a Response to the clients for each request,
- the ability to flexibly add/update/delete and query the information,
- set a hierarchy of different entities,
- batch scheduling of notifications,
- sending notifications from other automated systems to users using RADAR-specific user identifiers and security mechanisms.
We used Spring JPA and Liquibase for the App Server to manage database queries and their evolution. Presently, it is explicitly geared towards notifications but can be easily extended. It already has user metrics data for different user-related info (list of the last time the app was opened, etc.).
It also enables several unique workflows and use-cases such as changing scheduling and protocol functionality without updating the app, more visibility and individual-level control of the scheduling and real-time interventions triggered using data from other sources.
See App Server Github README for details
Most work on the App Server is located on GitHub (dev), and its README.md file has some basic documentation about its features and usage.