mirror of
https://github.com/DevVoxel/VectorDNS.git
synced 2026-02-27 05:47:38 +00:00
03a6df08480f6de1f31523e85c119d12edd1e821
Add SiteHeader and AccountDropdown components, replace inline headers across homepage, roadmap, and docs layout.
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
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
Languages
TypeScript
95.7%
CSS
3.9%
JavaScript
0.4%