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 (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-05-08T08:32:48.000Z (about 1 year ago)
- Last Synced: 2025-05-09T16:07:19.554Z (about 1 year 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
- awesome-local-first - Hocuspocus
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 ๐

Tiptap

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.