We run Missive, a collaborative email client allowing teams to chat within email threads and collaboratively compose / review email drafts in real time.
In our first version, we used Firepad because it provided collaborative editing somewhat effortlessly. You can imagine how people have very strict requirements regarding email and old habits anchored in other apps (Gmail, Outlook, to name a few). Here’s the one thing we hadn’t thought of that made Firepad a deal breaker: spell checking. Firepad’s rendering does not use
contenteditable, which makes browser-native spell checking impossible to provide. Big bummer for many people.
We started searching for a contenteditable-based tool that supported collaborative editing. At the time, ProseMirror was the only candidate left after discarding Quill due to its overly simplistic document model (no nested lists nor multi-line quotes) and I believe this still holds true today. ProseMirror has actually come a long way to allow proper spell checking. Marijn very kindly responded to feedback on this topic and ended up rewriting significant parts of ProseMirror to support it. I am extremely thankful for his dedication.
To build our collaborative editing backend, we started from the ProseMirror website example (see code here) and adapted it because we obviously need to store data in a database, not just in memory. See this great article on the design of ProseMirror’s collaborative module if you are interested.