top | item 19846789

(no title)

mochidusk | 6 years ago

I was able to get real-time collaborative text editing to work on one of my side projects by combining quill.js[1], ot.js[2], and firebase[3]. This was a few years ago when there weren't any fully open-source options. I'm in the process of switching out firebase for an elixir/phoenix backend[4]. I'm really glad for this article because it captures the exact feelings that I have.

[1] https://quilljs.com/ [2] https://github.com/Operational-Transformation/ot.js/ [3] https://firebase.google.com/ [4] https://github.com/phoenixframework/phoenix

discuss

order

ilaksh|6 years ago

That looks like a really cool project but.. there weren't any fully open source options? The original Etherpad came out 10 years ago. Etherpad Lite has been out for several years also and has had formatting plugins for quite awhile.

mochidusk|6 years ago

You're right, I completely forgot about Etherpad. But I don't consider Etherpad the same as Quilljs or ProseMirror. Etherpad is something you host (an app itself) while the other text editors are something you can build upon/integrate into your app. I didn't want to host an instance of Etherpad, I needed a library.

I wanted an editing experience similar to Medium.com text editor: consistent, well-formed html output and formatting. At the time, Quilljs was one of the best open-source editor that produced consistent output regardless of the browser.

Also I didn't want to store html, I wanted to store operations in the database.

I have an app similar to Figma[1] (basically real-time Sketch) and I needed just the real-time text editing feature.

[1] https://www.figma.com/

houshuang|6 years ago

tmbb has been doing work on writing a ShareDB compatible backend in Elixir (https://elixirforum.com/t/realtime-collaboration/9736/5), this has long been a dream of mine. If not, having a separate Node server that just deals with ShareDB documents would also be feasible - all the app logic could still be in Elixir. Happy to share stuff we've been doing with Quill, for example my company recently sponsored work on shared cursors/presence for Quill.