Building data-centric apps with a reactive relational database
Client-side web applications have evolved around the assumption that state can only be accessed via expensive network calls to a backend web server. However, in a local-first application, this assumption no longer holds; a client device can have rich, low-latency access to locally persisted state. We think this shift can enable new patterns for radically simplifying UI development, by managing state in a powerful client-side database.
We propose some design principles for achieving this simplification: using declarative relational queries to represent data transformations, representing state in a graph of reactive queries, and combining UI state with domain state in a single local-first datastore. We call this combination of principles the reactive relational model. We have built a prototype called Riffle implementing this idea using the SQLite embedded database and the React.js web UI framework, and have used the prototype to build some sample apps, including a full-featured music management application.
So far, we have found promising signs that a reactive relational model can help developers more easily and debug local-first apps, produce faster experiences for end-users, and offers intriguing possibilities for data-centric interoperability between apps. We’ve also encountered challenges from trying to build toward this vision using existing tools. We will share some of these experiences and the opportunities we see for future local-first state management systems.
Tue 7 JunDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:00
|Encrypted Replicated Data Types within REScala
Christian Kuessner , Ragnar Mogk Technische Universität Darmstadt, Anna-Katharina Wickert TU Darmstadt, Germany, Mira Mezini TU DarmstadtPre-print
Clemens Nylandsted Klokmose Aarhus University
|Building data-centric apps with a reactive relational database
PLFLink to publication