Files
trumpsignal-frontend/app/[locale]/page.tsx
T
k 4c3c8c6f87 KOL count: 29 → 25 across marketing/SEO copy
Backend KOL_FEEDS trimmed from 29 to 25 (dead feeds removed).
Sync all hardcoded count mentions:
- layout.tsx JSON-LD, page.tsx (metric + comparison + copy)
- kol/page.tsx, KolPageClient.tsx ("and 26 more" → "and 22 more")
- glossary/page.tsx, opengraph-image.tsx
- public/llms.txt, llms-full.txt
- drop removed KOLs (Dragonfly Capital, Nic Carter) from named lists

Bundles other in-flight frontend work already in the working tree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 22:55:27 +08:00

60 lines
1.8 KiB
TypeScript

import { getPosts } from '@/lib/api'
import type { Metadata } from 'next'
import DashboardClient from './DashboardClient'
export const revalidate = 30
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://trumpsignal.com'
interface OverviewPageProps {
params: Promise<{ locale: string }>
}
export async function generateMetadata({ params }: OverviewPageProps): Promise<Metadata> {
const { locale } = await params
const isZh = false // i18n shelved — Chinese branches kept as dead code for future revival; see messages/zh.json
const title = isZh
? 'Trump Alpha — 实时加密信号研究台'
: 'Trump Alpha — Live Crypto Signal Desk'
const description = isZh
? 'Endorphin 研究台追踪四个先于市场共识的信号:Trump 帖子、BTC 宏观底部、资金费率极值,以及 KOL 言行偏离。每个信号公开且带时间戳。'
: 'Endorphin tracks six signals that move crypto before the crowd: Trump posts, BTC macro bottoms, funding-rate extremes, KOL long-form calls, talks-vs-trades divergence, and the Breakout Monitor. Public and timestamped.'
const path = `${siteUrl}/${locale}`
return {
title,
description,
alternates: {
canonical: path,
languages: {
en: `${siteUrl}/en`,
'x-default': `${siteUrl}/en`,
},
},
openGraph: {
title,
description,
url: path,
locale: isZh ? 'zh_CN' : 'en_US',
alternateLocale: isZh ? ['en_US'] : ['zh_CN'],
},
twitter: {
title,
description,
},
}
}
export default async function OverviewPage() {
// The overview only renders a small curated slice on first paint; pulling
// 500 posts here bloats the server payload without improving the initial UI.
const posts = await getPosts(80, 1).catch(() => [])
return (
<DashboardClient
initialPosts={posts}
/>
)
}