@thescaffold/editor-server
v0.2.51
Published
Collaboration server for X Editor (yjs + WebSocket)
Readme
@thescaffold/editor-server
Backend-agnostic collaboration server for X Editor. Provides the CollabServer class powered by yjs CRDT, with adapters for Express, Fastify, plain Node, and NestJS.
Installation
npm install @thescaffold/editor-server yjs ws
# For Postgres persistence:
npm install pgUsage — Express
import express from "express";
import { CollabServer, PostgresAdapter } from "@thescaffold/editor-server";
const collab = new CollabServer({
persistence: new PostgresAdapter({
connectionString: process.env.DATABASE_URL,
}),
});
const app = express();
// HTTP upgrade for WebSocket connections
const httpServer = app.listen(3000);
httpServer.on("upgrade", (req, socket, head) => {
if (req.url?.startsWith("/collab")) {
collab.handleUpgrade(req, socket, head);
}
});Usage — Plain Node
import { createServer } from "http";
import { CollabServer, MemoryAdapter } from "@thescaffold/editor-server";
const collab = new CollabServer({ persistence: new MemoryAdapter() });
const server = createServer();
server.on("upgrade", (req, socket, head) => {
collab.handleUpgrade(req, socket, head);
});
server.listen(3000);Persistence Adapters
| Adapter | Description |
| ----------------- | ------------------------------------------------ |
| MemoryAdapter | In-process, no persistence. Use for dev/testing. |
| PostgresAdapter | Persistent storage via PostgreSQL. |
Auth
import { JwtAuthAdapter } from "@thescaffold/editor-server";
const collab = new CollabServer({
persistence: new MemoryAdapter(),
auth: new JwtAuthAdapter({ secret: process.env.JWT_SECRET }),
});NestJS
Use @thescaffold/editor-nestjs for NestJS integration.
License
MIT
