'use client'
import { useEffect, useState, useRef } from 'react'
import Image from 'next/image'
import { Header } from '@/components/Header'
import { Footer } from '@/components/Footer'
import { DomainChecker } from '@/components/DomainChecker'
import { useStore } from '@/lib/store'
import { api } from '@/lib/api'
import {
Eye,
Bell,
Clock,
Shield,
ArrowRight,
TrendingUp,
TrendingDown,
Minus,
ChevronRight,
Zap,
BarChart3,
Globe,
Check,
Search,
Target,
Gavel,
Sparkles,
Activity,
LineChart,
Lock,
Filter,
Crosshair,
Tag,
AlertTriangle,
Briefcase,
} from 'lucide-react'
import Link from 'next/link'
import clsx from 'clsx'
interface TrendingTld {
tld: string
reason: string
current_price: number
price_change: number
}
interface HotAuction {
domain: string
current_bid: number
time_remaining: string
platform: string
}
// Shimmer for loading states
function Shimmer({ className }: { className?: string }) {
return (
)
}
// Animated counter
function AnimatedNumber({ value, suffix = '' }: { value: number, suffix?: string }) {
const [count, setCount] = useState(0)
useEffect(() => {
const duration = 2000
const steps = 60
const increment = value / steps
let current = 0
const timer = setInterval(() => {
current += increment
if (current >= value) {
setCount(value)
clearInterval(timer)
} else {
setCount(Math.floor(current))
}
}, duration / steps)
return () => clearInterval(timer)
}, [value])
return <>{count.toLocaleString()}{suffix}>
}
// Live Market Ticker
function MarketTicker({ auctions }: { auctions: HotAuction[] }) {
const tickerRef = useRef(null)
// Duplicate items for seamless loop
const items = [...auctions, ...auctions]
if (auctions.length === 0) return null
return (
{items.map((auction, i) => (
{auction.domain}
${auction.current_bid}
{auction.time_remaining}
{auction.platform}
))}
)
}
export default function HomePage() {
const { checkAuth, isLoading, isAuthenticated } = useStore()
const [trendingTlds, setTrendingTlds] = useState([])
const [hotAuctions, setHotAuctions] = useState([])
const [loadingTlds, setLoadingTlds] = useState(true)
const [loadingAuctions, setLoadingAuctions] = useState(true)
useEffect(() => {
checkAuth()
fetchData()
}, [checkAuth])
const fetchData = async () => {
try {
const [trending, auctions] = await Promise.all([
api.getTrendingTlds(),
api.getHotAuctions(8).catch(() => [])
])
setTrendingTlds(trending.trending.slice(0, 4))
setHotAuctions(auctions.slice(0, 8))
} catch (error) {
console.error('Failed to fetch data:', error)
} finally {
setLoadingTlds(false)
setLoadingAuctions(false)
}
}
if (isLoading) {
return (
)
}
const getTrendIcon = (priceChange: number) => {
if (priceChange > 0) return
if (priceChange < 0) return
return
}
return (
{/* Background Effects */}
{/* Hero Section - "Bloomberg meets Apple" */}
{/* Puma Logo */}
{/* Main Headline - Konzept: "Der Markt schläft nie. Du schon." */}
The market never sleeps.
You should.
{/* Subheadline - Konzept Versprechen */}
We scan. We watch. We alert.{' '}
You pounce.
{/* Tagline */}
Don't guess. Know.
{/* Domain Checker */}
{/* Trust Indicators */}
Live Auctions
Instant Alerts
Price Intel
{/* Live Market Ticker */}
{!loadingAuctions && hotAuctions.length > 0 && (
)}
{/* Three Pillars: DISCOVER, TRACK, ACQUIRE */}
{/* Section Header */}
Your Command Center
Three moves to dominate.
{/* Pillars */}
{/* DISCOVER */}
Discover
Instant domain intel. Not just "taken" — but why ,
when it expires , and
smarter alternatives .
Real-time availability across 886+ TLDs
Expiry dates & WHOIS data
AI-powered alternatives
{/* TRACK */}
{/* Popular badge */}
Most Popular
Track
Your private watchlist with 4-layer health analysis .
Know the second it weakens.
DNS, HTTP, SSL, WHOIS monitoring
Real-time health status alerts
Parked & pre-drop detection
{/* ACQUIRE */}
Acquire
All auctions. One place. Filtered .
Valued .
Ready to strike.
GoDaddy, Sedo, NameJet, DropCatch
No-spam smart filters
Deal score & valuation
{/* Transition Element */}
{/* Beyond Hunting: Sell & Alert */}
{/* Subtle background pattern */}
{/* Section Header - Left aligned for flow */}
Buy. Sell. Get alerted.
Pounce isn't just for finding domains. It's your complete domain business platform.
{/* For Sale Marketplace */}
{/* Corner accent */}
Sell Your Domains
Marketplace
Create professional "For Sale" landing pages with one click.
DNS verification proves ownership.
Buyers contact you directly through Pounce.
Verified Owner badge
Pounce Score valuation
Secure contact form
Browse Marketplace
{/* Sniper Alerts */}
{/* Decorative element */}
Sniper Alerts
Hyper-Personalized
Ultra-specific filters that notify you exactly when matching domains appear.
"4-letter .com under $500 without numbers" — we've got you.
Custom TLD, length, price filters
Email & SMS alerts
Real-time auction matching
Set Up Alerts
{/* Portfolio Management - Full Width Below */}
Portfolio Health
Your Domain Insurance
Import your domains and let Pounce monitor them 24/7.
SSL expiry ,
renewal reminders ,
uptime checks , and
P&L tracking — all in one place.
Never miss a renewal again.
SSL Monitor
Expiry Alerts
Valuation
Manage Portfolio
{/* Transition to TLDs */}
{/* Trending TLDs Section */}
{/* Section Header */}
TLD Pricing
The real price tag.
Don't fall for $0.99 promos. We show renewal costs, price trends, and renewal traps across 886+ TLDs.
Trap Detection
Risk Levels
Explore TLD Pricing
{/* TLD Cards */}
{loadingTlds ? (
{[...Array(4)].map((_, i) => (
))}
) : (
{trendingTlds.map((item, index) => (
.{item.tld}
0
? "text-orange-400 bg-orange-400/10"
: (item.price_change ?? 0) < 0
? "text-accent bg-accent/10"
: "text-foreground-muted bg-foreground/5"
)}>
{getTrendIcon(item.price_change ?? 0)}
{(item.price_change ?? 0) > 0 ? '+' : ''}{(item.price_change ?? 0).toFixed(1)}%
{item.reason}
{isAuthenticated ? (
${(item.current_price ?? 0).toFixed(2)}/yr
) : (
Sign in to view
)}
))}
)}
{/* Social Proof / Stats Section */}
{/* Pricing CTA Section */}
Pricing
Simple. Transparent. Powerful.
Start free. Scale when you're ready.
{/* Quick Plans */}
{/* Free Plan */}
5 domains watched
Daily status checks
Market overview
{/* Pro Plan */}
Popular
100 domains watched
Priority alerts
Full auction access
Compare All Plans
{isAuthenticated ? "Go to Dashboard" : "Start Free"}
{/* Final CTA */}
Join the hunters.
Ready to pounce?
Track your first domain in under a minute. Free forever, no credit card.
{isAuthenticated ? "Go to Dashboard" : "Start Hunting — It's Free"}
{!isAuthenticated && (
Free forever • No credit card • 5 domains included
)}
{/* Ticker Animation Keyframes */}
)
}