I recently built the Websocket service and React functionality for a collaborative computational notebook (think Jupyter Notebooks with Google Docs functionality). White paper available here - https://pennant-notebook.github.io/ for https://www.trypennant.com
We used CRDTs to build Pennant notebooks (think Jupyter Notebooks with collaborative Google Docs features https://pennant-notebook.github.io/). Getting Yjs to behave for a multi-editor environment took some doing. I highly recommend building your own interface/library for interacting with Yjs and never touching Yjs directly in React itself. The state management and event handler cascade can be incredibly fussy if you don't have a good handle on the whole system.
We've found most multi-user apps running over websocket experience significant degradation in performance in the high teen and low twenties. Beyond that we were able to update nested CRDTs and all presence/user data in one connection with the backend.
TipTap has a great backend called HocusPocus with well documented API. Y-websocket backend is already quite good but the support for user tokens isn't there natively. We were actually able to be backend provider agnostic for well into the project. It's a fun ecosystem.
I built the React client app and real-time collaboration engine for Pennant - https://pennant-notebook.github.io/
I'm interested in a wide range of tech, especially in the energy sector. Backend oriented and I'm comfortable around the whole stack.
Willing to relocate: Yes
Technologies: NodeJS, JavaScript/TypeScript, React, Go, Express, Redis, CRDT (yJS), AWS, Docker, WebSocket, MySQL, MongoDB, Python, Ruby
Résumé/CV: https://flowcv.com/resume/8uchlmdetk or https://www.linkedin.com/in/richardalancole/
Email: in résumé
I recently built the Websocket service and React functionality for a collaborative computational notebook (think Jupyter Notebooks with Google Docs functionality). White paper available here - https://pennant-notebook.github.io/ for https://www.trypennant.com