* feat(goja): self-contained goja bundle — fold dataroom into hanzoai/cloud (#101) Extract the dataroom business logic into a self-contained, ESM-free goja bundle (goja/bundle.js) exposing globalThis.handle(req), authored to run verbatim inside the unified hanzoai/cloud binary (HIP-0106, task #101 / epic #96) — the same in-process pattern @hanzo/plans and @hanzo/pricing use. The complete flow — documents (metadata; bytes on the cloud object-storage seam), data rooms + membership, shareable links (email/allow-list gate + bcrypt password + expiry + download toggle), viewers, per-page view analytics — is re-expressed as a route table over injected host functions (globalThis.db.query/exec bound per-tenant to Base/SQLite, globalThis.crypto bcrypt helpers). The Prisma models become CREATE TABLE statements in the bundle's migrate route. No Postgres, no Next.js; the standalone pod is retired. cloud/clients/dataroom go:embeds a byte-identical vendored copy (task mandates go:embed here since this repo is a TS app, not a Go module). Claude-Session: https://claude.ai/code/session_016yg7GPhYdWCh9vpp4HEwLZ * goja: run on the shared clients/gojabase RW-Base binding (#101) Rework the bundle onto the reusable clients/gojabase host contract (the RW-Base goja binding captable pilots, esign reuses) instead of a bespoke DB binding — one binding, not two. The bundle now calls __db.query/__db.exec, __newId, __now and __bcrypt.hash/verify (the leaf's bcrypt HostFn), and handle({route,params,query, orgId,body}); the per-tenant schema (DDL) moves to the Go leaf where gojabase runs it on first open, and each dispatch is one per-tenant transaction (commits iff status<400). No behaviour change to the dataroom flow; README updated. Claude-Session: https://claude.ai/code/session_016yg7GPhYdWCh9vpp4HEwLZ --------- Co-authored-by: hanzo-dev <dev@hanzo.ai>
1.3 KiB
1.3 KiB
Hanzo Dataroom
Overview
Hanzo dataroom service.
Upstream: Papermark (AGPL-3.0). LICENSE retains "Copyright (c) 2023-present Papermark, Inc." Open-source DocSend alternative. This fork is Hanzo Dataroom — single-license AGPL, no ee/ commercial directory.
In-process fold (HIP-0106, task #101)
The production runtime is the goja bundle in goja/: the ESM-free
port of the API handlers, run in-process inside the unified hanzoai/cloud binary
over Hanzo Base/SQLite (per-tenant) + the cloud object-storage seam. The standalone
Next.js app + Postgres pod is retired; cloud serves /v1/dataroom/* itself.
See goja/README.md for the host contract. The Next.js/TS
sources below remain the reference for the domain model that goja/bundle.js
implements.
Tech Stack
- Language: TypeScript/JavaScript
Build & Run
npm install && npm run build
npm test
Structure
dataroom/
CLA.md
Dockerfile
LICENSE
LLM.md
Pipfile
Pipfile.lock
README.md
SECURITY.md
app/
components/
components.json
context/
features/
lib/
middleware.ts
Key Files
README.md-- Project documentationpackage.json-- Dependencies and scriptsDockerfile-- Container build