Architecture
Contents
Architecture#
Packages#
We have today the following main packages available:
@jupyterlab-rtc/relay: Patch relay server to synchronize patches for
@jupyterlab-rtc/node
.@jupyterlab-rtc/node: Real time collaboration client, builds on
@lumino/datastore
.@jupyterlab-rtc/jupyter: Holds schema for JupyterLab RTC tables that are used in server and client.
@jupyterlab-rtc/supernode: Server to keep datastore in sync with jupyter server.
You can use those packages with examples:
@jupyterlab-rtc/jupyter-example: Client to access Jupyter Server data (notebook content, kernel…).
@jupyterlab-rtc/lumino-example: Example of a standalone Lumino Datastore application.
@jupyterlab-rtc/todo-example: Example of simple To Do application using
@jupyterlab-rtc/relat
server.
We also provide useful tooling packages to accompany the main packages.
Other Potential Packages#
Is it useful or needed to introduce a global distributed state management a-la-redux
? See the following repositories for inspiration:
Eventually we see the jupyterlab/rtc repository containing a number of other server extensions and client packages like:
supernode_jupyter_extension
: Jupyter Server extension for running@jupyterlab-rtc/supernode
.relay_jupyter_extension
: Jupyter Server Extension for@jupyterlab-rtc/relay
jupyterlab-rtc-client
: A client that connects overrtc_relay_jupyter_extension
.
Actors#
We define the following human and technical actors of the system:
User: The human user of the JupyterClient.
Jupyter_Frontend: The end-user application, e.g. JupyterLab.
Jupyter_Rest: The existing Jupyter server REST endpoints (load/save notebooks…).
Jupyter_WS: The existing Jupyter server Kernel Websocket that allows running code cells code.
RTC_Client: The client library provided by jupyter-rtc for realtime update communications.
RTC_Server: The server library provided by jupyter-rtc for realtime update communications.
GQL_Client: The client library to interact withh the GQL-Server.
GQL_Server: The server side GraphQL compliant service.
Use Cases#
CRUD Notebook#
Create, Read, Update or Delete (CRUD) a Notebook.