Skip to main content

Backend Service Integration

The GGNomad backend is implemented as wspace-ggnomad-svc — a workspace microservice in the Burdenoff platform. It exposes a GraphQL API on the workspaces public gateway, publishes domain events, and stores data in Postgres (with Prisma + AGE).

Service architecture

  • Service: wspace-ggnomad-svc
  • Gateway: Workspaces public gateway (/workspaces/graphql)
  • Schema: .hive-schema.graphql (published to GraphQL Hive Cloud)
  • Database: Postgres 18 + AGE (via Prisma)
  • Events: Redis Streams via @burdenoff/be-sdk

Environment selection

All GGNomad services default to production infrastructure. To target a different environment, set BURDENOFF_ENV:

BURDENOFF_ENVWorkspace gatewayGlobal gateway
prod (default)https://graphqlworkspaces.burdenoff.com/workspaces/graphqlhttps://graphql.burdenoff.com/global/graphql
alphahttps://alphagraphqlworkspaces.burdenoff.com/workspaces/graphqlhttps://alphagraphql.burdenoff.com/global/graphql
localhttp://localhost:4003/workspaces/graphqlhttp://localhost:4000/global/graphql

Local development

Start the workspace state (Postgres + Redis) via docker compose, then run the service:

cd ~/products/wspace/ggnomad/wspace-ggnomad-svc

# Start backing services
docker compose up -d

# Install, generate Prisma client, and run
bun install
bun run gendb
bun run codegen
bun run dev

The service runs on port 8080 by default and registers itself with the workspaces public gateway at http://localhost:4003.

GraphQL schema

The service schema is published to GraphQL Hive Cloud and consumed by the gateways for federation. Key entity types:

  • GgnomadProvider — hosts, tour operators, venues
  • GgnomadProperty — stays and accommodation
  • GgnomadActivity — experiences and activities
  • GgnomadEvent — dated entertainment events
  • GgnomadTour — guided tours
  • GgnomadTrip — transport legs
  • GgnomadBooking — confirmed reservations
  • GgnomadFavorite — wishlist items
  • GgnomadAnalytics — marketplace and host analytics

Domain events

The service publishes events via Redis Streams for downstream consumers:

  • ggnomad.booking.created
  • ggnomad.booking.cancelled
  • ggnomad.provider.created
  • ggnomad.property.created
  • ggnomad.favorite.toggled

Subscribe to these events to drive notifications, sync external systems, and trigger downstream automation without polling.

Build and deploy

bun run build # TypeScript compilation → dist/
bun run sanity # lint + format + type-check + test + build

CI/CD:

  • Push to main / PRs: Lint → Type check → Build → Unit tests → Hive publish (development)
  • Alpha deploy: Auto after CI passes
  • Prod deploy: Manual approval gated by the prod GitHub Environment