Skip to main content

VS Code Extension

The Ggnomad VS Code Extension brings the travel & nomad marketplace into your editor. Manage providers, properties, bookings, experiences, trips, and marketplace analytics against the Burdenoff workspace + global GraphQL gateways — without leaving VS Code.

Features

  • Activity-bar views for the core GGNomad entities:
    • Providers — travel providers (hotels, airlines, tour operators, etc.)
    • Properties — stays and accommodation listings
    • Bookings — reservations with status and payment state
    • Experiences — activities, events, and tours
    • Trips — transport and itinerary listings
    • Dashboard — live marketplace KPIs
  • Create / update flows via guided input pickers: providers, properties, bookings, and favorites.
  • Webview panels (dual-bundled browser UI): rich Provider Detail + a marketplace Dashboard with analytics.
  • Status bar showing active listings and bookings at a glance.
  • Output-channel Analytics Overview and a copy/export-friendly log buffer.

Install

git clone https://github.com/algoshred/ggnomad-code-extension.git
cd ggnomad-code-extension
bun install

Build

# Production build (default — prod endpoints)
bun run build # → dist/extension.js + webview-ui/dist/

# Development build
BURDENOFF_ENV=local bun run build

Environment selection

The extension defaults to production endpoints. To build or run against local or alpha infrastructure, set BURDENOFF_ENV before installing dependencies or running the build:

BURDENOFF_ENVWorkspace gatewayGlobal gatewayWeb appProduct site
prod (default)https://graphqlworkspaces.burdenoff.com/workspaces/graphqlhttps://graphql.burdenoff.com/global/graphqlhttps://app.ggnomad.comhttps://ggnomad.com
alphahttps://alphagraphqlworkspaces.burdenoff.com/workspaces/graphqlhttps://alphagraphql.burdenoff.com/global/graphqlhttps://alphaapp.ggnomad.comhttps://alpha.ggnomad.com
localhttp://localhost:4003/workspaces/graphqlhttp://localhost:4000/global/graphqlhttp://localhost:3000http://localhost:3000
# Production build (default)
bun run build

# Alpha build
BURDENOFF_ENV=alpha bun run build

# Local development build
BURDENOFF_ENV=local bun run build

The active value is baked into the bundle at build time via webpack's DefinePlugin, so the shipped extension has no runtime dependency on process.env and no localhost references unless explicitly requested.

Authentication

Ggnomad uses the Burdenoff OAuth 2.0 device-code flow (works on local, Remote-SSH, Codespaces, and WSL). Tokens are stored in VS Code SecretStorage.

  1. Run Ggnomad: Login (or click Sign In in the Providers view).
  2. Enter the displayed code at the verification URL.
  3. Pick a workspace. The extension issues a workspace-scoped token and scopes all data requests to it.

The VS Code OAuth client id is burdenoff_vscode_ggnomad and the redirect is vscode://burdenoff.ggnomad-code-extension/auth/callback.

Configuration

SettingDefaultPurpose
ggnomad.workspaceEndpointenvironment defaultWorkspace gateway
ggnomad.globalEndpointenvironment defaultGlobal gateway (auth)
ggnomad.oidcIssuerenvironment defaultOIDC issuer override
ggnomad.clientIdbuilt-in defaultOAuth client id override
ggnomad.workspaceIdautoSet after login
ggnomad.webAppUrlenvironment defaultGgnomad web app URL
ggnomad.productWebsiteUrlenvironment defaultGgnomad product website URL

For local development, set BURDENOFF_ENV=local at build time rather than manually editing endpoints.

Development commands

bun install
bun run lint # eslint, zero warnings
bun run typecheck # tsc --noEmit
bun run compile # tsc -> out/ (test harness)
BURDENOFF_ENV=local bun run build # webpack (extension host + webview UI)
bun run compile:test
bun run test # @vscode/test-electron (needs a display / xvfb)
bun run package # vsce package -> .vsix
bun run sanity # all of the above

Running tests headlessly on Linux

xvfb-run -a env GGNOMAD_FORCE_EXTENSION_TESTS=true bun run test

Install from VSIX

bun run package
code --install-extension ggnomad-code-extension-*.vsix

Release

Tag pushes (v*) build + test + package a VSIX and attach it to a GitHub Release — they never auto-publish. Marketplace / OpenVSX publishing is a deliberate, human-gated workflow_dispatch with the relevant PAT secret.