Files
VectorDNS/README.md

5.0 KiB

VectorDNS

DNS lookup, WHOIS, and domain monitoring tool. Search nameservers, check domain availability, and track DNS record changes over time.

Features

  • DNS Record Lookup — Query A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, and SRV records for any domain
  • WHOIS Lookup — View registrar, registration/expiration dates, nameservers, and domain status
  • Domain Availability — Check if a domain is registered or available via IANA RDAP
  • Domain Monitoring — Save domains to a dashboard, track DNS changes over time, get alerts when records change
  • Change Detection — Daily automated re-checks with visual diffs showing what changed
  • Notifications — In-app notification feed + email alerts via Resend
  • Dark Mode — Dark theme by default with light mode toggle

Tech Stack

  • Framework: Next.js 16 (App Router) + React 19
  • Language: TypeScript (strict mode)
  • Styling: Tailwind CSS v4 + shadcn/ui
  • Auth & Database: Supabase (auth, Postgres, RLS, realtime)
  • DNS: Tangerine (DNS-over-HTTPS via Cloudflare/Google)
  • WHOIS: whoiser (RDAP-based, free)
  • Email: Resend
  • DNS API: Go microservice on VPS (miekg/dns — direct UDP/TCP resolution, DNSSEC, propagation checks)
  • Deployment: Vercel (frontend) + VPS (Go DNS API)
  • Package Manager: Bun

Getting Started

Prerequisites

  • Bun >= 1.3
  • A Supabase project (free tier works)
  • (Optional) Resend API key for email alerts

Setup

# Clone and install
git clone https://github.com/DevVoxel/VectorDNS.git
cd vectordns
bun install

# Configure environment
cp .env.local.example .env.local
# Fill in your Supabase URL, anon key, and other values

# Run database migrations
# (see supabase/migrations/ once they exist)

# Start dev server
bun dev

Open http://localhost:3000 to see the app.

Environment Variables

Variable Required Description
NEXT_PUBLIC_SUPABASE_URL Yes Your Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY Yes Supabase anonymous/public key
SUPABASE_SERVICE_ROLE_KEY Yes Service role key (for cron jobs)
CRON_SECRET Yes Secret to authenticate Vercel cron requests
RESEND_API_KEY No Resend API key for email notifications

Architecture

VectorDNS uses a hybrid architecture: Next.js on Vercel for the frontend, and a Go microservice on a VPS for DNS resolution and monitoring. See docs/architecture.md for details and docs/api-spec.md for the Go API spec.

Project Structure

app/
  page.tsx                    # Landing page with search
  layout.tsx                  # Root layout (theme, fonts, metadata)
  globals.css                 # Tailwind v4 + shadcn/ui CSS vars
  lookup/[domain]/page.tsx    # DNS results page (public)
  auth/                       # Login, signup, OAuth callback
  dashboard/                  # Authenticated domain tracking
  api/
    dns/lookup/               # DNS record lookup endpoint
    whois/lookup/             # WHOIS lookup endpoint
    availability/check/       # Domain availability endpoint
    domains/                  # Saved domains CRUD
    cron/check-domains/       # Daily re-check (Vercel cron)
    notifications/            # Notification endpoints
components/
  ui/                         # shadcn/ui components
  layout/                     # Header, footer, sidebar
  lookup/                     # Search form, record displays
  dashboard/                  # Domain list, detail, diff views
lib/
  dns/                        # Tangerine DNS service
  whois/                      # whoiser WHOIS service
  availability/               # RDAP availability service
  monitoring/                 # Change detection + snapshot logic
  notifications/              # Notification service
  email/                      # Resend email functions
  supabase/                   # Server/client/middleware clients
  auth/                       # Auth server actions
  types/                      # Shared TypeScript types
supabase/
  migrations/                 # SQL schema + RLS policies

Current Status

Done

  • Project scaffolding (Next.js 16, Tailwind v4, TypeScript)
  • shadcn/ui setup with dark mode (next-themes)
  • Landing page with domain search form

TODO

See ROADMAP.md for the full phased build plan. Next up:

  • TypeScript type definitions (lib/types/)
  • Supabase schema + migrations + RLS
  • DNS / WHOIS / availability service layers
  • API routes for public lookups
  • Supabase auth (GitHub, Google, email, magic link)
  • DNS results page (/lookup/[domain])
  • Dashboard with domain tracking
  • Change detection + daily cron
  • Notifications (in-app + email)

Scripts

bun dev        # Start development server
bun run build  # Production build
bun start      # Start production server
bun lint       # Run ESLint
bun test       # Run integration tests

License

GPL-2.0