Zunnesco Domains
Zunnesco Domains Core: Laravel control plane plus WordPress client
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/teray234/zunnesco-domains/archive/refs/heads/main.zipSearch, register, connect, renew, secure, and resell customer domains from one automated platform.
This monorepo is Core 1.0.0:
- A Laravel control plane in
control-plane/ - A WordPress client (
zunnesco-domains.php+src/) that talks to the control plane through signed APIs, or runs locally in sandbox/demo mode when Laravel is not configured
Plugin URI: https://github.com/teray234/zunnesco-domains
Author: zunnesco-dev
This product is not trademark or legal advice. AI name suggestions are not trademark clearance and are not registration availability without live registrar verification. Zunnesco Hosting owns certificate install; Domains only coordinates SSL status and DNS challenge fields.
Core vs later editions
| Core (this release) | Delayed / later |
|---|---|
| Sandbox registrar (fully working, labeled not-live) | Auctions |
| Search, register, transfer in/out, renew, lock | Appraisals |
| Local DNS zone editor with versions + rollback + templates | Automated brokerage |
| Connection wizard + portfolio + agency client assignment | Broad EPP operation |
| HMAC-signed Laravel API | Aftermarket marketplace product |
| Cloudflare / Namecheap / NameSilo / OpenSRS registrar stubs | Unsupported TLD assumptions (never) |
| Cloudflare DNS + Route 53 stubs | |
| RDAP-first monitoring stub | Next module: Zunnesco Monitor |
Ownership boundaries
- Commerce owns cart, payments, taxes, refunds, and dunning.
- Domains owns registrar orders, lifecycle, DNS, and ownership.
- Registration: payment authorization → registrar submit → capture. If the registrar fails, the authorization is voided/refunded. An idempotency key is required.
- Registrar and DNS provider are separate models. A domain can use Cloudflare DNS while registered at Namecheap.
- Capabilities are detected via
capabilities($tld)only. Unsupported TLD →unsupported, never fake available. - Lifecycle dates come from registrar/registry evidence fields. Grace/redemption dates are not invented.
- Availability is never claimed without adapter verification. A domain is not reserved/owned until the registrar result confirms registration.
- Money is integer minor units + ISO currency. First-year and renewal prices are snapshotted separately. Premium renewal is labeled. Negative margin requires an approval flag.
WordPress sandbox (no Laravel)
- Activate Zunnesco Domains.
- Open Domains → Search, enter a label (
brandnew) or FQDN (brandnew.com). - Supported sample TLDs:
.com.io.app.net. Other TLDs return unsupported. - Register from an available result. Until a registrar confirms, the domain is not treated as owned.
- Manage DNS (snapshot before publish, rollback, templates with additions/updates/conflicts/removals), transfers, renewals, connections, and agency client assignment.
Shortcodes: [zunnesco_domain_search] and [zunnesco_domains_portfolio].
REST: /wp-json/zunnesco-domains/v1/search|portfolio|dns/{id} (capability-checked).
Connection SDK:
$connection = zunnesco_domains()->connections()->create([
'domain_id' => $domainId,
'target_type' => 'funnels.project',
'target_id' => $funnelId,
]);
Target modules supply records via zunnesco_domains/connection_records.
Point WordPress at Laravel
// wp-config.php
define( 'ZNDO_CONTROL_PLANE_URL', 'http://127.0.0.1:8000' );
define( 'ZNDO_CONTROL_PLANE_KEY', 'your-shared-secret' );
Or paste the same values in Domains → Settings. Credentials use zunnesco_vault() when present.
See control-plane/README.md for migrate/seed/artisan serve.
DNS rollback
Every publish writes a version snapshot first. On Domains → DNS, pick a version and Rollback. Templates preview additions, updates, conflicts, and removals before apply. MX changes and verification-record removals warn. Broken DNSSEC can make the domain unreachable; DNSSEC changes must be staged.
Tests
php tests/test-schema.php
cd control-plane && php tests/DomainSchemaTest.php
# after composer install:
cd control-plane && php artisan test
License
GPL-2.0-or-later