Skip to content

kdldbq/ensemble

Repository files navigation

ensemble

License

ensemble is an open-source collaborative spreadsheet platform. It embeds a Univer-powered editor into any host application and exposes pluggable adapters for identity, permissions, data masking, and blob storage — so each host controls its own auth and data policy.

Status: v0.1.0 GA. Single + multi-user editing with realtime collaboration over WebSocket: every Univer mutation auto-broadcasts (per-recipient mask-rule applied) and the editor auto-acquires a cell-region lock so concurrent writes to the same cell are server-arbitrated (not last-write-wins). Multi-tenant RLS at the Postgres layer; version history with named snapshots + restore; debounced auto-save (configurable autoSaveMs); server-side xlsx export with mask; viewer-role enforcement at HTTP, WS, and Univer-command layers (defense in depth); 4-adapter conformance suite (identity / permission / storage / event); docs site; FastAPI integration example. Ready for npm publish + public GitHub once §11 decisions land (product name / org / domain).

Quickstart

Prerequisites: Node 20+, pnpm 9, Docker (for integration tests).

pnpm install
pnpm -r test
pnpm lint

Packages

Package Purpose
@ensemble-sheets/core Univer editor bootstrap, sheet codec (import/export XLSX)
@ensemble-sheets/server Hono HTTP + WebSocket server, Drizzle/Postgres persistence, adapter contracts
@ensemble-sheets/react React component wrapping the core editor
@ensemble-sheets/vue Vue 3 component wrapping the core editor
@ensemble-sheets/identity-jwks JWKS-based IdentityAdapter (resolves tenant + user from JWT)
@ensemble-sheets/storage-fs Local-filesystem blob storage adapter (dev / single-node)
@ensemble-sheets/storage-s3 AWS S3 blob storage adapter
@ensemble-sheets/webhook Outbound webhook event adapter
@ensemble-sheets/demo Demo app: single-tenant dev server + Vite front-end

Documentation

License

Apache 2.0 — see LICENSE.

About

Open-source collaborative spreadsheet platform with Univer editor + pluggable adapters (identity/permissions/masking/storage). Real-time cell-lock + per-recipient masked broadcast. Apache 2.0.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors