mirror of
https://github.com/DevVoxel/VectorDNS.git
synced 2026-02-27 05:47:38 +00:00
- /docs route with sidebar navigation and index page - Architecture section: system overview with React Flow diagram, data flow, database schema - API reference, configuration guide, and self-hosting docs for Go DNS server - Feature planning document for future development - Added docs link to landing page nav
112 lines
4.0 KiB
Markdown
112 lines
4.0 KiB
Markdown
# VectorDNS Feature Plan
|
|
|
|
Decisions captured for current and future development.
|
|
|
|
---
|
|
|
|
## Auth & User System
|
|
|
|
| Feature | Decision | Priority |
|
|
|---|---|---|
|
|
| OAuth providers | GitHub + Google | MVP |
|
|
| Email/password + magic link | Yes | MVP |
|
|
| Team/org accounts | Yes, eventually — shared watchlists, role-based access (admin/viewer) | Future |
|
|
| User API keys | No — Go server is internal, called only by the Next.js backend | N/A |
|
|
|
|
### Schema implications (teams)
|
|
- Future `teams` table with membership + roles
|
|
- `saved_domains` will need an optional `team_id` foreign key
|
|
- RLS policies will need team-aware variants
|
|
|
|
---
|
|
|
|
## DNS & Monitoring
|
|
|
|
| Feature | Decision | Priority |
|
|
|---|---|---|
|
|
| Check intervals | Daily (MVP), then hourly/daily/weekly selectable | MVP → Near-term |
|
|
| Realtime monitoring | Not now — possible distant future | Deferred |
|
|
| Custom resolvers | Fixed resolvers (Google 8.8.8.8, Cloudflare 1.1.1.1) by default; user-specified resolvers as future feature | MVP → Future |
|
|
| Propagation checks | Query multiple resolvers and compare results | Near-term |
|
|
| DNSSEC validation | Basic AD flag check (current), deep chain validation later | MVP → Future |
|
|
|
|
### Go server implications
|
|
- Scheduler needed for flexible intervals (hourly/daily/weekly per domain)
|
|
- Resolver list should be configurable, not hardcoded (prep for custom resolvers)
|
|
- Propagation endpoint: query N resolvers in parallel, return per-resolver results
|
|
|
|
---
|
|
|
|
## Alert Channels
|
|
|
|
| Channel | Priority |
|
|
|---|---|
|
|
| In-app notification feed | MVP |
|
|
| Email (Resend) | MVP |
|
|
| Webhooks (user-configured URL) | Near-term |
|
|
| Slack integration | Future |
|
|
| Discord integration | Future |
|
|
|
|
### Schema implications
|
|
- `notification_channels` table: user_id, type (email/webhook/slack/discord), config (jsonb), enabled
|
|
- Webhook: store URL + optional secret for HMAC signing
|
|
- Slack/Discord: store webhook URL or OAuth token
|
|
|
|
---
|
|
|
|
## Dashboard & UX
|
|
|
|
| Feature | Decision | Priority |
|
|
|---|---|---|
|
|
| Domain organization | Tags (current) + folders/groups | Near-term |
|
|
| Public sharing | Shareable links for domain DNS snapshots | Near-term |
|
|
| Data export | CSV + JSON for DNS history, saved domains, notifications | Near-term |
|
|
| Bulk operations | Add/remove/re-check multiple domains at once | Future |
|
|
| Search & filter | Filter by tag, folder, record type, change status | Near-term |
|
|
|
|
### Schema implications (folders)
|
|
- `domain_folders` table: id, user_id, name, created_at
|
|
- `saved_domains` gets an optional `folder_id` foreign key
|
|
- RLS policies for folder ownership
|
|
|
|
### Schema implications (public sharing)
|
|
- `shared_snapshots` table: id, saved_domain_id, share_token (unique), dns_snapshot (jsonb), expires_at, created_at
|
|
- Public access via token — no auth required to view
|
|
|
|
---
|
|
|
|
## Infrastructure
|
|
|
|
| Feature | Decision | Priority |
|
|
|---|---|---|
|
|
| Billing/paid tiers | Freemium — free tier with limits, paid for more domains/features/intervals | Future |
|
|
| DNS caching | Redis — external cache for TTL-based DNS result caching | Near-term |
|
|
| Self-hosting | Go server only — provide Dockerfile + docker-compose for the DNS API | Near-term |
|
|
| Next.js hosting | Vercel only, not self-hostable | — |
|
|
|
|
### Freemium tier structure (draft)
|
|
- **Free**: 5 monitored domains, daily checks, in-app + email alerts
|
|
- **Pro**: 50 domains, hourly checks, webhooks, folders, export
|
|
- **Team**: everything in Pro + team accounts, shared watchlists
|
|
|
|
### Go server additions needed
|
|
- Redis client (go-redis) for caching layer
|
|
- Cache middleware: check Redis before querying DNS, store with TTL
|
|
- docker-compose.yml with Go server + Redis for self-hosting
|
|
- Rate limiting per API key / tier (when billing is added)
|
|
|
|
---
|
|
|
|
## Summary of future schema additions
|
|
|
|
These tables will be needed as features are built:
|
|
|
|
| Table | For |
|
|
|---|---|
|
|
| `teams` | Team/org accounts |
|
|
| `team_members` | Membership + roles |
|
|
| `domain_folders` | Folder organization |
|
|
| `shared_snapshots` | Public shareable links |
|
|
| `notification_channels` | Webhook/Slack/Discord config |
|
|
| `subscriptions` | Billing tier tracking |
|