Files
tiny-forge/plans/cloudflare-dns-management/PLAN.md
T
alexei.dolgolyov c730cfaa45 feat: Cloudflare DNS management with automatic record sync
Add flexible DNS management to Docker Watcher. By default, wildcard DNS
is assumed (current behavior). When disabled, users can configure a
Cloudflare DNS provider with API token and zone selection. DNS A records
are automatically created/updated/deleted in sync with proxy consumers
(deployed instances and standalone proxies).

- Settings: wildcard_dns toggle, dns_provider, cloudflare credentials
- Cloudflare client: Provider interface with EnsureRecord/DeleteRecord/ListRecords
- DNS lifecycle hooks in deployer and proxy manager (best-effort)
- Settings UI: DNS config section with provider picker, zone selector, test button
- DNS Records page at /dns with filtering, sync status, reconciliation
- Records visible in both wildcard and managed modes
- Cleanup on provider change: removes old records when switching modes
2026-04-02 14:49:21 +03:00

2.2 KiB

Feature: Cloudflare DNS Management

Branch: feature/cloudflare-dns-management Base branch: main Created: 2026-04-02 Status: 🟡 In Progress Strategy: Big Bang Mode: Automated Execution: Direct

Summary

Introduce flexible DNS management. By default, wildcard DNS is assumed (current behavior). When disabled, the user selects a DNS provider (Cloudflare initially) and provides API credentials. DNS A records are then automatically kept in sync with proxy consumers (deployed instances and standalone proxies). A dedicated DNS Records page provides visibility, filtering, and manual sync/reconciliation.

Build & Test Commands

  • Build (Go): go build ./cmd/server
  • Build (Frontend): cd web && npm run build
  • Check (Frontend): cd web && npm run check
  • Test (Go): go test ./...
  • Dev server: ./scripts/dev-server.sh

Phases

  • Phase 1: Settings model & API [domain: backend] → subplan
  • Phase 2: Cloudflare DNS client [domain: backend] → subplan
  • Phase 3: DNS lifecycle hooks [domain: backend] → subplan
  • Phase 4: Settings UI — DNS configuration [domain: frontend] → subplan
  • Phase 5: DNS Records page [domain: fullstack] → subplan
  • Phase 6: DNS sync & reconciliation [domain: backend] → subplan

Phase Progress Log

Phase Domain Status Review Build Committed
Phase 1: Settings model & API backend Not Started
Phase 2: Cloudflare DNS client backend Not Started
Phase 3: DNS lifecycle hooks backend Not Started
Phase 4: Settings UI — DNS config frontend Not Started
Phase 5: DNS Records page fullstack Not Started
Phase 6: DNS sync & reconciliation backend Not Started

Final Review

  • Comprehensive code review
  • Full build passes
  • Full test suite passes
  • Merged to main