nodaddy 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +118 -0
  2. package/dist/index.js +1977 -0
  3. package/package.json +56 -0
package/README.md ADDED
@@ -0,0 +1,118 @@
1
+ # nodaddy
2
+
3
+ **No** more Go**Daddy**. It's time to leave.
4
+
5
+ A CLI tool that automates bulk domain transfers from GoDaddy to Cloudflare, because life's too short to click through two different dashboards 800 times.
6
+
7
+ ---
8
+
9
+ > Inspired by [@gregisenberg](https://x.com/gregisenberg/status/2017293461746053500) — *"I've never met someone under the age of 35 that uses GoDaddy"* — and [@code_rams](https://x.com/code_rams/status/2017487005093859472) discovering why everyone hates it: dark patterns, renewal traps, legacy tech... *"the AOL of domains."*
10
+
11
+ ---
12
+
13
+ ## Before you start
14
+
15
+ **API Keys** — you'll need credentials from both providers:
16
+
17
+ - **GoDaddy** — Create a Production API key at [developer.godaddy.com/keys](https://developer.godaddy.com/keys) (not OTE/test). You'll get a key + secret pair.
18
+ - **Cloudflare** — Use your **Global API Key** from [dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens) (bottom of page). You'll also need your account email and Account ID (found on any zone overview page).
19
+
20
+ > **Why Global API Key?** Cloudflare's scoped tokens don't support `Registrar Domains:Edit`, which is needed for transfers. A scoped token with `Zone:Edit` + `DNS:Edit` works if you only want DNS migration without transferring the domain.
21
+
22
+ **Disable Domain Protection + Domain Privacy** — GoDaddy's Domain Protection + Domain Privacy block transfers and **cannot be removed via API due to 2FA requests**. You must disable both manually before running `nodaddy`:
23
+
24
+ ### To Disable Domain Protection 🔓
25
+
26
+ 1. To **Disable Domain Protection** go to: [dcc.godaddy.com/control/portfolio](https://dcc.godaddy.com/control/portfolio)
27
+ 2. Check the boxes next to the domains you want to transfer
28
+ 3. Click Protection Plans > Downgrade Protection Plans
29
+ 4. Select **No Protection** and Confirm Downgrade (requires SMS or authenticator verification)
30
+ 5. Wait for the change to take effect (can take up to 48 hours, usually ~15 minutes)
31
+
32
+ ### To Disable Domain Privacy 🔓
33
+
34
+ 1. To **Disable Domain Privacy** go to: [dcc.godaddy.com/control/portfolio](https://dcc.godaddy.com/control/portfolio)
35
+ 2. Check the boxes next to the domains you want to transfer
36
+ 3. Click Domain Privacy > Change to Off > Save
37
+ 4. Wait for the change to take effect (can take up to 48 hours, usually ~15 minutes)
38
+ 5. Now you **should** be ready to use `nodaddy`! 😄
39
+
40
+ `nodaddy` will check for this during preflight and skip any domains that still have Domain Protection enabled.
41
+
42
+ **Transfer costs** — each transfer includes a 1-year renewal at Cloudflare's at-cost pricing, billed to the card on file in your Cloudflare account. Make sure you have a payment method set up.
43
+
44
+ | TLD | Cloudflare | GoDaddy |
45
+ |-----|-----------|---------|
46
+ | .com | ~$9.15/yr | ~$22/yr |
47
+ | .net | ~$10.50/yr | ~$20/yr |
48
+ | .org | ~$10.00/yr | ~$22/yr |
49
+
50
+ Pricing varies by TLD. The CLI shows a cost reminder and asks for confirmation before initiating transfers.
51
+
52
+ **Environment variables** — optionally skip the interactive prompts:
53
+
54
+ ```bash
55
+ export GODADDY_API_KEY=your-key
56
+ export GODADDY_API_SECRET=your-secret
57
+ export CLOUDFLARE_ACCOUNT_ID=your-account-id
58
+
59
+ # Global API Key (recommended — supports registrar transfers)
60
+ export CLOUDFLARE_API_KEY=your-global-api-key
61
+ export CLOUDFLARE_EMAIL=you@example.com
62
+
63
+ # OR scoped API Token (DNS-only migrations, no transfer support)
64
+ # export CLOUDFLARE_API_TOKEN=your-api-token
65
+ ```
66
+
67
+ ## Install
68
+
69
+ ```bash
70
+ npm install -g nodaddy
71
+ ```
72
+
73
+ Or run directly:
74
+
75
+ ```bash
76
+ npx nodaddy migrate
77
+ ```
78
+
79
+ ## Usage
80
+
81
+ ```bash
82
+ nodaddy migrate # Interactive wizard
83
+ nodaddy migrate --all # Skip domain picker, take them all
84
+ nodaddy migrate --dry-run # Preview without making changes
85
+ nodaddy list # List GoDaddy domains
86
+ nodaddy status # Check transfer progress
87
+ nodaddy resume # Resume interrupted transfers
88
+ nodaddy config # View stored credentials
89
+ nodaddy config --reset # Clear stored credentials
90
+ nodaddy cleanup # Delete all stored credentials, contact info, and history
91
+ ```
92
+
93
+ ## How it works
94
+
95
+ For each domain, `nodaddy` automates 8 steps:
96
+
97
+ 1. **Preflight** — Verify domain is active, >60 days old, TLD supported, Domain Protection off
98
+ 2. **DNS backup** — Export all records from GoDaddy
99
+ 3. **Zone creation** — Create Cloudflare zone
100
+ 4. **DNS migration** — Map and recreate records (A, AAAA, CNAME, MX, TXT, SRV, CAA, NS)
101
+ 5. **Prepare GoDaddy** — Remove privacy, disable auto-renew, unlock domain
102
+ 6. **Auth code** — Fetch transfer authorization code
103
+ 7. **Nameservers** — Point domain to Cloudflare's nameservers
104
+ 8. **Transfer** — Initiate transfer at Cloudflare
105
+
106
+ Registrant contact info is saved after first entry and reused on future runs — you won't have to type it again. Track progress with `nodaddy status`.
107
+
108
+ Rate limiting, concurrent batch processing (8 domains at a time), and state persistence are built in. If anything interrupts or fails, run `nodaddy resume`. GoDaddy's API often returns temporary 422 "resource lock" errors after recent dashboard changes — the tool automatically retries with backoff (up to ~105 seconds) so you don't have to babysit it.
109
+
110
+ When you're done transferring, run `nodaddy cleanup` to remove stored API credentials, contact info, and migration history from your machine.
111
+
112
+ > **Note:** Domain transfers use undocumented Cloudflare Registrar API endpoints that are not part of Cloudflare's public API. These endpoints could change or break without notice. DNS migration uses the standard, documented API and is unaffected.
113
+
114
+ GoDaddy parking records and forwarding junk are automatically skipped. DNS records are created with `proxied: false` by default so your traffic routing doesn't change unexpectedly — the wizard gives you the option to enable Cloudflare proxying (orange cloud) if you want it.
115
+
116
+ ## License
117
+
118
+ MIT