Project: GoDaddy Tofu

project-godaddy-tofu Project Page

active project-page

Vision

Custom OpenTofu provider for the GoDaddy API. Manages DNS records and domains as IaC, consumed by pal-e-platform/terraform/. Replaces abandoned community providers (veksh/godaddy-dns, n3integration/godaddy — one deletes unmanaged records). Built in Go with the Terraform Plugin Framework. First dogfood target: palinks.app DNS records.

User Stories

Key Story Note Role Success Metric
dns-iac <a href="story-godaddy-tofu-dns-iac">story-godaddy-tofu-dns-iac</a> Platform operator palinks.app A/CNAME records managed via <code>tofu apply</code>
domain-iac <a href="story-godaddy-tofu-domain-iac">story-godaddy-tofu-domain-iac</a> Platform operator Domain details readable via <code>tofu plan</code>

Architecture

Go provider built on Terraform Plugin Framework. Internal Go client package (pkg/godaddy/) wraps the GoDaddy REST API directly — no Python SDK dependency.
  • Resources: godaddy_dns_record, godaddy_domain
  • Data sources: godaddy_domains, godaddy_dns_records
  • Auth: sso-key {key}:{secret} header from provider config
  • Domain Model — provider resources, data sources, and their GoDaddy API mapping
  • Data Flow — how tofu plan/apply translates to GoDaddy API calls
  • Deployment — provider registry, pal-e-platform consumption
  • DNS as Foundational Dependency — why DNS is the technical heart of every project that serves users
Key decisions:
  • Go client package inside provider repo (not separate SDK) — single language, single test suite
  • Python SDK dropped — Tofu providers must be Go, no cross-language benefit
  • DNS records as individual resources (not bulk) — safer than replace-all semantics

Board

board-godaddy-tofu

QA nits fixed (PR #7, closes #6): DomainID changed to int64, io.ReadAll capped at 1MB, url variable naming consistent. Go scaffold and DNS client solid. Next: integration tests (#4).

  • 2026-06-13 — Repo initialized, docs foundation merged (#1/#2)
  • 2026-06-14 — Go scaffold + DNS client merged (#3/PR #5). Provider compiles, all client methods implemented.

Repo Platform Role Status
<code>godaddy-tofu</code> Forgejo OpenTofu provider Docs complete, awaiting Go scaffold