Final polish based on review feedback

- Landing: 'TLD price explorer' → 'Market overview'
- Auctions: Title to 'Curated Opportunities' (no small numbers)
- TLD Pricing: First row (.com) visible without blur for preview
- Footer: Updated branding, simplified, added tagline
- All Sign In links redirect back to original page
This commit is contained in:
yves.gugger
2025-12-10 09:03:23 +01:00
parent cfbc94963a
commit 806a5893af
5 changed files with 156 additions and 180 deletions

View File

@ -282,7 +282,7 @@ export default function AuctionsPage() {
<div className="text-center mb-16 sm:mb-20 animate-fade-in">
<span className="text-sm font-semibold text-accent uppercase tracking-wider">Auction Aggregator</span>
<h1 className="mt-4 font-display text-[2.5rem] sm:text-[3.5rem] md:text-[4.5rem] lg:text-[5rem] leading-[0.95] tracking-[-0.03em] text-foreground">
{allAuctions.length}+ Live Auctions
Curated Opportunities
</h1>
<p className="mt-5 text-lg sm:text-xl text-foreground-muted max-w-2xl mx-auto">
Real-time from GoDaddy, Sedo, NameJet & DropCatch. Find opportunities.

View File

@ -526,7 +526,7 @@ export default function HomePage() {
</li>
<li className="flex items-center gap-2">
<Check className="w-4 h-4 text-accent" />
<span>TLD price explorer</span>
<span>Market overview</span>
</li>
</ul>
</div>

View File

@ -458,66 +458,78 @@ export default function TldPricingPage() {
</td>
</tr>
) : (
tlds.map((tld, idx) => (
<tr
key={tld.tld}
className="hover:bg-background-secondary/50 transition-colors group"
>
<td className="px-4 sm:px-6 py-4">
<span className="text-body-sm text-foreground-subtle">
{pagination.offset + idx + 1}
</span>
</td>
<td className="px-4 sm:px-6 py-4">
<span className="font-mono text-body-sm sm:text-body font-medium text-foreground">
.{tld.tld}
</span>
</td>
<td className="px-4 sm:px-6 py-4 hidden lg:table-cell">
<span className={clsx(
"text-ui-sm px-2 py-0.5 rounded-full",
tld.type === 'generic' ? 'text-accent bg-accent-muted' :
tld.type === 'ccTLD' ? 'text-blue-400 bg-blue-400/10' :
'text-purple-400 bg-purple-400/10'
)}>
{tld.type}
</span>
</td>
<td className="px-4 sm:px-6 py-4 hidden md:table-cell">
<MiniChart tld={tld.tld} isAuthenticated={isAuthenticated} />
</td>
<td className="px-4 sm:px-6 py-4 text-right">
{isAuthenticated ? (
<span className="text-body-sm font-medium text-foreground">
${tld.avg_registration_price.toFixed(2)}
</span>
) : (
<span className="text-body-sm text-foreground-subtle"></span>
tlds.map((tld, idx) => {
// Show full data for authenticated users OR for the first row (idx 0 on first page)
// This lets visitors see how good the data is for .com before signing up
const showFullData = isAuthenticated || (pagination.offset === 0 && idx === 0)
return (
<tr
key={tld.tld}
className={clsx(
"hover:bg-background-secondary/50 transition-colors group",
!isAuthenticated && idx === 0 && pagination.offset === 0 && "bg-accent/5"
)}
</td>
<td className="px-4 sm:px-6 py-4 text-right hidden sm:table-cell">
{isAuthenticated ? (
<span className="text-body-sm text-accent">
${tld.min_registration_price.toFixed(2)}
>
<td className="px-4 sm:px-6 py-4">
<span className="text-body-sm text-foreground-subtle">
{pagination.offset + idx + 1}
</span>
) : (
<span className="text-body-sm text-foreground-subtle"></span>
)}
</td>
<td className="px-4 sm:px-6 py-4 text-center hidden sm:table-cell">
{isAuthenticated ? getTrendIcon(tld.trend) : <Minus className="w-4 h-4 text-foreground-subtle mx-auto" />}
</td>
<td className="px-4 sm:px-6 py-4">
<Link
href={isAuthenticated ? `/tld-pricing/${tld.tld}` : '/register'}
className="flex items-center gap-1 text-ui-sm text-accent hover:text-accent-hover transition-colors opacity-0 group-hover:opacity-100"
>
Details
<ArrowRight className="w-3 h-3" />
</Link>
</td>
</tr>
))
</td>
<td className="px-4 sm:px-6 py-4">
<span className="font-mono text-body-sm sm:text-body font-medium text-foreground">
.{tld.tld}
</span>
{!isAuthenticated && idx === 0 && pagination.offset === 0 && (
<span className="ml-2 text-xs text-accent">Preview</span>
)}
</td>
<td className="px-4 sm:px-6 py-4 hidden lg:table-cell">
<span className={clsx(
"text-ui-sm px-2 py-0.5 rounded-full",
tld.type === 'generic' ? 'text-accent bg-accent-muted' :
tld.type === 'ccTLD' ? 'text-blue-400 bg-blue-400/10' :
'text-purple-400 bg-purple-400/10'
)}>
{tld.type}
</span>
</td>
<td className="px-4 sm:px-6 py-4 hidden md:table-cell">
<MiniChart tld={tld.tld} isAuthenticated={showFullData} />
</td>
<td className="px-4 sm:px-6 py-4 text-right">
{showFullData ? (
<span className="text-body-sm font-medium text-foreground">
${tld.avg_registration_price.toFixed(2)}
</span>
) : (
<span className="text-body-sm text-foreground-subtle"></span>
)}
</td>
<td className="px-4 sm:px-6 py-4 text-right hidden sm:table-cell">
{showFullData ? (
<span className="text-body-sm text-accent">
${tld.min_registration_price.toFixed(2)}
</span>
) : (
<span className="text-body-sm text-foreground-subtle"></span>
)}
</td>
<td className="px-4 sm:px-6 py-4 text-center hidden sm:table-cell">
{showFullData ? getTrendIcon(tld.trend) : <Minus className="w-4 h-4 text-foreground-subtle mx-auto" />}
</td>
<td className="px-4 sm:px-6 py-4">
<Link
href={isAuthenticated ? `/tld-pricing/${tld.tld}` : `/login?redirect=/tld-pricing/${tld.tld}`}
className="flex items-center gap-1 text-ui-sm text-accent hover:text-accent-hover transition-colors opacity-0 group-hover:opacity-100"
>
Details
<ArrowRight className="w-3 h-3" />
</Link>
</td>
</tr>
)
}))
)}
</tbody>
</table>

View File

@ -1,8 +1,7 @@
'use client'
import Link from 'next/link'
import Image from 'next/image'
import { Github, Twitter, Mail } from 'lucide-react'
import { Twitter, Mail, Linkedin } from 'lucide-react'
import { useStore } from '@/lib/store'
export function Footer() {
@ -16,40 +15,42 @@ export function Footer() {
<div className="col-span-2 md:col-span-1">
<div className="mb-4">
<Link href="/" className="inline-block">
<Image
src="/pounce-logo.png"
alt="pounce"
width={120}
height={60}
className="w-28 h-auto"
/>
<span
className="text-xl font-bold tracking-[0.1em] text-foreground"
style={{ fontFamily: 'var(--font-display), Playfair Display, Georgia, serif' }}
>
POUNCE
</span>
</Link>
</div>
<p className="text-body-sm text-foreground-muted mb-4 max-w-xs">
Domain intelligence for hunters. Track. Alert. Pounce.
<p className="text-body-sm text-foreground-muted mb-2">
Don&apos;t guess. Know.
</p>
<p className="text-body-xs text-foreground-subtle mb-4">
Domain intelligence for serious investors and founders.
</p>
<div className="flex items-center gap-3">
<a
href="https://github.com"
href="https://twitter.com/pounce_domains"
target="_blank"
rel="noopener noreferrer"
className="w-9 h-9 flex items-center justify-center rounded-lg bg-background-tertiary hover:bg-background-secondary transition-colors"
aria-label="GitHub"
>
<Github className="w-4 h-4 text-foreground-muted" />
</a>
<a
href="https://twitter.com"
target="_blank"
rel="noopener noreferrer"
className="w-9 h-9 flex items-center justify-center rounded-lg bg-background-tertiary hover:bg-background-secondary transition-colors"
className="w-9 h-9 flex items-center justify-center rounded-lg bg-foreground/5 hover:bg-foreground/10 transition-colors"
aria-label="Twitter"
>
<Twitter className="w-4 h-4 text-foreground-muted" />
</a>
<a
href="mailto:support@pounce.dev"
className="w-9 h-9 flex items-center justify-center rounded-lg bg-background-tertiary hover:bg-background-secondary transition-colors"
href="https://linkedin.com"
target="_blank"
rel="noopener noreferrer"
className="w-9 h-9 flex items-center justify-center rounded-lg bg-foreground/5 hover:bg-foreground/10 transition-colors"
aria-label="LinkedIn"
>
<Linkedin className="w-4 h-4 text-foreground-muted" />
</a>
<a
href="mailto:hello@pounce.ch"
className="w-9 h-9 flex items-center justify-center rounded-lg bg-foreground/5 hover:bg-foreground/10 transition-colors"
aria-label="Email"
>
<Mail className="w-4 h-4 text-foreground-muted" />
@ -57,38 +58,44 @@ export function Footer() {
</div>
</div>
{/* Product - Matches Header nav */}
{/* Product - Matches new navigation */}
<div>
<h3 className="text-ui font-medium text-foreground mb-4">Product</h3>
<h3 className="text-ui font-semibold text-foreground mb-4">Product</h3>
<ul className="space-y-3">
<li>
<Link href="/tld-pricing" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
TLD Prices
</Link>
</li>
<li>
<Link href="/auctions" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
Auctions
</Link>
</li>
<li>
<Link href="/tld-pricing" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
TLD Intel
</Link>
</li>
<li>
<Link href="/pricing" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
Pricing
</Link>
</li>
{isAuthenticated && (
{isAuthenticated ? (
<li>
<Link href="/dashboard" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
<Link href="/dashboard" className="text-body-sm text-accent hover:text-accent-hover transition-colors">
Command Center
</Link>
</li>
) : (
<li>
<Link href="/register" className="text-body-sm text-accent hover:text-accent-hover transition-colors">
Get Started Free
</Link>
</li>
)}
</ul>
</div>
{/* Resources */}
<div>
<h3 className="text-ui font-medium text-foreground mb-4">Resources</h3>
<h3 className="text-ui font-semibold text-foreground mb-4">Resources</h3>
<ul className="space-y-3">
<li>
<Link href="/blog" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
@ -97,7 +104,7 @@ export function Footer() {
</li>
<li>
<Link href="/about" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
About
About Us
</Link>
</li>
<li>
@ -110,7 +117,7 @@ export function Footer() {
{/* Legal */}
<div>
<h3 className="text-ui font-medium text-foreground mb-4">Legal</h3>
<h3 className="text-ui font-semibold text-foreground mb-4">Legal</h3>
<ul className="space-y-3">
<li>
<Link href="/privacy" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
@ -122,11 +129,6 @@ export function Footer() {
Terms of Service
</Link>
</li>
<li>
<Link href="/cookies" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
Cookie Policy
</Link>
</li>
<li>
<Link href="/imprint" className="text-body-sm text-foreground-muted hover:text-foreground transition-colors">
Imprint
@ -139,7 +141,7 @@ export function Footer() {
{/* Bottom */}
<div className="pt-8 border-t border-border flex flex-col sm:flex-row justify-between items-center gap-4">
<p className="text-ui-sm text-foreground-subtle">
© {new Date().getFullYear()} pounce. All rights reserved.
© {new Date().getFullYear()} pounce.ch All rights reserved.
</p>
<div className="flex items-center gap-6">
<Link href="/privacy" className="text-ui-sm text-foreground-subtle hover:text-foreground transition-colors">
@ -148,9 +150,6 @@ export function Footer() {
<Link href="/terms" className="text-ui-sm text-foreground-subtle hover:text-foreground transition-colors">
Terms
</Link>
<Link href="/contact" className="text-ui-sm text-foreground-subtle hover:text-foreground transition-colors">
Contact
</Link>
</div>
</div>
</div>

115
report.md
View File

@ -1,87 +1,52 @@
Das ist ein gewaltiger Schritt nach vorne! 🚀
Das sieht jetzt absolut **marktreif** aus. 🔥
Die Seiten wirken jetzt kohärent, professionell und haben eine klare psychologische Führung (Hook -> Value -> Gate -> Sign Up). Besonders der Wechsel auf **$9 für den Einstieg** (Trader) ist smart das ist ein "No-Brainer"-Preis für Impulse-Käufe.
Du hast die Balance zwischen "coolem Tool" und "seriösem Business" gefunden. Besonders die **Auctions-Seite** ist jetzt sicher (kein Spam mehr im Sichtfeld), und die **Pricing-Seite** verkauft das Upgrade extrem logisch über den Schmerzpunkt "Zeit & Qualität".
Hier ist mein Feedback zu den einzelnen Seiten mit Fokus auf Conversion und UX:
Hier ist mein finaler Review und ein paar kleine Details für die technische Umsetzung:
---
### 1. Navigation & Globales Layout
Die Navigation ist **perfekt minimalistisch**.
* `Market | TLD Intel | Pricing` Das sind genau die drei Säulen.
* **Vorschlag:** Ich würde "Market" eventuell in **"Auctions"** oder **"Live Market"** umbenennen. "Market" ist etwas vage. "Auctions" triggert eher das Gefühl "Hier gibt es Schnäppchen".
### 1. Landing Page (Der "Hook")
**Bewertung: ⭐⭐⭐⭐⭐**
* **Top:** Der Ticker mit den echten Domains (`blockvest.co` etc.) ist der beste Beweis für die Qualität deines Tools. Das baut sofort Vertrauen auf.
* **Wording:** *"Don't guess. Know."* ist ein Slogan, den man sich auf ein T-Shirt drucken würde. Sehr stark.
* **Detail-Check:**
* Bei **Pricing Teaser** (unten auf der Landing Page) steht beim Scout *"TLD price explorer"*. Das klingt etwas technisch. Vielleicht besser: *"Market Overview"* oder *"Basic Trends"*.
* **Mobile:** Achte darauf, dass der Ticker auf dem Handy nicht zu viel Platz wegnimmt (evtl. nur eine Zeile statt zwei).
### 2. Auctions Page (Der "Marktplatz")
**Bewertung: ⭐⭐⭐⭐½**
* **Top:** Die Liste ist jetzt sauber. `fintech.io` für $5,500 neben `nova.xyz` für $145 zeigt die Bandbreite. Das wirkt wie ein kuratierter Feed für Profis.
* **Korrektur-Vorschlag:**
* Oben steht **"14+ Live Auctions"**. Das wirkt etwas mickrig, wenn du von einem "Global Market" sprichst. Selbst wenn du gerade nur 14 Domains anzeigst, schreibe lieber **"Live Feed"** oder **"Curated Opportunities"** statt einer zu kleinen Zahl. Oder fake die Zahl im Text auf "100+ Opportunities available".
### 3. TLD Pricing Page (Der "Magnet")
**Bewertung: ⭐⭐⭐⭐**
* **Top:** Die "Moving Now" Karten (.ai +35%) sind der perfekte Einstieg.
* **Conversion-Tipp:**
* Aktuell sind in der Tabelle **alle** Details (1-25) ausgeblendet ("Sign in").
* **Psychologie-Trick:** Lass die **erste Zeile (.com)** komplett offen (ohne Blur/Sign-In). Zeige dort die Charts und Daten. Warum? Der User muss *sehen*, wie geil die Daten sind, damit er sich für den Rest anmelden will. Wenn er nur Schlösser sieht, weiß er nicht, was er verpasst.
### 4. Pricing Page (Der "Closer")
**Bewertung: ⭐⭐⭐⭐⭐**
* **Top:** Die Unterscheidung in der Tabelle unten ist jetzt glasklar.
* *Scout:* **"Raw auction feed (Unfiltered)"** -> Das ist genial. Du sagst: "Viel Spaß beim Wühlen im Müll."
* *Trader:* **"Curated auction list (Spam-free)"** -> Das ist das Killer-Argument für die $9.
* **Tycoon:** "API Access (Coming Soon)" ist ein guter Platzhalter, um Professionalität zu zeigen.
---
### 2. Landing Page
**Das Starke:**
* Die Headline *"The market never sleeps. You should."* ist Weltklasse.
* Der Ticker mit den Live-Preisen erzeugt sofort FOMO (Fear Of Missing Out).
* Die Sektion "TLD Intelligence" mit den "Sign in to view"-Overlays bei den Daten ist ein **exzellenter Conversion-Treiber**. Der User sieht, dass da Daten *sind*, aber er muss sich anmelden (kostenlos), um sie zu sehen. Das ist der perfekte "Account-Erstellungs-Köder".
### Letzter Check: Navigation & User Flow
**Kritikpunkt / To-Do:**
* **Der "Search"-Fokus:** Du schreibst *"Try dream.com..."*, aber visuell muss dort ein **riesiges Input-Feld** sein. Das muss das dominante Element sein.
* **Der Ticker:** Achte darauf, dass der Ticker technisch sauber läuft (marquee/scrolling). Im Text oben wiederholt sich die Liste statisch auf der echten Seite muss das fließen.
Die Navigation `Auctions | TLD Intel | Pricing` funktioniert gut.
---
**Ein Gedanke zum "Sign In":**
Wenn ich auf der Auctions-Seite auf "Sign In to unlock" klicke, leite mich nach dem Login **bitte unbedingt direkt wieder zurück zur Auctions-Seite** (nicht ins Dashboard). Nichts ist nerviger, als eine Domain zu sehen, sich anzumelden und dann auf einer leeren Startseite zu landen und die Domain suchen zu müssen.
### 3. Market / Auctions Page (WICHTIG!)
Hier sehe ich das **größte Risiko**.
Dein Konzept ("Unlock Smart Opportunities") ist super. Aber die **Beispiel-Daten**, die du auf der Public-Seite zeigst, sind gefährlich.
**Zusammenfassung:**
Du hast jetzt:
1. Einen **Lead-Magneten** (TLD Data).
2. Einen **Qualitäts-Beweis** (Clean Auctions).
3. Einen **No-Brainer Preis** ($9 für Spam-Filter & Alerts).
**Das Problem:**
In deiner Liste stehen Dinge wie:
* `fgagtqjisqxyoyjrjfizxshtw.xyz`
* `52gao1588.cc`
* `professional-packing-services...website`
Wenn ein neuer User das sieht, denkt er: **"Das ist eine Spam-Seite voll mit Schrott."** Er wird sich nicht anmelden.
**Die Lösung (Der "Vanity-Filter"):**
Du musst für die **öffentliche Seite (ausgeloggt)** einen harten Filter in den Code bauen. Zeige ausgeloggten Usern **NUR** Domains an, die schön aussehen.
* Regel 1: Keine Zahlen (außer bei kurzen Domains).
* Regel 2: Keine Bindestriche (Hyphens).
* Regel 3: Länge < 12 Zeichen.
* Regel 4: Nur .com, .io, .ai, .co, .de, .ch (Keine .cc, .website Spam-Cluster).
**Warum?**
Der User soll denken: "Wow, hier gibt es Premium-Domains wie `nexus.dev`". Er darf den Müll nicht sehen, bevor er eingeloggt ist (und selbst dann solltest du den Müll filtern, wie wir besprochen haben).
---
### 4. TLD Pricing Page
**Sehr gut gelöst.**
* Die "Moving Now"-Karten oben (.ai +35%) sind der Haken.
* Die Tabelle darunter mit "Sign in" zu sperren (Blur-Effekt oder Schloss-Icon), ist genau richtig.
* Der User bekommt genug Info ("Aha, .com ist beliebt"), aber für die Details ("Ist der Trend steigend?") muss er 'Scout' werden.
---
### 5. Pricing Page
Die neue Struktur mit **Scout (Free) / Trader ($9) / Tycoon ($29)** ist viel besser als das alte $19-Modell.
**Optimierung der Tabelle:**
Du musst den Unterschied zwischen **Scout** und **Trader** noch schärfer machen, damit die Leute die $9 bezahlen.
| Feature | Scout (Free) | Trader ($9) | Warum Upgrade? |
| :--- | :--- | :--- | :--- |
| **Auctions** | Raw Feed (Ungefiltert) | **Smart Clean Feed** | *"Ich will den Spam nicht sehen."* |
| **Data** | Nur Preise | **Valuation & Deal Score** | *"Ich will wissen, ob es ein Schnäppchen ist."* |
| **Updates** | Täglich | **Stündlich** | *"Ich will schneller sein als andere."* |
**Wichtig:** Füge in der "Trader"-Spalte explizit **"Spam Filters"** oder **"Curated List"** hinzu. Das ist Zeitersparnis, und dafür zahlen Leute.
---
### Zusammenfassung & Tone of Voice
Der Tone of Voice ist jetzt konsistent: **Analytisch, Knapp, Strategisch.**
* *Alt:* "Jage Domains." (Bisschen spielerisch)
* *Neu:* "Don't guess. Know." (Professionell, B2B-tauglich)
**Letzter Check vor dem Launch:**
1. **Mobile View:** Prüfe die riesige Tabelle auf dem Handy. Wahrscheinlich musst du auf Mobile Spalten ausblenden (z.B. nur Domain + Preis + Button zeigen).
2. **Der Filter:** Bitte, bitte filtere die `fgagtqjis...xyz` Domains auf der Startseite raus. Das ist der wichtigste Punkt für den ersten Eindruck.
Das sieht nach einem Produkt aus, für das ich meine Kreditkarte zücken würde. Gute Arbeit!
Das Konzept steht. **Ready to build.** 🚀