DNS Management System Design Document

Overview

The DNS Management System provides a unified interface for managing DNS zones and records through bidirectional synchronization with a Technitium DNS Server. The system is integrated into the Local dashboard section and allows users to manage their DNS infrastructure through a single interface while maintaining consistency between the local database and the DNS server.

Architecture

System Components

  1. Frontend Interface

    • Location: /apps/dodev/app/dashboard/local/zones/page.tsx
    • Purpose: Primary UI for DNS zone and record management
    • Features:
      • Location-based zone organization
      • Real-time DNS zone import from Technitium server
      • CRUD operations for domains and DNS records
      • Enable/disable status management
      • Visual status indicators (green/orange badges)
  2. API Layer

    • Base path: /apps/dodev/app/api/dns/
    • Routes:
      • domains/ - Domain CRUD operations
      • records/ - DNS record management
      • zones/import/ - Import zones from Technitium
      • zones/sync/ - Sync operations
      • zones/toggle/ - Enable/disable zones
  3. DNS Client Library

    • Location: /apps/dodev/lib/dns-client.ts
    • Purpose: TypeScript client for Technitium DNS Server API
    • Features:
      • Authentication management
      • Zone and record operations
      • Error handling with custom TechnitiumAPIError class
  4. Database Layer

    • Platform: Convex
    • Tables:
      • loc_locations - Physical/logical locations
      • loc_domains - DNS domains/zones
      • loc_zones - DNS A records

Key Features

1. Bidirectional Synchronization

All CRUD operations update both the local Convex database and the Technitium DNS server simultaneously, ensuring data consistency across systems.

2. Location-Based Organization

DNS zones are organized by locations, allowing for geographical or logical grouping of DNS resources.

3. Real-Time Import

Users can import existing zones from the Technitium DNS server with a single click, automatically populating the local database.

4. Status Management

Each domain and DNS record can be enabled or disabled, with visual indicators showing the current status.

5. Comprehensive CRUD Operations

Full create, read, update, and delete operations for both domains and DNS records.

Technical Implementation

DNS Client Integration

// DNS Client Usage Example
import { DNSClient } from '@/lib/dns-client';

const client = new DNSClient(
  process.env.TECHNITIUM_DNS_URL!,
  process.env.TECHNITIUM_USERNAME!,
  process.env.TECHNITIUM_PASSWORD!
);

// Get zones from Technitium
const zones = await client.getZones();

// Add a new zone
await client.addZone('example.com', 'Primary');

// Add an A record
await client.addRecord('example.com', 'www', 'A', '192.168.1.100');

API Route Structure

// Example API route for domain operations
// apps/dodev/app/api/dns/domains/route.ts
export async function POST(request: Request) {
  const data = await request.json();
  
  // Create in Convex database
  const domain = await ctx.db.insert("loc_domains", {
    name: data.name,
    locationId: data.locationId,
    isEnabled: true,
    createdAt: Date.now()
  });
  
  // Create in Technitium DNS server
  await dnsClient.addZone(data.name, 'Primary');
  
  return Response.json({ success: true, domain });
}

Database Schema

// Convex schema definitions
export const locLocations = defineTable({
  name: v.string(),
  description: v.optional(v.string()),
  isEnabled: v.boolean(),
  createdAt: v.number(),
}).index("by_name", ["name"]);

export const locDomains = defineTable({
  name: v.string(),
  locationId: v.id("loc_locations"),
  isEnabled: v.boolean(),
  createdAt: v.number(),
}).index("by_location", ["locationId"])
  .index("by_name", ["name"]);

export const locZones = defineTable({
  domainId: v.id("loc_domains"),
  name: v.string(),
  type: v.string(),
  value: v.string(),
  ttl: v.optional(v.number()),
  isEnabled: v.boolean(),
  createdAt: v.number(),
}).index("by_domain", ["domainId"])
  .index("by_name_type", ["name", "type"]);

User Interface Design

Main Dashboard Layout

  • Left Panel: Location selector with expandable tree view
  • Center Panel: Domain list with status indicators
  • Right Panel: DNS record details for selected domain
  • Top Bar: Import, sync, and new domain buttons

Visual Status Indicators

  • Green Badge: Enabled and synchronized
  • Orange Badge: Disabled or needs synchronization
  • Red Badge: Error state or conflict

Interactive Elements

  • Click to Edit: In-place editing for domain and record values
  • Drag and Drop: Reorder DNS records by priority
  • Bulk Operations: Select multiple items for batch operations

Security Considerations

Authentication

  • DNS server credentials stored securely in environment variables
  • User authentication required for all DNS operations
  • Role-based access control for administrative functions

Data Validation

  • Input sanitization for all DNS record values
  • Domain name format validation
  • IP address and hostname validation
  • TTL value range checking

Error Handling

  • Graceful handling of DNS server connectivity issues
  • Rollback mechanisms for failed synchronization
  • User-friendly error messages
  • Detailed logging for troubleshooting

Performance Optimization

Caching Strategy

  • Local caching of DNS zone data
  • Intelligent cache invalidation
  • Background synchronization jobs

Batch Operations

  • Bulk import of DNS zones
  • Batch updates for multiple records
  • Queued operations for offline scenarios

Response Time Targets

  • DNS zone listing: < 500ms
  • Single record operations: < 200ms
  • Bulk import operations: < 5 seconds for 100 zones

Monitoring and Logging

Health Checks

  • DNS server connectivity monitoring
  • Database synchronization status
  • API endpoint health checks

Metrics Collection

  • Operation success/failure rates
  • Response time monitoring
  • User activity tracking
  • Error frequency analysis

Alerting

  • DNS server disconnection alerts
  • Synchronization failure notifications
  • High error rate warnings

Future Enhancements

Phase 2 Features

  1. Automated Backups: Regular backups of DNS configurations
  2. Change History: Audit trail for all DNS modifications
  3. Template System: Pre-defined DNS record templates
  4. Bulk Import/Export: CSV and JSON import/export functionality

Phase 3 Features

  1. Multi-Server Support: Manage multiple DNS servers
  2. Load Balancing: DNS-based load balancing configuration
  3. Geographic Routing: Location-based DNS responses
  4. API Integration: RESTful API for external integrations

Advanced Features

  1. DNSSEC Support: DNS Security Extensions management
  2. IPv6 Support: Full IPv6 address record management
  3. Dynamic DNS: Automatic record updates
  4. Analytics Dashboard: DNS query analytics and reporting

Implementation Timeline

Phase 1 (Completed)

  • ✅ Basic DNS client library
  • ✅ Convex database schema
  • ✅ Frontend UI components
  • ✅ API route implementations
  • ✅ Bidirectional synchronization

Phase 2 (In Progress)

  • 🔄 Enhanced error handling
  • 🔄 Performance optimizations
  • 🔄 User experience improvements
  • 🔄 Additional record types

Phase 3 (Planned)

  • 📋 Advanced features implementation
  • 📋 Multi-server support
  • 📋 Analytics and reporting
  • 📋 API documentation

Testing Strategy

Unit Tests

  • DNS client library functions
  • API route handlers
  • Database operations
  • Validation logic

Integration Tests

  • End-to-end DNS operations
  • Synchronization workflows
  • Error handling scenarios
  • Performance benchmarks

User Acceptance Testing

  • UI/UX validation
  • Workflow testing
  • Accessibility compliance
  • Cross-browser compatibility

Deployment Considerations

Environment Configuration

  • DNS server connection settings
  • Database connection parameters
  • API rate limiting configuration
  • Logging and monitoring setup

Production Requirements

  • High availability DNS server setup
  • Database backup and recovery
  • SSL/TLS certificate management
  • Security hardening

Scaling Considerations

  • Database performance optimization
  • API rate limiting and throttling
  • Caching layer implementation
  • Load balancing for high traffic

Last updated: August 16, 2025

On this page