# Feature Context: Cloudflare DNS Management ## Configuration - **Development mode:** Automated - **Execution mode:** Direct - **Strategy:** Big Bang - **Build (Go):** `go build ./cmd/server` - **Build (Frontend):** `cd web && npm run build` - **Check (Frontend):** `cd web && npm run check` - **Test:** `go test ./...` - **Dev server:** `./scripts/dev-server.sh` (port 8090) ## Current State Starting fresh — no implementation yet. ## Cross-Phase Dependencies - Phase 2 depends on Phase 1 (settings fields for Cloudflare credentials) - Phase 3 depends on Phase 2 (dns.Provider interface) - Phase 4 depends on Phase 1 (API endpoints for settings) - Phase 5 depends on Phase 2 + Phase 6 (client + sync logic) - Phase 6 depends on Phase 2 (Cloudflare client) + Phase 3 (dns_records table) ## Key Architecture Decisions - DNS provider abstraction via `internal/dns.Provider` interface - Cloudflare API v4 via direct HTTP (no SDK) — keeps dependencies minimal - Local `dns_records` table tracks managed records for reconciliation - DNS operations are best-effort (log warnings, don't block deploys) - A records only, pointing to `ServerIP` from settings ## Environment & Runtime Notes - Encryption key from `ENCRYPTION_KEY` env var (AES-256-GCM) - SQLite with WAL mode, auto-migration on startup - Frontend is SvelteKit 2 + Svelte 5 + Tailwind CSS 4