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_ENV | Workspace gateway | Global gateway | Web app | Product site |
|---|---|---|---|---|
prod (default) | https://graphqlworkspaces.burdenoff.com/workspaces/graphql | https://graphql.burdenoff.com/global/graphql | https://app.ggnomad.com | https://ggnomad.com |
alpha | https://alphagraphqlworkspaces.burdenoff.com/workspaces/graphql | https://alphagraphql.burdenoff.com/global/graphql | https://alphaapp.ggnomad.com | https://alpha.ggnomad.com |
local | http://localhost:4003/workspaces/graphql | http://localhost:4000/global/graphql | http://localhost:3000 | http://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.
- Run Ggnomad: Login (or click Sign In in the Providers view).
- Enter the displayed code at the verification URL.
- 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
| Setting | Default | Purpose |
|---|---|---|
ggnomad.workspaceEndpoint | environment default | Workspace gateway |
ggnomad.globalEndpoint | environment default | Global gateway (auth) |
ggnomad.oidcIssuer | environment default | OIDC issuer override |
ggnomad.clientId | built-in default | OAuth client id override |
ggnomad.workspaceId | auto | Set after login |
ggnomad.webAppUrl | environment default | Ggnomad web app URL |
ggnomad.productWebsiteUrl | environment default | Ggnomad 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.
Links
- Source: github.com/algoshred/ggnomad-code-extension
- Issues: github.com/algoshred/ggnomad-code-extension/issues
- Publisher:
burdenoff· extension idburdenoff.ggnomad-code-extension