skip to content
szczecin 53.43N 14.55E ./start-project

Building a native API client with Go and Fyne

(go, fyne, open-source) 1 min read by Bartosz Pachołek

Why Helena is one small native binary instead of a browser in disguise, and why its collections are plain YAML.

Helena is an API client that does what you expect: it sends requests, scripts tests and runs whole collections. What makes it different is what it does not need: no browser engine, no account and no cloud service.

One native binary

Helena is written in Go with the Fyne toolkit. It is a single native app of about 35 MB that opens right away on Windows, macOS and Linux. The runtime is plain Go, so it is covered by go test like any other Go code.

Collections are just files

Collections, folders and requests are plain YAML. They can live in the same repository as the API they test, get reviewed in pull requests, and be diffed like code. Secrets are kept out of them.

What it covers

  • Nine auth schemes, from Basic and Bearer to OAuth 2.0 with PKCE, AWS SigV4, Digest and NTLM.
  • Server-Sent Events and two-way WebSocket sessions.
  • A layered {{var}} scope with a live preview of the resolved URL.
  • Pre- and post-request JavaScript with test() and expect(), and a no-code Assertions tab.
  • Chaining, and helena run for whole collections in CI.
  • Import from OpenAPI, Swagger, WSDL and Postman; export to cURL, wget, fetch, Python and Go.
  • A virtualized viewer for big responses, built as its own library: go-fyne-pretty-view.

Helena is free and open source. Read more on idct.tech/helena or get it from GitHub.