■ Pointy

~$ pointy --sync▊

Make HugeRTE
collaborative.

A few lines of code and your editor is live for the whole team — real-time edits, offline, conflict-free. Under the hood: an open-source HTML sync CRDT with server-side doc storage.

Try the demo → Read the docs npm i @pointyink/hugerte hugerte
huge rte

A few lines. That's the integration.

Drop Pointy into your editor and it's multi-user — real-time, offline, conflict-free — with the document stored server-side. HugeRTE is the MIT-licensed TinyMCE fork, so there's no GPL question; we handle the sync.

// that's it
import hugerte from 'hugerte'
import { attachRogue } from '@pointyink/hugerte'

hugerte.init({
  target: '#editor',
  custom_undo_redo_levels: 0,
  setup: async (editor) => {
    await attachRogue(editor, { wsUrl, docId, getToken })
  },
})
  • Real-time & offline — everyone converges, even after the wifi dies.
  • Backend storage — ops persist server-side; reload, rejoin, invite a teammate, the doc is there.
  • Roles & sharing — owners, editors, invite-by-email, public read-only links.

Now available: commentssuggested edits — coming soon: @mentions

why crdt

Conflict-free, by construction.

A CRDT is a data structure that refuses to fight. Every keystroke is an operation with a stable identity; merge them in any order, on any device, at any time, and you land on the exact same document.

Offline edits, flaky networks, out-of-order delivery, split brains — none of it matters. There's no "winner" and no "loser"; there's just the document.

the substrate

And it's not just HugeRTE.

Under the hood it's an HTML sync CRDT, so anything that renders as HTML — a deck, a whiteboard, a kanban board, a dashboard — can ride the same engine, the same transport, the same guarantees.

// the wire format is literally the HTML you'd expect
insert "<h2>Ideas</h2>" ← after node 12:3, side left
hide   "<del>bad take</del>" ← the bad take, tombstoned forever

Make your editor live.

Try the demo, or drop it into your own HugeRTE instance.

Open the demo Read the docs npm i @pointyink/hugerte hugerte