Skip to content

feat: add /pro landing + fix OG image pre-warm URL#109

Open
techgangboss wants to merge 13 commits intomainfrom
fix/og-image-prewarm
Open

feat: add /pro landing + fix OG image pre-warm URL#109
techgangboss wants to merge 13 commits intomainfrom
fix/og-image-prewarm

Conversation

@techgangboss
Copy link
Copy Markdown
Contributor

@techgangboss techgangboss commented Apr 8, 2026

Summary

Two changes bundled for review together.

1. New /pro landing page

Port of sb-industries/fast-trade-proof (written separately from the main app in Vite + Lovable) into fastprotocolapp as a Next.js route at fastprotocol.io/pro. Focused marketing page showing execution quality, block-position advantage, and mev returned vs Uniswap/aggregators.

New files

  • src/app/pro/{layout,page}.tsx — dedicated route with Sora loaded via next/font/google
  • src/components/pro/* — 8 landing sections (Hero, LiveMetrics, Comparison, BlockPosition, WhyItWorks, Earnings, Speed, FinalCTA)
  • public/pro/{logo-secondary,block-position-diagram}.png
  • tailwind.config.ts — added font-sora, animate-pulse-glow, animate-value-flash

Audit adjustments vs upstream

  • Vite SPA → Next App Router (dropped react-router-dom, next/link for CTAs routing to /)
  • text-positivetext-success (matches fastprotocolapp color tokens)
  • MEVmev per brand style guide across hero, tooltip, metric labels, OG
  • <img>next/image for logo + block-position diagram
  • Removed fake Etherscan tx links (placeholder 0x1a2b… hashes that would 404)
  • Added /pro OG + canonical metadata

⚠️ Flag for Jason: Comparison.tsx uses hardcoded sample trade data ($10,041.87, +0.42%, etc.) presented alongside "Verified against live swaps vs Uniswap and aggregators." Before public launch we should either (a) wire to the indexer for real recent trades or (b) soften the copy to "illustrative example." Keeping hardcoded for now so the page is reviewable — happy to follow up with either direction.

2. OG image pre-warm fix (original PR)

  • Fixed pre-warm fetch URL from /og/preconfirm/:time (doesn't exist) to /s/:time/opengraph-image (the actual Next.js opengraph-image route)
  • Removed dead share/preconfirm/route.ts that referenced nonexistent /og-preconfirm.png

Test plan

  • Deploy preview, visit /pro — verify Hero, live metrics, comparison cards, block-position diagram, speed table, final CTA all render
  • /pro mobile — horizontal scroll snap on comparison cards, responsive hero
  • CTAs on /pro route to / (main swap)
  • OG: share fastprotocol.io/pro on X — confirm card title "You keep the mev"
  • OG: share fastprotocol.io/s/2.3 — confirm the branded preview image shows immediately (the original fix)
  • Visit /s/2.3/opengraph-image directly — confirm image renders

🤖 Generated with Claude Code

The pre-warm fetch in SwapToast was hitting /og/preconfirm/:time which
doesn't exist, so the OG image was never cached before X's crawler
requested it. Fixed to hit /s/:time/opengraph-image (the actual route).

Removed share/preconfirm/route.ts which referenced a nonexistent
/og-preconfirm.png static file — dead code from before the migration
to Next.js opengraph-image convention.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fastprotocolapp Ready Ready Preview, Comment Apr 13, 2026 7:29pm

Request Review

Port fast-trade-proof landing (sb-industries/fast-trade-proof) into
fastprotocolapp as /pro — a focused marketing page showing execution
quality, block-position advantage, and mev returned vs Uniswap/aggregators.

Changes:
- New route: src/app/pro with its own layout loading Sora via next/font
- 8 landing components under src/components/pro (Hero, LiveMetrics,
  Comparison, BlockPosition, WhyItWorks, Earnings, Speed, FinalCTA)
- Assets: public/pro/logo-secondary.png, block-position-diagram.png
- tailwind.config: add font-sora family + pulse-glow, value-flash
  animations used by the landing

Audit adjustments vs upstream:
- Vite SPA → Next.js App Router (remove react-router, use next/link)
- text-positive → text-success (matches fastprotocolapp color tokens)
- MEV → mev per brand style guide (hero, tooltip, metric labels, OG)
- CTAs linked to / (main swap) via next/link
- next/image for logo + block-position diagram
- Removed fake Etherscan tx links (0x1a2b… placeholder hashes)

Note for review: the Comparison table uses illustrative hardcoded trade
data. Recommend replacing with indexer-backed live comparisons, or
softening "Verified against live swaps" copy before public launch.

Piggybacking on the OG pre-warm PR so both can be reviewed together.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@techgangboss techgangboss changed the title fix: correct OG image pre-warm URL feat: add /pro landing + fix OG image pre-warm URL Apr 12, 2026
- Hero: correct logo intrinsic dimensions (922x500) to prevent CLS
- Hero/FinalCTA: wrap → arrows in aria-hidden spans
- Comparison: key={trade.label} instead of index for stable identity
- Comparison: wrap clipboard.writeText in try/catch
- Comparison: td flex → inner div wrapper (valid HTML)
- Comparison: add aria-label + type=button on share/copy buttons
- Comparison/BlockPosition: disconnect IntersectionObserver on first
  trigger instead of keeping it alive; drop animated from deps
- Speed: motion-safe: prefix on pulse-glow for reduced-motion users

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero headline: "You keep the mev" → "Earn mev rewards" — more accurate,
defensible, and still confident. Reviewed by proCMO + primevCEO agents;
both agreed the original overclaims.

SEO changes:
- Title: keyword-targeted "Best Execution Ethereum Swaps — Preconfirmed
  in Under 500ms | Fast Protocol"
- Meta description: comparison-focused with target keywords
- OG/Twitter: updated to match, removed overclaim copy
- Added /pro to sitemap.ts with priority 0.9
- Added WebPage structured data (schema.org JSON-LD)
- H2s updated with keyword-rich variants:
  - "See the difference" → "Execution quality: Fast Protocol vs Uniswap"
  - "Why execution position matters" → "Why block position determines
    swap price"
  - "Your swaps recover lost value" → "mev rewards calculator"
  - "Milliseconds vs seconds" → "Sub-second confirmation vs standard DEX"
- LiveMetrics: removed fake "Updated ~X min ago" timer and client-side
  state; now a server component labeled "Based on recent performance"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New ProHeader: sticky header matching main site's gate view — Fast
  Protocol logo upper-left, "Launch App" button upper-right
- Uses same logo assets as main site (/assets/fast-icon.png mobile,
  /assets/fast-protocol-logo-icon.png desktop)
- Hero: removed large center logo (now in header), reduced vertical
  padding so headline + CTAs fit above the fold
- Hero is now a server component (no more "use client" / Image import)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The favicon (src/app/icon.png) was 922x500 — the full logo with text,
which browsers squish into a square. Replaced with the 400x400
fast-icon.png (bolt icon only) for a clean square favicon.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
techgangboss and others added 2 commits April 12, 2026 13:01
…ord, or email)

Was: wallet + X + Discord + email all required (too much friction)
Now: wallet required + at least one of X/Discord/email
Lower barrier to entry for outreach conversions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Was: "Just minted my Fast Genesis SBT" / "switch to Fast RPC"
Now: "Sub-second swaps on L1" / "mev → Miles" / "early access filling up"
Every share becomes a swap-driving CTA linking to fastprotocol.io

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@techgangboss
Copy link
Copy Markdown
Contributor Author

New commits added:

Simplified signup — early access form now requires wallet + just one contact method (email OR X OR Discord). Was: all 4 required. Lower friction for outreach conversions.

Referral tweet rewrite — share copy now drives swaps instead of SBT minting:

  • "Sub-second swaps on Ethereum L1. No bridge. No L2. mev → Miles."
  • "Confirmed in under a second on Ethereum mainnet. Miles are stacking."

Previously was: "Just minted my Fast Genesis SBT. Switch your send path to Fast RPC."

- Remove .claude/homunculus observation logs (debug artifacts)
- Remove unused logo-secondary.png from public/pro
- Remove tsconfig.tsbuildinfo and add to .gitignore
- Soften copy from "live/verified" to "based on real data" language
- Comparison: replace horizontal carousel with stacked card layout on
  mobile — each metric row shows Fast value prominently with inline
  baseline comparison, full 4-column table on sm+
- Hero: full-width CTA buttons on mobile, responsive gradient blob
- ProHeader: smaller icon and tighter padding on narrow screens
- LiveMetrics: even 3-column grid on mobile instead of flex-wrap
- Speed: reduced cell padding on mobile for breathing room
- WhyItWorks: 3-col grid deferred to md (was sm, too cramped at 480px)
- FinalCTA: remove hard <br>, full-width button on mobile
- BlockPosition: tighter vertical spacing on mobile
- Lint formatting on early-access route and form
Copy link
Copy Markdown
Contributor

@passandscore passandscore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a couple commits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants