## Watchlist & Monitoring - ✅ Automatic domain monitoring based on subscription tier - ✅ Email alerts when domains become available - ✅ Health checks (DNS/HTTP/SSL) with caching - ✅ Expiry warnings for domains <30 days - ✅ Weekly digest emails - ✅ Instant alert toggle (optimistic UI updates) - ✅ Redesigned health check overlays with full details - 🔒 'Not public' display for .ch/.de domains without public expiry ## Portfolio Management (NEW) - ✅ Track owned domains with purchase price & date - ✅ ROI calculation (unrealized & realized) - ✅ Domain valuation with auto-refresh - ✅ Renewal date tracking - ✅ Sale recording with profit calculation - ✅ List domains for sale directly from portfolio - ✅ Full portfolio summary dashboard ## Listings / For Sale - ✅ Renamed from 'Portfolio' to 'For Sale' - ✅ Fixed listing limits: Scout=0, Trader=5, Tycoon=50 - ✅ Featured badge for Tycoon listings - ✅ Inquiries modal for sellers - ✅ Email notifications when buyer inquires - ✅ Inquiries column in listings table ## Scrapers & Data - ✅ Added 4 new registrar scrapers (Namecheap, Cloudflare, GoDaddy, Dynadot) - ✅ Increased scraping frequency to 2x daily (03:00 & 15:00 UTC) - ✅ Real historical data from database - ✅ Fixed RDAP/WHOIS for .ch/.de domains - ✅ Enhanced SSL certificate parsing ## Scheduler Jobs - ✅ Tiered domain checks (Scout=daily, Trader=hourly, Tycoon=10min) - ✅ Daily health checks (06:00 UTC) - ✅ Weekly expiry warnings (Mon 08:00 UTC) - ✅ Weekly digest emails (Sun 10:00 UTC) - ✅ Auction cleanup every 15 minutes ## UI/UX Improvements - ✅ Removed 'Back' buttons from Intel pages - ✅ Redesigned Radar page to match Market/Intel design - ✅ Less prominent check frequency footer - ✅ Consistent StatCard components across all pages - ✅ Ambient background glows - ✅ Better error handling ## Documentation - ✅ Updated README with monitoring section - ✅ Added env.example with all required variables - ✅ Updated Memory Bank (activeContext.md) - ✅ SMTP configuration requirements documented
67 lines
2.0 KiB
Plaintext
67 lines
2.0 KiB
Plaintext
# ===========================================
|
|
# POUNCE Backend Environment Variables
|
|
# ===========================================
|
|
# Copy this file to .env and fill in your values
|
|
# ===========================================
|
|
|
|
# ============== CORE ==============
|
|
SECRET_KEY=your-32-character-secret-key-here
|
|
DATABASE_URL=sqlite+aiosqlite:///./pounce.db
|
|
# For PostgreSQL (production):
|
|
# DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/pounce
|
|
|
|
ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
|
|
SITE_URL=http://localhost:3000
|
|
|
|
# ============== EMAIL (REQUIRED FOR ALERTS) ==============
|
|
# Without these, domain monitoring alerts will NOT be sent!
|
|
SMTP_HOST=smtp.zoho.eu
|
|
SMTP_PORT=465
|
|
SMTP_USER=hello@pounce.ch
|
|
SMTP_PASSWORD=your-smtp-password
|
|
SMTP_FROM_EMAIL=hello@pounce.ch
|
|
SMTP_FROM_NAME=pounce
|
|
SMTP_USE_SSL=true
|
|
SMTP_USE_TLS=false
|
|
|
|
# Contact form submissions go here
|
|
CONTACT_EMAIL=hello@pounce.ch
|
|
|
|
# ============== STRIPE (PAYMENTS) ==============
|
|
STRIPE_SECRET_KEY=sk_test_xxx
|
|
STRIPE_WEBHOOK_SECRET=whsec_xxx
|
|
STRIPE_PRICE_TRADER=price_xxx
|
|
STRIPE_PRICE_TYCOON=price_xxx
|
|
|
|
# ============== OAUTH ==============
|
|
# Google OAuth
|
|
GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
|
|
GOOGLE_CLIENT_SECRET=xxx
|
|
GOOGLE_REDIRECT_URI=http://localhost:8000/api/v1/oauth/google/callback
|
|
|
|
# GitHub OAuth
|
|
GITHUB_CLIENT_ID=xxx
|
|
GITHUB_CLIENT_SECRET=xxx
|
|
GITHUB_REDIRECT_URI=http://localhost:8000/api/v1/oauth/github/callback
|
|
|
|
# ============== SCHEDULER ==============
|
|
# When to run daily domain checks (UTC)
|
|
CHECK_HOUR=6
|
|
CHECK_MINUTE=0
|
|
|
|
# ============== OPTIONAL SERVICES ==============
|
|
# SEO Juice (uses estimation if not set)
|
|
MOZ_ACCESS_ID=
|
|
MOZ_SECRET_KEY=
|
|
|
|
# Sentry Error Tracking
|
|
SENTRY_DSN=
|
|
|
|
# ============== PRODUCTION SETTINGS ==============
|
|
# Uncomment for production deployment:
|
|
# DATABASE_URL=postgresql+asyncpg://user:pass@localhost/pounce
|
|
# ALLOWED_ORIGINS=https://pounce.ch,https://www.pounce.ch
|
|
# SITE_URL=https://pounce.ch
|
|
# GOOGLE_REDIRECT_URI=https://api.pounce.ch/api/v1/oauth/google/callback
|
|
# GITHUB_REDIRECT_URI=https://api.pounce.ch/api/v1/oauth/github/callback
|