Over the past two years, the appetite for collaborative rich text editing has grown dramatically. More products need it, but the available solutions are either expensive, opaque, or both. Development teams get stuck with solutions where they have limited control over how collaboration actually works in their applications.
We know there’s a better way. And we’re in a good position to build it.
Pitter Patter is a toolkit of feature-complete building blocks, made with ProseMirror. Each piece is useful on its own, and you can use what you need, when you need it. Every library is built directly on ProseMirror’s APIs, not on top of an abstraction layer. You always have full access to the thing underneath. This includes:
Collaboration server
Self-hosted real-time co-editing with presence, version history, and no conflicts.
Presence indicators
Cursor positions, text selections, join/leave events, and user metadata, surfaced cleanly for whatever UI you want to build on top.
Annotations
Comments with threading, resolution, and persistence. We’re working through the right approach to keep comment marks coherent when the content beneath them changes (or is deleted!).
Suggest changes
A full suggest/review/accept workflow with authorship tracking
Drag and drop
A first-class library for reordering, resizing, and repositioning content within the editor, being accelerated by one of our early funders.
Markdown
Fully customizable serialization to and parsing from markdown, with support for custom directives, HTML, and more.
Code blocks
A really, really good code block. Built on top of React CodeMirror, with full support for a wide array of programming languages, custom key maps, autocomplete, and multiple cursors.
Embedded media
Drag & drop or pick and upload. Use with any media storage backend.
More to come
We’ve got a roadmap to build the best developer experience for rich text editors, ever.
The ProseMirror ecosystem is mature. The underlying primitives are excellent. What’s been missing is a toolkit that makes building editors easy while working with this ecosystem, rather than trying to obscure it. Something you can adopt incrementally, without buying into a stack you didn’t choose.
We’ve spent years close enough to these problems to know what that looks like, and we have a track record of shipping things that other developers actually use.