Skip to main content

CLI (Go)

Prerequisites

  • Go 1.26+
  • git
  • make available in your shell

Clone repository

Bootstrap tools and modules

This downloads Go modules and installs the pinned lint toolchain.

Daily development loop

Run the CLI locally

Install local binary

Key code locations

  • apps/cli/cmd/: Cobra commands, flags, and CLI output behavior
  • pkg/i18nconfig/: i18n.yml and i18n.jsonc parsing and validation
  • apps/cli/internal/i18n/runsvc/: run planning and execution flow
  • apps/cli/internal/i18n/syncsvc/: sync orchestration and conflict logic
  • internal/i18n/storage/: adapter contracts and provider integrations

Before opening a PR

This runs formatting, linting, tests, and build checks in the same flow used by contributors.

Go Lambda workers

Queue-backed Go Lambdas under apps/*-lambda deploy to production through the Lambda Deploy GitHub Actions workflow on prod. Path filters decide which functions build on each push; concurrency is scoped per deploy job so unrelated merges do not cancel another function’s deploy. See Lambda deployment for filters, concurrency rules, and adding a worker.

Platform web app

The Next.js app lives in apps/hyperlocalise-web. See apps/hyperlocalise-web/README.md for setup, .env, Postgres, and vp run dev. Contributor conventions (Hono routes, Drizzle migrations, API envelopes, E2E) are in apps/hyperlocalise-web/AGENTS.md. Canva app OAuth (Developer Portal URLs, CANVA_OAUTH_* env): Canva app OAuth.

Prerequisites

  • Docker for PostgreSQL (docker compose up -d from the repo root)
  • vp with vp env setup
  • make bootstrap from the repository root

Daily loop

From apps/hyperlocalise-web:

go-svc sidecar

apps/go-svc hosts segment validation, native CRUD APIs (dictionaries, glossaries, translation memory, teams, native projects, native job reads), personal access token management, public PAT/agent job reads, public translation download, Domains research, Search Console proxies, and Hyperlab OFREP evaluate routes. The web app uses two call paths: Job creation (POST /api/v1/jobs on the web app) and the Platform Jobs UI still use Hono /api/orgs/.../jobs. Session-authenticated native job reads are also implemented on go-svc at /v1/orgs/{slug}/projects/{id}/jobs... and /v1/orgs/{slug}/jobs... (see apps/go-svc/README.md). Public PAT/agent job reads (GET /v1/jobs/latest, /v1/jobs/{jobId}, /v1/jobs/{jobId}/status) are go-svc only on https://api.hyperlocalise.com — do not re-add them to Hono. For local development, start Postgres and Valkey (docker compose up -d), run migrations, then run go-svc with matching WORKOS_*, WORKOS_COOKIE_PASSWORD, and VALKEY_URL=redis://localhost:6379. Set both GO_SVC_URL=http://127.0.0.1:8080 and NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:8080 in apps/hyperlocalise-web/.env, plus GO_SVC_CORS_ORIGINS=http://localhost:3000 on go-svc. Domains research also needs DATAFORSEO_API_KEY on go-svc. Full steps: apps/go-svc/README.md#local-development. Design notes: docs/adr/2026-09-22-web-go-svc-api-client-design.md and docs/adr/2026-09-20-go-svc-workos-access-token-design.md.

Before opening a web PR

Run vp check --fix and vp test in apps/hyperlocalise-web. Go changes in the monorepo still need make fmt, make lint, and make test from the root when touched.