Hacker News new | ask | show | jobs
by hahamrfunnyguy 1465 days ago
I am currently using ProseMirror in my project. It's the best rich text editor I've used up to this point. It's a headless text editor that's pretty flexible and extensible. It's not a drop in component like other text editors, but it's certainly been the least painful to integrate. I am using a wrapper for Vue called tip-tap, that project has also made a React wrapper with similar architecture.

What does Verbum do differently than ProseMirror?

1 comments

TipTap is awesome, as is the team behind it, love what they are also doing with the Y Collective and collaborative editing.

Back at the beginning of last year I was using TipTap v2 for a project (when it was in closed beta), one of the best open source communities I have had the pleasure of working with. I helped to contribute the Vue3 port of TipTap, required going quite deep into how both Vue3 and ProseMirror work. Was great fun, sadly not working with anything rich text related at the moment.

I got into CRDTs a little a couple of months ago and stumbled upon TipTap. It sounds really cool. I think they want to release a backend for it soon. (You need one for peer discovery and to get around NAT problems.) In combination with Tauri one could do really interesting offline first collaborative editors.
This is the first I have heard of TipTap, went to the demo and am very enthused about it now! What I don't immediately see is things around serialization. What does your persistence layer look for this? What is your presentation of this serialized data? I'm on the React end of things so I currently serialize to markdown and utilize `react-markdown` to display the contents.
My particular use case was offline first, so using the Yjs bindings and combining with PouchDB I built a system to enable conflict free distributed off/online edits. It worked really well, however he project died in the end.

Using Yjs in combination with PouchDB worked really well, it effectively allows you to have conflict free auto merging for Pouch/CouchDB documents.

See here for details:

https://discuss.yjs.dev/t/distributed-offline-editing-with-c...

https://gist.github.com/samwillis/1465da23194d1ad480a5548458...

You have the option of using HTML or JSON to store the document. I am storing it as JSON in a database column. The advantage of JSON is that it's already in the native form for ProseMirror, it is relatively straight-forward to merge documents together and can be easily queried from my database (SQL Server).