Andrea Gallidabino, Cesare Pautasso
The Web Conference (WWW2018), Lyon, France
Web applications are traditionally designed having in mind a server-centric architecture, whereby the whole persistent data, dynamic state and logic of the application are stored and executed on the Web server. The endpoint client device running the Web browser traditionally only renders pre-computed views fetched from the server. As more data, state and computations are shifted to the client, it becomes more challenging to run Web applications across multiple devices while ensuring they can synchronize their state and react in real-time to changes of the set of available devices. In this paper we present the API of the Liquid.JS framework, which allows developers to deploy their component-based rich Web applications across multiple Web-enabled devices. The framework is based on state of the art technologies such as Polymer, WebRTC DataChannel, WebWorkers, PouchDB and Yjs. Liquid.JS helps to build decentralized Web applications whose components can seamlessly flow directly between Web browsers carrying along their execution state. The Liquid.JS API deals with device discovery, the lifecycle of liquid components and the fine-grained control of the liquid user experience primitives.