From 7578d78568f68cf89d2b3ddd31011f158b447738 Mon Sep 17 00:00:00 2001 From: "yves.gugger" Date: Wed, 10 Dec 2025 14:51:49 +0100 Subject: [PATCH] refactor: Remove emojis + Add Portfolio to Landing Page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EMOJI REMOVAL: - Replaced 🟢🟡🔴 emojis with CSS circles (bg-accent, bg-amber-400, bg-red-400) - Updated TLD Pricing pages (public + command) - Updated Landing Page feature pills - Updated Admin panel feature checklist PORTFOLIO FEATURE: - Added 'Portfolio Health' section to Landing Page under 'Beyond Hunting' - Highlights: SSL Monitor, Expiry Alerts, Valuation, P&L Tracking - Links to /command/portfolio - Uses 'Your Domain Insurance' tagline Portfolio Status: - Public Page: N/A (personal feature, no public page needed) - Command Center: ✅ Fully implemented with Add/Edit/Sell/Valuation - Admin Panel: ✅ Stats visible in Overview - Landing Page: ✅ Now advertised in 'Beyond Hunting' section --- frontend/src/app/admin/page.tsx | 96 +++++----- frontend/src/app/auctions/page.tsx | 178 +++++++++---------- frontend/src/app/command/auctions/page.tsx | 18 +- frontend/src/app/command/pricing/page.tsx | 9 +- frontend/src/app/page.tsx | 195 ++++++++++++--------- frontend/src/app/tld-pricing/page.tsx | 33 ++-- frontend/src/components/Sidebar.tsx | 44 ++--- 7 files changed, 307 insertions(+), 266 deletions(-) diff --git a/frontend/src/app/admin/page.tsx b/frontend/src/app/admin/page.tsx index d5f13c8..0ff6eac 100644 --- a/frontend/src/app/admin/page.tsx +++ b/frontend/src/app/admin/page.tsx @@ -447,11 +447,11 @@ export default function AdminPage() { {item.ok ? : } {item.text} - + ))} - - + +
@@ -473,8 +473,8 @@ export default function AdminPage() { {auctionScraping ? : } {auctionScraping ? 'Scraping...' : 'Scrape Auctions'} -
-
+ + {schedulerStatus && (
@@ -484,24 +484,24 @@ export default function AdminPage() {
{job.name} {job.trigger} -
+
))} - - + + )} )} - {/* Auctions Tab */} - {activeTab === 'auctions' && ( + {/* Auctions Tab */} + {activeTab === 'auctions' && (
{/* Auction Stats */}

Total Auctions

{stats?.auctions.toLocaleString() || 0}

-
+

Platforms

4

@@ -521,33 +521,33 @@ export default function AdminPage() { ? 'Recently' : 'Unknown'}

-
-
+ + {/* Auction Scraping Actions */}

Auction Management

- + +
- {/* Platform Status */}

Platform Status

- {['GoDaddy', 'Sedo', 'NameJet', 'DropCatch'].map((platform) => ( + {['GoDaddy', 'Sedo', 'NameJet', 'DropCatch'].map((platform) => (
@@ -558,11 +558,11 @@ export default function AdminPage() {
Active -
-
- ))} +
+
+ ))} +
- {/* Vanity Filter Info */}
@@ -580,12 +580,12 @@ export default function AdminPage() {

{item.rule}

{item.desc}

+
+ ))}
- ))} - - - - )} + + + )} {/* Alerts Tab */} {activeTab === 'alerts' && ( @@ -627,11 +627,11 @@ export default function AdminPage() {

Unique TLDs

{stats?.tld_data?.unique_tlds?.toLocaleString() || 0}

-
+

Price Records

{stats?.tld_data?.price_records?.toLocaleString() || 0}

-
+

Active Price Alerts

{stats?.price_alerts || 0}

@@ -640,27 +640,27 @@ export default function AdminPage() {

Renewal Traps

~40%

Have >2x renewal

-
+ {/* TLD Scraping Actions */}

TLD Price Management

- + -
-
+ + + {/* New Features from analysis_4.md */}
@@ -672,7 +672,7 @@ export default function AdminPage() { {[ { feature: 'Renewal Trap Detection', status: '✅', desc: 'Warns when renewal >2x registration' }, { feature: '1y/3y Trend Tracking', status: '✅', desc: 'Shows price changes over time' }, - { feature: 'Risk Level Badges', status: '✅', desc: '🟢 Low, 🟡 Medium, 🔴 High' }, + { feature: 'Risk Level Badges', status: '✅', desc: 'Low, Medium, High indicators' }, { feature: 'Category Tabs', status: '✅', desc: 'Tech, Geo, Budget, Premium' }, { feature: 'Sparkline Charts', status: '✅', desc: 'Visual trend indicators' }, { feature: 'Blur for Free Users', status: '✅', desc: 'First 5 rows visible' }, @@ -681,11 +681,11 @@ export default function AdminPage() {
{item.status} {item.feature} -
+

{item.desc}

))} - + {/* Data Sources */} @@ -697,19 +697,19 @@ export default function AdminPage() {
-
+
{registrar} - +
Active -
- - ))} - - - )} + + ))} + + + + )} {activeTab === 'blog' && (
diff --git a/frontend/src/app/auctions/page.tsx b/frontend/src/app/auctions/page.tsx index ff42f74..543e062 100644 --- a/frontend/src/app/auctions/page.tsx +++ b/frontend/src/app/auctions/page.tsx @@ -311,7 +311,7 @@ export default function AuctionsPage() { target="_blank" rel="noopener noreferrer" className="p-4 sm:p-5 bg-background-secondary/50 border border-border rounded-xl hover:border-border-hover hover:bg-background-secondary transition-all duration-300 text-left group" - > + >
{auction.domain} @@ -410,51 +410,51 @@ export default function AuctionsPage() { )}>{tab.count} ))} -
+
{/* Auctions Table */} -
-
- - - -
-
+
- {/* Stats */} {!loading && ( diff --git a/frontend/src/app/command/auctions/page.tsx b/frontend/src/app/command/auctions/page.tsx index acb4905..d154d66 100644 --- a/frontend/src/app/command/auctions/page.tsx +++ b/frontend/src/app/command/auctions/page.tsx @@ -658,15 +658,15 @@ export default function AuctionsPage() { )} {/* Bid Button */} - - Bid - + + Bid + ), }, diff --git a/frontend/src/app/command/pricing/page.tsx b/frontend/src/app/command/pricing/page.tsx index 800d4f0..f0524ae 100755 --- a/frontend/src/app/command/pricing/page.tsx +++ b/frontend/src/app/command/pricing/page.tsx @@ -201,9 +201,12 @@ export default function TLDPricingPage() { level === 'medium' && "bg-amber-500/10 text-amber-400", level === 'low' && "bg-accent/10 text-accent" )}> - {level === 'high' && '🔴'} - {level === 'medium' && '🟡'} - {level === 'low' && '🟢'} + {reason} ) diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 6108322..65bba52 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -31,9 +31,8 @@ import { Filter, Crosshair, Tag, + AlertTriangle, Briefcase, - DollarSign, - Calendar, } from 'lucide-react' import Link from 'next/link' import clsx from 'clsx' @@ -329,7 +328,7 @@ export default function HomePage() {
  • - 🟢🟡🟠🔴 Health status alerts + Real-time health status alerts
  • @@ -404,140 +403,162 @@ export default function HomePage() {

    -
    +
    {/* For Sale Marketplace */} -
    {/* Corner accent */} -
    +
    -
    -
    - +
    +
    +
    -

    Marketplace

    -

    Buy & Sell

    +

    Sell Your Domains

    +

    Marketplace

    -

    - Create "For Sale" pages with one click. - DNS verification proves ownership. +

    + 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

    +

    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 +
        +
      • +
        + +
        + Custom TLD, length, price filters
      • -
      • - +
      • +
        + +
        Email & SMS alerts
      • -
      • - - Real-time matching +
      • +
        + +
        + Real-time auction matching
      Set Up Alerts - +
    +
    - {/* Portfolio Management */} -
    - {/* Corner accent */} -
    - -
    -
    -
    - -
    -
    -

    Portfolio

    -

    Asset Tracking

    + {/* 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 + +
    -

    - Track your domains, costs, and ROI. Never miss a renewal. Your domain business, organized. -

    -
      -
    • - - Purchase & sale tracking -
    • -
    • - - Renewal reminders -
    • -
    • - - P&L & valuations -
    • -
    - - Manage Portfolio - -
    @@ -563,8 +584,18 @@ export default function HomePage() { Don't fall for $0.99 promos. We show renewal costs, price trends, and renewal traps across 886+ TLDs.

    - ⚠️ Trap Detection - 🟢🟡🔴 Risk Levels + + + Trap Detection + + + + + + + + Risk Levels +
    Renewal Trap Detection
    - 🟢🟡🔴 +
    + + + +
    Risk Levels
    @@ -321,21 +325,21 @@ export default function TldPricingPage() {
    -
    -
    +
    +

    Stop overpaying. Know the true costs.

    Unlock renewal traps, 1y/3y trends, and risk analysis for {pagination.total}+ TLDs. -

    -
    +

    - + + > Start Free - +
    )} @@ -587,12 +591,15 @@ export default function TldPricingPage() { tld.risk_level === 'medium' && "bg-amber-500/10 text-amber-400", tld.risk_level === 'low' && "bg-accent/10 text-accent" )}> - {tld.risk_level === 'high' && '🔴'} - {tld.risk_level === 'medium' && '🟡'} - {tld.risk_level === 'low' && '🟢'} + ) : ( - 🟢 + )} diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx index 720cf2c..cb8e9d7 100755 --- a/frontend/src/components/Sidebar.tsx +++ b/frontend/src/components/Sidebar.tsx @@ -206,42 +206,42 @@ export function Sidebar({ collapsed: controlledCollapsed, onCollapsedChange }: S
    {discoverItems.map((item) => ( - setMobileOpen(false)} - className={clsx( + setMobileOpen(false)} + className={clsx( "group relative flex items-center gap-3 px-3 py-3 rounded-xl transition-all duration-300", - isActive(item.href) + isActive(item.href) ? "bg-gradient-to-r from-accent/20 to-accent/5 text-foreground border border-accent/20 shadow-[0_0_20px_-5px_rgba(16,185,129,0.2)]" : "text-foreground-muted hover:text-foreground hover:bg-foreground/5 border border-transparent" - )} - title={collapsed ? item.label : undefined} - > + )} + title={collapsed ? item.label : undefined} + > {isActive(item.href) && (
    )} -
    - + -
    - {!collapsed && ( - - {item.label} - - )} +
    + {!collapsed && ( + + {item.label} + + )} {!isActive(item.href) && (
    )} - - ))} + + ))}