1. Parallel Zone Downloads (3x faster)
- CZDS zones now download in parallel with semaphore
- Configurable max_concurrent (default: 3)
- Added timing logs for performance monitoring
2. Email Alerts for Ops
- New send_ops_alert() in email service
- Automatic alerts on zone sync failures
- Critical alerts on complete job crashes
- Severity levels: info, warning, error, critical
3. Admin Zone Sync Dashboard
- New "Zone Sync" tab in admin panel
- Real-time status for all TLDs
- Manual sync trigger buttons
- Shows drops today, total drops, last sync time
- Health status indicators (healthy/stale/never)
- API endpoint: GET /admin/zone-sync/status
1. Parallel Zone Downloads (CZDS):
- Downloads up to 3 TLDs concurrently
- Reduced sync time from 3+ min to ~1 min
- Semaphore prevents ICANN rate limits
2. Email Alerts:
- Automatic alerts when sync fails
- Sends to admin email with error details
- Includes success/error summary
3. Admin Zone Sync Dashboard:
- New "Zone Sync" tab in admin panel
- Shows all TLDs with domain counts
- Manual "Sync Now" buttons for Switch/CZDS
- Live stats: drops/24h, total domains
4. Backend Improvements:
- /admin/zone-stats endpoint
- Fixed zone-sync endpoints with correct imports
- Added dnsutils (dig) to backend Dockerfile for DNS zone transfers
- Fixed admin zone sync endpoints with correct imports
- AsyncSessionLocal instead of async_session_maker
- Run auction cleanup every 5 minutes and treat end_time <= now as ended
- Add admin endpoints to upload/inspect Playwright cookies (free alternative to paid proxies)
- Add client-side guardrail to never render ended auctions in Terminal Market
- Add delete user functionality with cascade deletion of all user data
- Fix OAuth URLs to include /api/v1 path
- Fix token storage key consistency in OAuth callback
- Update user model to cascade delete price alerts
- Improve email templates with minimalist design
- Add confirmation dialog for user deletion
- Prevent deletion of admin users
Admin Panel:
- User Detail Modal with full profile info
- Bulk tier upgrade for multiple users
- User export to CSV
- Price Alerts overview tab
- Domain Health Check trigger
- Email Test functionality
- Scheduler Status with job info and last runs
- Activity Log for admin actions
- Blog management tab with CRUD
Blog System:
- BlogPost model with full content management
- Public API: list, featured, categories, single post
- Admin API: create, update, delete, publish/unpublish
- Frontend blog listing page with categories
- Frontend blog detail page with styling
- View count tracking
OAuth:
- Google OAuth integration
- GitHub OAuth integration
- OAuth callback handling
- Provider selection on login/register
Other improvements:
- Domain checker with check_all_domains function
- Admin activity logging
- Breadcrumbs component
- Toast notification component
- Various UI/UX improvements
Major changes:
- Add TLD price scraper with Porkbun API (886+ TLDs, no API key needed)
- Fix .ch domain checker using rdap.nic.ch custom RDAP
- Integrate database for TLD price history tracking
- Add admin endpoints for manual scrape and stats
- Extend scheduler with daily TLD price scrape job (03:00 UTC)
- Update API to use DB data with static fallback
- Update README with complete documentation
New files:
- backend/app/services/tld_scraper/ (scraper package)
- TLD_TRACKING_PLAN.md (implementation plan)
API changes:
- POST /admin/scrape-tld-prices - trigger manual scrape
- GET /admin/tld-prices/stats - database statistics
- GET /tld-prices/overview now uses DB data