{"id":13436613,"url":"https://github.com/ueberdosis/hocuspocus","last_synced_at":"2026-01-25T22:51:00.338Z","repository":{"id":65356430,"uuid":"312603292","full_name":"ueberdosis/hocuspocus","owner":"ueberdosis","description":"The CRDT Yjs WebSocket backend for conflict-free real-time collaboration in your app.","archived":false,"fork":false,"pushed_at":"2025-05-08T08:32:48.000Z","size":20985,"stargazers_count":1631,"open_issues_count":27,"forks_count":145,"subscribers_count":116,"default_branch":"main","last_synced_at":"2025-05-09T16:07:19.554Z","etag":null,"topics":["collaborative-editing","crdt","prosemirror","real-time","self-hosted","slatejs","tiptap","yjs"],"latest_commit_sha":null,"homepage":"https://tiptap.dev/docs/hocuspocus/introduction","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ueberdosis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"ueberdosis","open_collective":"tiptap","custom":"https://tiptap.dev/pricing"}},"created_at":"2020-11-13T14:50:08.000Z","updated_at":"2025-05-09T06:56:25.000Z","dependencies_parsed_at":"2023-12-19T08:34:53.808Z","dependency_job_id":"e17ff915-36a9-4e9e-b504-3ce1d26f0b91","html_url":"https://github.com/ueberdosis/hocuspocus","commit_stats":{"total_commits":1510,"total_committers":70,"mean_commits":"21.571428571428573","dds":0.6556291390728477,"last_synced_commit":"1c18ee7499cfed189fbf11111fb1c52810bb0210"},"previous_names":[],"tags_count":923,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ueberdosis%2Fhocuspocus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ueberdosis%2Fhocuspocus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ueberdosis%2Fhocuspocus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ueberdosis%2Fhocuspocus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ueberdosis","download_url":"https://codeload.github.com/ueberdosis/hocuspocus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110374,"owners_count":22016391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaborative-editing","crdt","prosemirror","real-time","self-hosted","slatejs","tiptap","yjs"],"created_at":"2024-07-31T03:00:50.729Z","updated_at":"2026-01-25T22:51:00.332Z","avatar_url":"https://github.com/ueberdosis.png","language":"TypeScript","funding_links":["https://github.com/sponsors/ueberdosis","https://opencollective.com/tiptap","https://tiptap.dev/pricing"],"categories":["Text editor","TypeScript","⚙️ Development Tools \u0026 Libraries"],"sub_categories":["Frameworks \u0026 Platforms"],"readme":"# Hocuspocus\nA plug \u0026 play collaboration backend based on [Y.js](https://github.com/yjs/yjs).\n\n[![Build Status](https://github.com/ueberdosis/hocuspocus/workflows/build/badge.svg)](https://github.com/ueberdosis/hocuspocus/actions)\n[![Version](https://img.shields.io/npm/v/@hocuspocus/server.svg?label=version)](https://www.npmjs.com/package/@hocuspocus/server)\n[![Downloads](https://img.shields.io/npm/dm/@hocuspocus/server.svg)](https://npmcharts.com/compare/@hocuspocus/server?minimal=true)\n[![License](https://img.shields.io/npm/l/@hocuspocus/server.svg)](https://www.npmjs.com/package/@hocuspocus/server)\n[![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://discord.gg/WtJ49jGshW)\n[![Sponsor](https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub)](https://github.com/sponsors/ueberdosis)\n\n## Documentation\nThe full documentation is a available on [hocuspocus.dev/introduction](https://tiptap.dev/docs/hocuspocus/introduction).\n\n## Cloud Hosting\n\nYou want to use Hocuspocus, but don't want to care about hosting? Check our [Cloud Offering: Tiptap Collab](https://tiptap.dev/collab)\n\n\n## Feedback\nSend 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.\n\n## Usage\nThe 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):\n\n```js\nimport { Server } from '@hocuspocus/server'\nimport { SQLite } from '@hocuspocus/extension-sqlite'\n\nconst server = new Server({\n  port: 1234,\n\n  async onConnect() {\n    console.log('🔮')\n  },\n\n  extensions: [\n    new SQLite({\n      database: 'db.sqlite',\n    }),\n  ],\n});\n\nserver.listen();\n```\n\n## Community\nFor help, discussion about best practices, or any other conversation:\n\n[Join the Tiptap Discord Server](https://discord.gg/WtJ49jGshW)\n\n## Sponsors 💖\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://tiptap.dev/\"\u003e\n        \u003cimg src=\"https://unavatar.io/github/ueberdosis\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eTiptap\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://cargo.site/\"\u003e\n        \u003cimg src=\"https://unavatar.io/github/cargo\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eCargo\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://saga.so/\"\u003e\n        \u003cimg src=\"https://unavatar.io/saga.so\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eSaga\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://www.gamma.app/\"\u003e\n        \u003cimg src=\"https://unavatar.io/gamma.app\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eGamma\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://www.getoutline.com/\"\u003e\n        \u003cimg src=\"https://unavatar.io/github/outline\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eOutline\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://ahrefs.com/\"\u003e\n        \u003cimg src=\"https://unavatar.io/ahrefs.com\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eAhrefs\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/brickdoc\"\u003e\n        \u003cimg src=\"https://unavatar.io/github/brickdoc\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eBrickdoc\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://www.sanalabs.com/\"\u003e\n        \u003cimg src=\"https://unavatar.io/github/sanalabs\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003eSana\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://poggio.io\"\u003e\n        \u003cimg src=\"https://unavatar.io/github/poggiolabs\" width=\"100\"\u003e\u003cbr\u003e\n        \u003cstrong\u003ePoggio\u003c/strong\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n… and hundreds of awesome inviduals.\n\nUsing Hocuspocus in production? Invest in the future of Hocuspocus and [become a sponsor!](https://github.com/sponsors/ueberdosis)\n\n## Contributing\nPlease see [CONTRIBUTING](docs/contributing.md) for details.\n\n## Contributors\n[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).\n\n## License\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fueberdosis%2Fhocuspocus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fueberdosis%2Fhocuspocus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fueberdosis%2Fhocuspocus/lists"}