7368b20318
Shift sitewide voice from "AI-scored signal tool" to "Endorphin — a crypto
research desk with a real edge". AI drops to the methods layer; "public +
timestamped calls" becomes the credibility/viral hook.
- layout.tsx: new tagline ("signals that move price before the crowd"),
description rewritten (drops "scored by AI"); Organization JSON-LD is now
Endorphin with Trump Alpha as its brand; SoftwareApplication gains
publisher/author → #org; metadata creator/publisher → Endorphin.
- [locale]/page.tsx: home title "Live Crypto Signal Desk" + new description.
- DashboardClient.tsx: hero subtitle rewritten with viral hook.
- methodology intro: prepend Endorphin "research project not a marketing
funnel" line; keep the "live production logic" credibility line.
- [locale]/layout.tsx footer: "© Trump Alpha — a research project by Endorphin".
- llms.txt + opengraph-image: synced to the same positioning (per CLAUDE.md).
tsc clean, next build passes. Functional names (Macro Vibes/KOL/6 engines)
unchanged to avoid SEO/llms.txt drift. No trading/API/component changes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
172 lines
4.7 KiB
TypeScript
172 lines
4.7 KiB
TypeScript
import { ImageResponse } from 'next/og'
|
|
|
|
export const runtime = 'edge'
|
|
export const alt = 'Trump Alpha — the crypto signals that move price before the crowd, by Endorphin'
|
|
export const size = { width: 1200, height: 630 }
|
|
export const contentType = 'image/png'
|
|
|
|
export default function OGImage() {
|
|
return new ImageResponse(
|
|
(
|
|
<div
|
|
style={{
|
|
width: '100%',
|
|
height: '100%',
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
alignItems: 'flex-start',
|
|
justifyContent: 'flex-end',
|
|
padding: '64px 72px',
|
|
background: '#0a0907',
|
|
position: 'relative',
|
|
overflow: 'hidden',
|
|
fontFamily: 'system-ui, sans-serif',
|
|
}}
|
|
>
|
|
{/* Background grid */}
|
|
<div
|
|
style={{
|
|
position: 'absolute',
|
|
inset: 0,
|
|
backgroundImage:
|
|
'linear-gradient(rgba(245,165,36,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(245,165,36,0.04) 1px, transparent 1px)',
|
|
backgroundSize: '48px 48px',
|
|
}}
|
|
/>
|
|
|
|
{/* Ambient glow */}
|
|
<div
|
|
style={{
|
|
position: 'absolute',
|
|
top: -200,
|
|
left: -200,
|
|
width: 800,
|
|
height: 800,
|
|
borderRadius: '50%',
|
|
background: 'radial-gradient(circle, rgba(245,165,36,0.12) 0%, transparent 70%)',
|
|
}}
|
|
/>
|
|
|
|
{/* Top-right corner badge */}
|
|
<div
|
|
style={{
|
|
position: 'absolute',
|
|
top: 48,
|
|
right: 72,
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
gap: 8,
|
|
padding: '6px 14px',
|
|
borderRadius: 999,
|
|
background: 'rgba(245,165,36,0.12)',
|
|
border: '1px solid rgba(245,165,36,0.3)',
|
|
}}
|
|
>
|
|
<div
|
|
style={{
|
|
width: 8,
|
|
height: 8,
|
|
borderRadius: '50%',
|
|
background: '#22c55e',
|
|
}}
|
|
/>
|
|
<span style={{ fontSize: 14, color: '#f5a524', fontWeight: 700, letterSpacing: '0.06em' }}>
|
|
LIVE
|
|
</span>
|
|
</div>
|
|
|
|
{/* Four signal pills */}
|
|
<div
|
|
style={{
|
|
display: 'flex',
|
|
gap: 12,
|
|
marginBottom: 40,
|
|
flexWrap: 'wrap',
|
|
}}
|
|
>
|
|
{[
|
|
{ label: 'Trump · Truth Social', color: '#f5a524' },
|
|
{ label: 'Macro Vibes', color: '#a78bfa' },
|
|
{ label: 'KOL Signal', color: '#22c55e' },
|
|
{ label: 'Talks vs Trades', color: '#ef4444' },
|
|
].map((p) => (
|
|
<div
|
|
key={p.label}
|
|
style={{
|
|
display: 'flex',
|
|
padding: '7px 16px',
|
|
borderRadius: 6,
|
|
background: 'rgba(255,255,255,0.05)',
|
|
border: `1px solid ${p.color}40`,
|
|
fontSize: 13,
|
|
fontWeight: 600,
|
|
color: p.color,
|
|
letterSpacing: '0.02em',
|
|
}}
|
|
>
|
|
{p.label}
|
|
</div>
|
|
))}
|
|
</div>
|
|
|
|
{/* Main title */}
|
|
<div
|
|
style={{
|
|
fontSize: 72,
|
|
fontWeight: 800,
|
|
lineHeight: 1.05,
|
|
color: '#f5f2ea',
|
|
marginBottom: 24,
|
|
letterSpacing: '-0.03em',
|
|
}}
|
|
>
|
|
Trump Alpha
|
|
</div>
|
|
|
|
{/* Sub */}
|
|
<div
|
|
style={{
|
|
fontSize: 24,
|
|
color: '#8a8578',
|
|
fontWeight: 400,
|
|
lineHeight: 1.5,
|
|
maxWidth: 700,
|
|
marginBottom: 0,
|
|
}}
|
|
>
|
|
The crypto signals that move price before the crowd.
|
|
<br />
|
|
A research desk by Endorphin — public, live, timestamped.
|
|
</div>
|
|
|
|
{/* Bottom right stat strip */}
|
|
<div
|
|
style={{
|
|
position: 'absolute',
|
|
bottom: 52,
|
|
right: 72,
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
alignItems: 'flex-end',
|
|
gap: 6,
|
|
}}
|
|
>
|
|
{[
|
|
{ v: '<3s', l: 'post → position' },
|
|
{ v: '19', l: 'KOL feeds' },
|
|
{ v: '$0', l: 'platform fee' },
|
|
].map((s) => (
|
|
<div key={s.l} style={{ display: 'flex', gap: 10, alignItems: 'baseline' }}>
|
|
<span style={{ fontSize: 22, fontWeight: 700, color: '#f5a524', fontFamily: 'monospace' }}>
|
|
{s.v}
|
|
</span>
|
|
<span style={{ fontSize: 13, color: '#5c584e' }}>{s.l}</span>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
),
|
|
{ ...size },
|
|
)
|
|
}
|