- {/* Purchase Price */}
-
- {formatCurrency(domain.purchase_price)}
+ {/* Health Status - NEW */}
+
+ {domain.is_sold ? (
+
—
+ ) : domain.is_dns_verified ? (
+ (() => {
+ const health = healthReports[domain.id]
+ const isLoading = loadingHealth[domain.id]
+ if (isLoading) {
+ return
+ }
+ if (!health) {
+ return (
+
+ )
+ }
+ const config = healthConfig[health.status]
+ return (
+
+ )
+ })()
+ ) : (
+
Verify first
+ )}
{/* Estimated Value */}
@@ -483,7 +755,7 @@ export default function PortfolioPage() {
{/* ROI Badge */}
{roiPositive ? : }
@@ -492,13 +764,67 @@ export default function PortfolioPage() {
{/* Renewal/Expiry */}
-
+
{domain.is_sold ? (
—
) : isRenewingSoon ? (
{daysUntilRenewal}d
+ ) : daysUntilRenewal ? (
+ {daysUntilRenewal}d
) : (
- {formatDate(domain.renewal_date)}
+ —
+ )}
+
+
+ {/* Alerts - Email & SMS - NEW */}
+
+ {domain.is_sold ? (
+ —
+ ) : (
+ <>
+
+
+ >
+ )}
+
+
+ {/* Yield Status - Phase 2 - NEW */}
+
+ {domain.is_sold ? (
+ —
+ ) : !canUseYield ? (
+
+
+
+ ) : domain.is_dns_verified ? (
+
+ ) : (
+ —
)}
@@ -590,6 +916,160 @@ export default function PortfolioPage() {
{/* DNS VERIFICATION MODAL */}
{verifyingDomain &&
setVerifyingDomain(null)} onSuccess={() => { loadData(); setVerifyingDomain(null) }} />}
+ {/* HEALTH DETAIL MODAL - NEW */}
+ {showHealthDetail && (() => {
+ const domain = domains.find(d => d.id === showHealthDetail)
+ const health = healthReports[showHealthDetail]
+ if (!domain || !health) return null
+ const config = healthConfig[health.status]
+
+ return (
+ setShowHealthDetail(null)}>
+
e.stopPropagation()}>
+
+
+
+
+
+
+ {/* Domain & Score */}
+
+
{domain.domain}
+
+ {health.score}
+ {config.label}
+
+
+
+ {/* Health Checks */}
+
+
System Checks
+
+
+
+
+ DNS Resolution
+
+ {health.dns?.has_a || health.dns?.has_ns ? (
+
OK
+ ) : (
+
Failed
+ )}
+
+
+
+
+
+ HTTP Reachable
+
+ {health.http?.is_reachable ? (
+
OK ({health.http.status_code})
+ ) : (
+
Failed
+ )}
+
+
+
+
+
+ SSL Certificate
+
+ {health.ssl?.has_certificate ? (
+
Valid
+ ) : (
+
Missing
+ )}
+
+
+
+
+ {!health.dns?.is_parked && !health.http?.is_parked ? (
+
Not Parked
+ ) : (
+
Parked
+ )}
+
+
+
+ {/* Last Check */}
+
+ Last checked: {formatTimeAgo(health.checked_at)}
+
+
+
+
+
+ )
+ })()}
+
+ {/* YIELD ACTIVATION MODAL - Phase 2 Preview - NEW */}
+ {showYieldModal && (
+ setShowYieldModal(null)}>
+
e.stopPropagation()}>
+
+
+
+ Yield Activation
+
+
+
+
+
+
+
+
+
+
+
Yield Coming Soon
+
+ Turn your parked domains into revenue generators with AI-powered intent routing.
+
+
+
+
+
How it works
+
+
1
+
Point your nameservers to ns.pounce.ch
+
+
+
2
+
We analyze visitor intent and route traffic
+
+
+
3
+
Earn up to 70% of affiliate revenue
+
+
+
+
+
+
+
+
+
+ )}
+
{toast && }
)
diff --git a/frontend/src/app/terminal/radar/page.tsx b/frontend/src/app/terminal/radar/page.tsx
index 60a346e..81fcae4 100644
--- a/frontend/src/app/terminal/radar/page.tsx
+++ b/frontend/src/app/terminal/radar/page.tsx
@@ -306,8 +306,8 @@ export default function RadarPage() {
Domain Radar
-
- Real-time monitoring across {marketStats.totalAuctions.toLocaleString()}+ auctions
+
+ Check domain availability, track your watchlist, and discover live auctions.
diff --git a/frontend/src/app/terminal/settings/page.tsx b/frontend/src/app/terminal/settings/page.tsx
index b193695..00687ed 100644
--- a/frontend/src/app/terminal/settings/page.tsx
+++ b/frontend/src/app/terminal/settings/page.tsx
@@ -314,7 +314,9 @@ export default function SettingsPage() {