DisCoPar: Rich Offline HTML5 Apps Through Service Workers
The sheer number of sensor-enhanced mobile devices combined with their user’s mobility led to the establishment of participatory sensing. This approach to data collection and interpretation relies on individuals, acting alone or in groups, along with their personal smartphones to systematically monitor personal information (e.g. health) and/or environmental information (e.g. noise levels, traffic conditions). Participatory sensing provides the enabling technology to deploy so-called citizen observatories, i.e., community-based environmental monitoring and information systems which can be used as a policy making and evaluation instrument for improving the quality of life of citizens.
DisCoPar (Distributed Components for Participatory Campaigning), is a platform aimed to enable a flexible composition of citizen observatory features. To do so, DisCoPar is implemented as a component-based system using flow-based programming concepts. The highly reconfigurable and reusable nature of this component-based approach makes it a very suitable method for implementing the wide-range of functionality that a citizen observatory should provide (mobile apps, server logic, etc.). Figure 1 illustrates the concept of the DisCoPar platform: end-users (non ICT-experts) can build mobile apps by assembling various components through a visual drag-and-drop interface. Server-side data processing logic can be implemented through a similar interface. More information can be found online at https://discopar.net/
Figure 1: An example component graph in DisCoPar that represents a mobile app.
The goal of this thesis is to experiment with Service Workers, and test how they can be used to provide a more 'native app feeling' for the web-based mobile apps generated by DisCoPar. Amongst others, this thesis topic will deal with questions such as:
- Can we implement push notifications in a nice and clean way? Push notifications are an important requirement in participatory sensing. For example, to remind people on regular intervals to fill in a survey.
- Can we implement a true offline experience using these Service Workers? The entire app logic will have to be cached, data locally stored until a connection is available, additional abstractions as 'offline mode' for components have to be implemented, etc.
- How do we handle the limitations of Service Workers? e.g. Service Workers have no access to the DOM