Skip to content

v0.1.0

Release Date: 2026-06-07

Overview

Initial release of aha-go, a Go SDK for the Aha.io product management platform.

Highlights

  • Go SDK for Aha.io - Complete API client with support for products, features, ideas, releases, goals, initiatives, epics, requirements, comments, and users
  • Strategic Canvas Support - Create and export Business Model Canvas, Lean Canvas, and Opportunity Canvas with SVG, D2, and Mermaid output formats
  • CLI Tool - Full-featured command-line interface for interacting with Aha.io
  • Browser Automation - go-rod based automation for operations not available via API
  • Diagram Rendering - Generate visual diagrams from Aha.io data

Installation

go get github.com/grokify/aha-go@v0.1.0

Or install the CLI:

go install github.com/grokify/aha-go/cmd/aha@v0.1.0

What's Included

Core SDK

  • Configuration management with environment variable support (AHA_SUBDOMAIN, AHA_API_KEY)
  • Functional options pattern for client configuration
  • Comprehensive error handling with typed errors (IsNotFound, IsUnauthorized, etc.)
  • Pagination support for list operations

Entity Types

Entity List Get Create Update Delete
Products - - -
Features -
Ideas - - -
Releases - - -
Goals - - -
Initiatives - - -
Epics - - -
Requirements
Comments -
Users - - -

Packages

Package Description
aha Core client and entity types
canvas Strategic canvas creation and export
browser Browser automation with go-rod
render Diagram generation (SVG, D2, Mermaid)

CLI Commands

aha products list          # List all products
aha features list PRODUCT  # List features for a product
aha features get FEAT-123  # Get feature details
aha canvas create          # Create strategic canvas
aha canvas export          # Export canvas to SVG/D2/Mermaid

Quick Start

package main

import (
    "context"
    "fmt"
    "log"

    aha "github.com/grokify/aha-go"
)

func main() {
    client, err := aha.NewClient(
        aha.WithSubdomain("mycompany"),
        aha.WithAPIKey("your-api-key"),
    )
    if err != nil {
        log.Fatal(err)
    }

    ctx := context.Background()
    products, err := client.ListProducts(ctx)
    if err != nil {
        log.Fatal(err)
    }

    for _, p := range products {
        fmt.Printf("%s: %s\n", p.ReferencePrefix, p.Name)
    }
}

Documentation

Contributors