From manual DNS to zero-click domain provisioning
NowPage's domain provisioning currently automates 4 of 5 steps when a user adds a custom domain. The only remaining manual step is changing nameservers at the domain registrar. This PRD outlines the path to eliminating that final step, achieving fully automated domain setup where a user enters a domain name and it goes live in under 5 minutes with zero manual configuration.
| Step | Status | How |
|---|---|---|
| Cloudflare zone creation | Auto | POST /zones via CF API (Phase 2) |
| DNS records (A, CNAME, wildcard) | Auto | CF DNS API (Phase 1) |
| Vercel domain provisioning | Auto | Vercel API v10 |
| Supabase database save | Auto | Direct insert |
| Nameserver change at registrar | Manual | User pastes 2 values at registrar |
createZone(), createDnsRecords(), getZoneId()Some users prefer to keep their nameservers at Hostinger rather than switching to Cloudflare. This phase adds direct DNS record creation via Hostinger's API, eliminating the need for Cloudflare in those cases.
cname.vercel-dns.comcreateDnsRecords() to try Cloudflare first, fall back to HostingerUsers with existing Hostinger hosting who don't want to switch nameservers. Their root site stays on Hostinger, and we add a wildcard CNAME for NowPage subdomains directly in Hostinger's DNS.
Still requires the user to have a Hostinger account. Only works for domains registered at or using Hostinger nameservers.
Namecheap's API requires IP whitelisting, which doesn't work with Vercel's dynamic IPs. Solution: proxy API calls through the Forge VPS (178.156.253.142) which has a fixed IP that can be whitelisted.
User clicks "Add Domain" → Vercel creates CF zone + DNS records → Vercel calls Forge VPS endpoint → VPS calls Namecheap API: domains.dns.setCustom → Nameservers changed automatically → Domain is live (zero manual steps)
POST /api/namecheap/set-nameserversnamecheap.domains.dns.setCustom methodThis phase fully eliminates the manual step for Namecheap domains. Combined with Phase 2 (Cloudflare zone creation), domains registered at Namecheap will go from "Add Domain" to "Live" with zero user intervention.
Currently, all domain operations use admin-level API tokens. This phase adds a credential vault where users can store their own Cloudflare, Hostinger, and Namecheap tokens. Their domains auto-configure using their own credentials.
Settings → Integrations → "Connect Cloudflare" / "Connect Namecheap" / "Connect Hostinger". One-time setup. After that, all their domains auto-configure using their own account.
Automatically detect which registrar a domain uses (via WHOIS) and route nameserver changes through the appropriate API. Covers the long tail of registrars.
createDomain("mybrand.com")
→ whoisLookup("mybrand.com") → "namecheap"
→ adapter.setNameservers("namecheap", "mybrand.com", [...ns])
→ namecheap.setCustom("mybrand.com", [...ns])
→ done
User clicks "Add Domain" → enters "mybrand.com" → App auto-detects registrar (Namecheap) → Creates Cloudflare zone → Creates DNS records → Sets nameservers at Namecheap (via VPS proxy) → Adds to Vercel → Domain is LIVE in <5 minutes Zero manual steps.
| Phase | What | Status | Manual Steps After |
|---|---|---|---|
| 1 | Cloudflare DNS auto-config | Shipped | Nameservers + zone creation |
| 2 | Cloudflare zone auto-creation | Shipped | Nameservers only |
| 3 | Hostinger DNS API | Planned | Nameservers (unless Hostinger NS) |
| 4 | Namecheap API (VPS proxy) | Planned | None (for Namecheap) |
| 5 | Per-user credentials | Future | None (multi-user) |
| 6 | Multi-registrar auto-detect | Future | None (universal) |