https://github.com/ueberdosis/hocuspocus
The CRDT Yjs WebSocket backend for conflict-free real-time collaboration in your app.
https://github.com/ueberdosis/hocuspocus
collaborative-editing crdt prosemirror real-time self-hosted slatejs tiptap yjs
Last synced: 5 months ago
JSON representation
The CRDT Yjs WebSocket backend for conflict-free real-time collaboration in your app.
- Host: GitHub
- URL: https://github.com/ueberdosis/hocuspocus
- Owner: ueberdosis
- License: mit
- Created: 2020-11-13T14:50:08.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-05-08T08:32:48.000Z (6 months ago)
- Last Synced: 2025-05-09T16:07:19.554Z (6 months ago)
- Topics: collaborative-editing, crdt, prosemirror, real-time, self-hosted, slatejs, tiptap, yjs
- Language: TypeScript
- Homepage: https://tiptap.dev/docs/hocuspocus/introduction
- Size: 20 MB
- Stars: 1,631
- Watchers: 116
- Forks: 145
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/contributing.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Hocuspocus
A plug & play collaboration backend based on [Y.js](https://github.com/yjs/yjs).[](https://github.com/ueberdosis/hocuspocus/actions)
[](https://www.npmjs.com/package/@hocuspocus/server)
[](https://npmcharts.com/compare/@hocuspocus/server?minimal=true)
[](https://www.npmjs.com/package/@hocuspocus/server)
[](https://discord.gg/WtJ49jGshW)
[](https://github.com/sponsors/ueberdosis)## Documentation
The full documentation is a available on [hocuspocus.dev/introduction](https://tiptap.dev/docs/hocuspocus/introduction).## Cloud Hosting
You want to use Hocuspocus, but don't want to care about hosting? Check our [Cloud Offering: Tiptap Collab](https://tiptap.dev/collab)
## Feedback
Send all your questions, feedback and bug reports to [humans@tiptap.dev](mailto:humans@tiptap.dev) or [create an issue](https://github.com/ueberdosis/hocuspocus/issues/new/choose) here.## Usage
The following example is a example setup you need to start a WebSocket server. By default, it’s listening on [http://127.0.0.1](http://127.0.0.1) (or prefixed with the WebSocket protocol on ws://127.0.0.1):```js
import { Server } from '@hocuspocus/server'
import { SQLite } from '@hocuspocus/extension-sqlite'const server = new Server({
port: 1234,async onConnect() {
console.log('🔮')
},extensions: [
new SQLite({
database: 'db.sqlite',
}),
],
});server.listen();
```## Community
For help, discussion about best practices, or any other conversation:[Join the Tiptap Discord Server](https://discord.gg/WtJ49jGshW)
## Sponsors 💖
überdosis
Cargo
Saga
Gamma
Outline
Ahrefs
Brickdoc
Sana
Poggio
… and hundreds of awesome inviduals.
Using Hocuspocus in production? Invest in the future of Hocuspocus and [become a sponsor!](https://github.com/sponsors/ueberdosis)
## Contributing
Please see [CONTRIBUTING](docs/contributing.md) for details.## Contributors
[kris](https://github.com/kriskbx) (who wrote the initial version), [Tom Moor](https://github.com/tommoor), [YousefED (@TypeCellOS)](https://github.com/YousefED) and [many more](../../contributors).## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.