questdb / questdb/ui

Notebooks: shared notebooks per QuestDB instance, stored server-side with permission-based access

Open
#578 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement notebooks Severity: 1 web-console
Dominant language
TypeScript
Stars
29
Forks
39
Avg merge
4d 11h
Merged PRs (30d)
4

Description

Notebooks today are 100% client-side: persisted in the browser's IndexedDB (Dexie web-console DB — buffers.notebookViewState + the notebook_results table, src/store/db.ts, src/scenes/Editor/Notebook/useNotebookPersistence.ts). Nothing is stored server-side; the only sharing is file export/import (src/scenes/Editor/Monaco/exportTabs.ts / importTabs.ts). There is no notion of ownership, sharing, or read-only mode (only a per-query requireAllDQL check).

Request: "Shared notebooks" per instance — readable by all, or writable by multiple users — using QuestDB system tables + permissions. Real-time collaboration is explicitly out of scope.

Ask: persist shared notebooks in a server-side QuestDB table, gate read/write via QuestDB's permission/ACL system, and add UI to list/open shared vs. local notebooks. Reuse the existing NotebookViewState JSON serialization as the storage payload.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with src/store/db.ts and src/scenes/Editor/Notebook/useNotebookPersistence.ts to understand the existing NotebookViewState persistence, then review src/scenes/Editor/Monaco/exportTabs.ts and importTabs.ts for current sharing behavior. Check the existing requireAllDQL permission check and map the UI changes needed to list and open local versus shared notebooks. Done means shared notebooks are stored server-side, access follows permissions, and local notebooks continue to work without real-time collaboration.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, sql, typescript
Domain
authorization, database, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.