Quester Studio

Developing the studio

Commands to run desktop, API, UI, and UI+API modes

Quester Studio can run as a desktop app, an HTTP API, or a browser UI talking to that API. Shared editor code uses a QuesterClient; only the transport changes (Electrobun RPC vs HTTP JSON + SSE).

Full debug guide: DEBUGGING.md.

Prerequisites

bun install
bun run build:pkgs

Command cheat sheet

ModeCommand(s)URL / window
Desktop (UI + desktop backend)bun run --filter @quester-studio/desktop devElectrobun app
Desktop + UI HMRbun run --filter @quester-studio/desktop dev:hmrElectrobun + http://127.0.0.1:5173
API onlybun run --filter @quester-studio/api devhttp://127.0.0.1:8787
UI only (mock)bun run --filter @quester-studio/desktop dev:web:mockhttp://127.0.0.1:5173 — in-memory fixture
UI only (→ API)bun run --filter @quester-studio/desktop dev:webNeeds API on :8787
UI + APITerminal A: API · Terminal B: dev:webUI → API

Desktop (UI + Electrobun)

bun run --filter @quester-studio/desktop dev
# live UI reload:
bun run --filter @quester-studio/desktop dev:hmr

API only

# optional (PowerShell):
# $env:QUESTER_WORKSPACE_ROOT="examples/sample-workspace"

bun run --filter @quester-studio/api dev
# health: http://127.0.0.1:8787/health

UI only (mock — no API)

bun run --filter @quester-studio/desktop dev:web:mock

In-memory fixture workspace. Good for layout/canvas work. Data resets on refresh.

UI only (HTTP — API required)

bun run --filter @quester-studio/desktop dev:web

Without the API, workspace load/run will fail — use mock or UI + API.

UI + API

# Terminal A
bun run --filter @quester-studio/api dev

# Terminal B
bun run --filter @quester-studio/desktop dev:web

Open http://127.0.0.1:5173. Optional: $env:VITE_QUESTER_API_URL="http://127.0.0.1:8787".

Stop

  • Cursor terminal: trash icon (Ctrl+C often fails on Windows)
  • Leftovers: bun run --filter @quester-studio/desktop dev:stop
  • Kill by port: netstat -ano | findstr ":5173" then Stop-Process -Id <PID> -Force

Switching backends

EntryClient
apps/desktop/src/renderer/main.tsxElectrobun RPC
apps/desktop/src/renderer/main.web.tsxHttpQuesterClient

Package map

Package / appRole
@quester-studio/api-contractDTOs + QuesterClient / HTTP client
@quester-studio/workspace-serviceWorkspace FS + execute
apps/apiHTTP + SSE
apps/desktopElectrobun shell + shared React editor