13 Commits

Author SHA1 Message Date
cff0ba0984 feat: Add Admin Panel enhancements, Blog system, and OAuth
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
2025-12-09 16:52:54 +01:00
9fde9eab4a Fix subscription tier and domain_limit issues
Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
- Changed SubscriptionTier.STARTER to SCOUT (correct tier name)
- Removed domain_limit from Subscription constructor (it's a computed property)
- Database needs to be re-initialized with: python scripts/init_db.py && python scripts/seed_tld_prices.py
2025-12-09 08:41:45 +01:00
fde4f23663 feat: Complete Tone of Voice overhaul - The Hunter's Voice
Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
🎯 BRAND VOICE: Swift, Sharp, Strategic, Confident

LANDING PAGE:
- Hero: 'Others wait. You pounce.'
- Features: Active, punchy descriptions
- Pricing: 'Pick your weapon.'
- CTAs: 'Hunt Free', 'Start Trading', 'Go Tycoon'

PRICING PAGE:
- Scout: 'Test the waters. Zero risk.'
- Trader: 'Hunt with precision.'
- Tycoon: 'Dominate the market.'

AUTH PAGES:
- Login: 'Back to the hunt.'
- Register: 'Join the hunt.'
- Benefits: 'Your hunting gear. Ready to go.'

EMAIL TEMPLATES:
- Domain Available: 'Time to pounce. [domain] just dropped'
- Price Alert: '.tld just moved.'
- Weekly Digest: 'Your week in domains.'
- Subscription: 'You're in. [Plan] unlocked.'

DASHBOARD:
- Title: 'Command Center'
- Empty State: 'No targets yet'

TLD PAGES:
- Headline: '886+ TLDs. Live Prices.'
- Section: 'Moving Now' instead of 'Trending'

CONTACT & ABOUT:
- About: 'Built for hunters. By hunters.'
- Mission: 'Level the playing field.'
- Contact: 'Let's Talk' - direct, confident

All text now follows the hunter metaphor with:
- Active verbs (Track, Hunt, Pounce, Grab)
- Urgency without panic
- Confident statements
- Data as proof
- Short, punchy sentences
2025-12-08 16:38:41 +01:00
225d720e8a feat: Configure all email services to use Zoho Mail
Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
Email Service (email_service.py):
- Updated SMTP defaults for Zoho (smtp.zoho.eu:465)
- Added SSL support (use_ssl parameter) for port 465
- Updated send_email() to handle both SSL (port 465) and STARTTLS (port 587)
- Changed default sender from noreply@pounce.ch to hello@pounce.ch
- Updated contact email to hello@pounce.ch

Configuration Files:
- env.example: Complete Zoho configuration with SSL
- env.example.txt: Updated with Zoho defaults
- README.md: Updated email setup documentation with Zoho instructions

Zoho Configuration:
- Host: smtp.zoho.eu
- Port: 465 (SSL)
- SSL: true, TLS: false
- Sender: hello@pounce.ch

Supported Email Types:
- Domain availability alerts
- Price change notifications
- Subscription confirmations
- Password reset
- Email verification
- Contact form (send + confirmation)
- Newsletter welcome
- Weekly digests
2025-12-08 15:41:05 +01:00
6b6ec01484 feat: Add missing features - Stripe payments, password reset, rate limiting, contact form, newsletter
Backend:
- Add Stripe API endpoints (checkout, portal, webhook) in subscription.py
- Add password reset (forgot-password, reset-password) in auth.py
- Add email verification endpoints
- Add rate limiting with slowapi
- Add contact form and newsletter API (contact.py)
- Add webhook endpoint for Stripe (webhooks.py)
- Add NewsletterSubscriber model
- Extend User model with password reset and email verification tokens
- Extend email_service with new templates (password reset, verification, contact, newsletter)
- Update env.example with all new environment variables

Frontend:
- Add /forgot-password page
- Add /reset-password page with token handling
- Add /verify-email page with auto-verification
- Add forgot password link to login page
- Connect contact form to API
- Add API methods for all new endpoints

Documentation:
- Update README with new API endpoints
- Update environment variables documentation
- Update pages overview
2025-12-08 14:37:42 +01:00
88eca582e5 feat: Remove ALL mock data - real scraped data only
MOCK DATA REMOVED:
- Removed ALL hardcoded auction data from auctions.py
- Now uses real-time scraping from ExpiredDomains.net
- Database stores scraped auctions (domain_auctions table)
- Scraping runs hourly via scheduler (:30 each hour)

AUCTION SCRAPER SERVICE:
- Web scraping from ExpiredDomains.net (aggregator)
- Rate limiting per platform (10 req/min)
- Database caching to minimize requests
- Cleanup of ended auctions (auto-deactivate)
- Scrape logging for monitoring

STRIPE INTEGRATION:
- Full payment flow: Checkout → Webhook → Subscription update
- Customer Portal for managing subscriptions
- Price IDs configurable via env vars
- Handles: checkout.completed, subscription.updated/deleted, payment.failed

EMAIL SERVICE (SMTP):
- Beautiful HTML email templates with pounce branding
- Domain available alerts
- Price change notifications
- Subscription confirmations
- Weekly digest emails
- Configurable via SMTP_* env vars

NEW SUBSCRIPTION TIERS:
- Scout (Free): 5 domains, daily checks
- Trader (€19/mo): 50 domains, hourly, portfolio, valuation
- Tycoon (€49/mo): 500+ domains, realtime, API, bulk tools

DATABASE CHANGES:
- domain_auctions table for scraped data
- auction_scrape_logs for monitoring
- stripe_customer_id on users
- stripe_subscription_id on subscriptions
- portfolio_domain relationships fixed

ENV VARS ADDED:
- STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET
- STRIPE_PRICE_TRADER, STRIPE_PRICE_TYCOON
- SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD
- SMTP_FROM_EMAIL, SMTP_FROM_NAME
2025-12-08 14:08:52 +01:00
e3234e660e fix: Backend deps & transparent valuation schema
FIXED:
- Added get_current_user_optional to deps.py for mixed auth endpoints
- Added OptionalUser type alias for cleaner annotations
- Expanded ValuationResponse schema with full transparency:
  - ValuationScores (length, tld, keyword, brandability, overall)
  - ValuationFactors (length, tld, has_numbers, has_hyphens, etc.)
  - ValuationCalculation (base_value, all factors with reasons, formula)
  - RegistrationContext (tld_cost, value_to_cost_ratio)
  - Added disclaimer field
- Increased base_value from $10 to $50 for realistic valuations

VALUATION EXAMPLES:
- crypto.ai: $375 (was $70)
- x.com: $850 (1-letter premium)
- generic-domain-name.info: $5 (long with hyphens)

All API endpoints tested and working.
2025-12-08 13:51:09 +01:00
38a5ebd8a4 feat: Transparent Portfolio Valuation & Smart Pounce Auctions
PORTFOLIO VALUATION (100% Transparent):
- Completely rewritten valuation algorithm with clear formula
- Shows exact calculation: Base × Length × TLD × Keyword × Brand
- Each factor explained with reason (e.g., '4-letter domain ×5.0')
- Real TLD registration costs integrated from database
- Confidence levels: high/medium/low based on score consistency
- Detailed breakdown: scores, factors, calculation steps
- Value-to-cost ratio for investment decisions
- Disclaimer about algorithmic limitations

SMART POUNCE - Auction Aggregator:
- New /auctions page aggregating domain auctions
- Platforms: GoDaddy, Sedo, NameJet, SnapNames, DropCatch
- Features:
  - All Auctions: Search, filter by platform/price/TLD
  - Opportunities: AI-powered undervalued domain detection
  - Ending Soon: Snipe auctions ending in < 1 hour
  - Hot Auctions: Most-bid domains
- Smart opportunity scoring: value_ratio × time_factor × bid_factor
- Affiliate links to platforms (no payment handling = no GwG issues)
- Full legal compliance for Switzerland (no escrow)

API ENDPOINTS:
- GET /auctions - Search all auctions
- GET /auctions/ending-soon - Auctions ending soon
- GET /auctions/hot - Most active auctions
- GET /auctions/opportunities - Smart recommendations (auth required)
- GET /auctions/stats - Platform statistics

UI UPDATES:
- New 'Auctions' link in navigation (desktop + mobile)
- Auction cards with bid info, time remaining, platform badges
- Opportunity analysis with profit potential
- Color-coded time urgency (red < 1h, yellow < 2h)
2025-12-08 13:39:01 +01:00
6e84103a5b feat: Complete business model expansion
MAJOR FEATURES:
- New pricing tiers: Scout (Free), Trader (€19/mo), Tycoon (€49/mo)
- Portfolio management: Track owned domains with purchase price, value, ROI
- Domain valuation engine: Algorithmic estimates based on length, TLD, keywords, brandability
- Dashboard tabs: Watchlist + Portfolio views
- Valuation modal: Score breakdown with confidence level

BACKEND:
- New models: PortfolioDomain, DomainValuation
- New API routes: /portfolio/* with full CRUD
- Valuation service with multi-factor algorithm
- Database migration for portfolio tables

FRONTEND:
- Updated pricing page with comparison table and billing toggle
- Dashboard with Watchlist/Portfolio tabs
- Portfolio summary stats: Total value, invested, unrealized P/L, ROI
- Add portfolio domain modal with all fields
- Domain valuation modal with score visualization
- Updated landing page with new tier pricing
- Hero section with large puma logo

DESIGN:
- Consistent minimalist dark theme
- Responsive on all devices
- Professional animations and transitions
2025-12-08 11:08:18 +01:00
fb080375a0 feat: add email notifications and price change alerts
New features:
- Email service for domain availability alerts
- Price tracker for detecting significant price changes (>5%)
- Automated email notifications for:
  - Domain becomes available
  - TLD price changes
  - Weekly digest summaries
- New scheduler job for price change alerts (04:00 UTC)

Updated documentation:
- README: email notifications section, new services
- DEPLOYMENT: email setup, troubleshooting, scheduler jobs

New files:
- backend/app/services/email_service.py
- backend/app/services/price_tracker.py
2025-12-08 09:27:03 +01:00
f0cc69ac95 feat: TLD price scraper, .ch domain fix, DB integration
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
2025-12-08 09:12:44 +01:00
d12c5ddfa5 Add Footer component and real TLD history data
- Created reusable Footer component with social links
- Replaced mock data with real API calls for TLD history
- Added Trending TLDs section at top of pricing page
- Mini-charts now display actual 12-month price history
- Improved data authenticity throughout TLD pricing page
2025-12-08 07:38:06 +01:00
9acb90c067 Initial commit: Pounce - Domain Monitoring System
- FastAPI backend mit Domain-Check, TLD-Pricing, User-Management
- Next.js frontend mit modernem UI
- Sortierbare TLD-Tabelle mit Mini-Charts
- Domain availability monitoring
- Subscription tiers (Starter, Professional, Enterprise)
- Authentication & Authorization
- Scheduler für automatische Domain-Checks
2025-12-08 07:26:57 +01:00