EtherCalc
EtherCalc is a real-time, multi-user spreadsheet server. This documentation covers the TypeScript rewrite that runs on Cloudflare Workers with Durable Objects, D1, KV, and R2 — and can also be self-hosted with a standalone workerd container.
Quick start
Section titled “Quick start”git clone https://github.com/audreyt/ethercalccd ethercalc && bun installbun run --cwd packages/worker dev # wrangler dev on http://127.0.0.1:8787Open http://127.0.0.1:8787/_new to create a sheet.
What changed
Section titled “What changed”| Concern | Legacy (Node + Redis) | New (Workers) |
|---|---|---|
| HTTP | Express 3 / zappajs | Hono on Workers |
| Live state | in-memory + Redis | Durable Object per room |
| Realtime | socket.io 0.9/1.x | native WebSocket (JSON) + legacy shim |
| Self-host | Node + Redis compose | standalone workerd image |
The public HTTP API is preserved byte-for-byte where deterministic. WebSocket clients speak raw JSON at /_ws/:room; the /socket.io/* shim remains for external embeds.
Next steps
Section titled “Next steps”- User guide — formulas, forms, tips (replaces the old GitHub wiki)
- Architecture — components, request flow, storage model
- Self-hosting — Docker, Helm, nginx hardening
- Oracle testing — equivalence fixtures against the legacy oracle